{"version":3,"file":"static/js/main.9d865e89.js","mappings":"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CAA,EAAAA,UAAAA,EAAAA,WAEA,6BACAA,EAAAA,OAAAA,EAAAA,QAEA,WACAA,EAAAA,OAAAA,EAAAA,OAEA,CC/DA,IAMAQ,GAAAA,WAuDA,wBACA,4BACA,wBACA,yBACA,qBACA,qBACA,cACA,cACA,eACA,kBACA,8BACA,4CA+BA,YACA,4BACA,kCAKA,YAEA,OADA,8BACA,IACA,wBAKA,YAMA,OALA,iBACA,eACAD,GAAAA,KAAAA,SAAAA,CAAAE,KAAAA,IAEA,6BACA,IACA,wBAKA,WACA,iBACA,kCAKA,WACA,2BACA,kCAKA,YAEA,OADA,uBACA,IACA,wBAKA,YAMA,OALA,oBACA,YACAC,GAEA,6BACA,IACA,uBAKA,cAGA,OAFA,+CACA,6BACA,IACA,0BAKA,YAMA,OALA,qBACA,aACAC,GAEA,6BACA,IACA,yBAKA,cAGA,OAFA,iDACA,6BACA,IACA,+BAKA,YAGA,OAFA,oBACA,6BACA,IACA,yBAKA,SAEAC,GAIA,OAFA,cACA,6BACA,IACA,mCAKA,YAGA,OAFA,wBACA,6BACA,IACA,2BAKA,cASA,OARA,gBAEA,kBAEA,oBAGA,6BACA,IACA,wBAKA,YAGA,OAFA,aACA,6BACA,IACA,wBAKA,WACA,iBACA,+BAKA,WAGA,qBACA,uBACA,2BAKA,YAOA,OANA,EAGA,uBAFA,cAIA,6BACA,IACA,2BAKA,WACA,oBACA,uBAKA,YACA,MACA,YAGA,0BACA,cACA,4BACA,CAsCA,OApCA,gBACA,yCACA,4CACA,qDACA,uCACA,oBAEA,WACA,sBAEA,iBACA,kCAEA,oBACA,yCAEA,QAGA,wCACA,2CACA,oDACA,SACA,mBAEA,UACA,qBAEA,gBACA,iCAEA,mBACA,wCAIA,IACA,sBAKA,WAcA,OAbA,qBACA,cACA,eACA,cACA,kBACA,mBACA,6BACA,yBACA,4BACA,kBACA,qBACA,6BACA,qBACA,IACA,8BAKA,cACA,4BAtWA,IAyWA,QACA,YAGA,UACAxwG,WAAAA,EAAAA,GAAAA,OACAywG,GAKA,OAHA,iEACA,6BAEA,IACA,kCAKA,WACA,oDACA,iCAKA,WAG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B,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,cAAe8G,EAAEktK,GACpC,IAAe,CAAEh0K,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE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K,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,qBAEHJ,GAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,MAAO,GAkCT,IAKIyE,GAAiC,qBAARj1H,IAE7B,SAASk1H,GAAWnO,EAAalpL,EAAgBw/J,GAChD,IAAIztK,EAAI,EAAG2wC,EAAMwmJ,EAAIj3L,OACrB,GAAGutK,GACF,GAAG43B,GAAkB53B,EAAI3oE,IAAI72F,GAAO1W,OAAOoH,UAAU0P,eAAevN,KAAK2sK,EAAKx/J,GAE7E,IADA,IAAIs3L,EAASF,GAAkB53B,EAAI1rH,IAAI9zC,GAAOw/J,EAAIx/J,GAC5CjO,EAAIulM,EAAOrlM,SAAUF,EAC1B,GAAGm3L,EAAIoO,EAAOvlM,IAAIiS,IAAMhE,EAAqB,OAAdkpL,EAAIE,QAAiBkO,EAAOvlM,QAGvD,KAAMA,EAAI2wC,IAAO3wC,EACvB,GAAGm3L,EAAIn3L,GAAGiS,IAAMhE,EAAqB,OAAdkpL,EAAIE,QAAiBr3L,EAY7C,OAVAm3L,EAAIxmJ,GAAQ,CAAC1+B,EAAEhE,GAAekpL,EAAIE,QAAUF,EAAII,SAC7C9pB,IACC43B,IACE53B,EAAI3oE,IAAI72F,IAAMw/J,EAAItiI,IAAIl9B,EAAK,IAC/Bw/J,EAAI1rH,IAAI9zC,GAAKxN,KAAKkwC,KAEdp5C,OAAOoH,UAAU0P,eAAevN,KAAK2sK,EAAKx/J,KAAMw/J,EAAIx/J,GAAO,IAC/Dw/J,EAAIx/J,GAAKxN,KAAKkwC,KAGTA,CACP,CAED,SAAS60J,GAAU70L,EAAcghF,GAChC,IAAIr4D,EAAK,CAAC/c,IAAI5L,EAAE,EAAE0L,IAAI1L,EAAE,GAEpBi7K,GAAO,EASX,OARGj6F,EAAI8mG,MAAKA,GAAM9mG,EAAI8mG,KACN,MAAb9mG,EAAIn9D,MAAe8E,EAAEw/J,YAAc,EACnB,MAAXnnG,EAAI0/F,IAAazF,EAAM2F,GAAQ5/F,EAAI0/F,KACxB,MAAX1/F,EAAIi6F,MAAaA,EAAMj6F,EAAIi6F,KAChCA,GAAO,GAAKtyJ,EAAE9E,MAAQmkK,GAAW/M,GAAMtyJ,EAAEw/J,YAAc,GACrC,MAAbnnG,EAAIn9D,QAAe8E,EAAE9E,MAAQm9D,EAAIn9D,OACtCm9D,EAAI6+F,SAAQl3J,EAAEk3J,QAAS,GACV,MAAb7+F,EAAI08C,QAAiB/0G,EAAEmsK,aAAensK,EAAE+0G,MAAQ18C,EAAI08C,OAChD/0G,CACP,CAED,SAASosK,GAAgBC,EAAqBrvL,GAC7C,GAAIqvL,EAAJ,CACA,IAAIC,EAAO,CAAC,GAAK,GAAK,IAAM,IAAM,GAAK,IAC5B,QAARtvL,IAAgBsvL,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAK,KACvB,MAAlBD,EAAQliG,OAAgBkiG,EAAQliG,KAASmiG,EAAK,IAC5B,MAAlBD,EAAQ96E,QAAgB86E,EAAQ96E,MAAS+6E,EAAK,IAC5B,MAAlBD,EAAQhiG,MAAgBgiG,EAAQhiG,IAASiiG,EAAK,IAC5B,MAAlBD,EAAQ76E,SAAgB66E,EAAQ76E,OAAS86E,EAAK,IAC5B,MAAlBD,EAAQ1qH,SAAgB0qH,EAAQ1qH,OAAS2qH,EAAK,IAC5B,MAAlBD,EAAQE,SAAgBF,EAAQE,OAASD,EAAK,GAR9B,CASnB,CAED,SAASE,GAAet2E,EAAuBwsD,EAAe1uK,GAC7D,IAAI6a,EAAI7a,EAAKy4L,OAAiB,MAAV/pB,EAAK7zJ,EAAY6zJ,EAAK7zJ,EAAI,WAC1CnoB,EAAI,GAAM2wC,EAAM6+E,EAAOtvH,OAC3B,GAAQ,MAALioB,GAAa7a,EAAK04L,IACpB,KAAMhmM,EAAI,MAASA,EAAG,GAAkB,MAAfsN,EAAK04L,IAAIhmM,GAAY,CAC7C2jK,GAASqY,EAAK7zJ,EAAGnoB,GAEjBsN,EAAK04L,IAAIhmM,GAAKg8K,EAAK7zJ,EACnB7a,EAAKy4L,OAAO/pB,EAAK7zJ,GAAKA,EAAInoB,EAC1B,KACA,CAEF,IAAIA,EAAI,EAAGA,GAAK2wC,IAAO3wC,EAAG,GAAGwvH,EAAOxvH,GAAGs9K,WAAan1J,EAAG,OAAOnoB,EAS9D,OARAwvH,EAAO7+E,GAAO,CACb2sI,SAASn1J,EACT0zK,OAAO,EACPC,OAAO,EACPC,SAAS,EACTb,KAAK,EACL+K,kBAAkB,GAEZt1J,CACP,CAyCD,SAASu1J,GAAS/8I,EAAkBo6I,EAAkBvjM,GACrD,GAAGmpD,GAAMA,EAAG,QAAS,CACpB,IAAIy4C,EAAQu7E,GAAkBh0H,EAAG,SACjC,GAAGy4C,EAAMx5F,EAAEvH,EAAI+gG,EAAM1/E,EAAErhB,GAAK+gG,EAAMx5F,EAAE8+D,EAAI06B,EAAM1/E,EAAEglD,EAAG,MAAM,IAAI9jE,MAAM,cAAgBpD,EAAI,MAAQmpD,EAAG,QAClG,CACD,CAsID,IAAIg9I,GAAqB,CAAC,UAAW,YAAa,oBAAqB,uBACnEC,GAAoB,CACvB,gBAAiB,aAAc,cAC/B,gBAAiB,aAAc,mBAC/B,gBAAiB,aACjB,OAAQ,aAAc,eAwHvB,SAASC,GAAkBrqB,EAAepqG,EAAKzoB,EAAI77C,GAElD,GADG0uK,EAAKn7K,GAAGsoD,EAAG,aAAa1oD,KAAK,CAACmxE,EAAKoqG,EAAKn7K,SAC7B9D,IAAXi/K,EAAK/yK,GAAqC,kBAAX+yK,EAAK/yJ,GAA6B,MAAX+yJ,EAAK/pK,IAAc+pK,EAAK/yJ,EAAG,MAAO,GAC3F,IAAIq6I,EAAK,GACLgjC,EAAOtqB,EAAK/pK,EAAGs0L,EAAOvqB,EAAK/yK,EAC/B,GAAc,MAAX+yK,EAAK/pK,EAAW,OAAO+pK,EAAK/pK,GAC9B,IAAK,IAAKqxJ,EAAK0Y,EAAK/yK,EAAI,IAAM,IAAK,MACnC,IAAK,IAAKq6J,EAAK,GAAG0Y,EAAK/yK,EAAG,MAC1B,IAAK,IAAKq6J,EAAKka,GAAKxB,EAAK/yK,GAAI,MAC7B,IAAK,IACDqE,GAAQA,EAAKmxK,UAAWnb,EAAKzwH,GAAUmpI,EAAK/yK,GAAI,GAAGE,gBAErD6yK,EAAOxF,GAAIwF,IACN/pK,EAAI,IACTqxJ,EAAK,IAAI0Y,EAAK/yK,EAAI0sK,GAAQ9iI,GAAUmpI,EAAK/yK,MAErB,qBAAX+yK,EAAK7zJ,IAAmB6zJ,EAAK7zJ,EAAIw1I,GAAU,KACrD,MACD,QAAS2F,EAAK0Y,EAAK/yK,EAEpB,IAAIA,EAAIqvK,GAAS,IAAKd,GAAUlU,IAAMr7H,EAAK,CAACi/B,EAAE0K,GAE1CgzH,EAAKkB,GAAex4L,EAAK8rL,QAASpd,EAAM1uK,GAE5C,OADU,IAAPs3L,IAAU38J,EAAE/lB,EAAI0iL,GACZ5oB,EAAK/pK,GACX,IAAK,IAIL,IAAK,IAAK,MAHV,IAAK,IAAKg2B,EAAEh2B,EAAI,IAAK,MACrB,IAAK,IAAKg2B,EAAEh2B,EAAI,IAAK,MACrB,IAAK,IAAKg2B,EAAEh2B,EAAI,IAAK,MAErB,QAAS,GAAa,MAAV+pK,EAAK/yK,EAAW,QAAS+yK,EAAK/pK,EAAG,KAAQ,CACpD,GAAG+pK,EAAK/yK,EAAE/I,OAAS,MAAO,MAAM,IAAIkD,MAAM,gDAC1C,GAAGkK,GAAQA,EAAK8pL,QAAS,CACxBnuL,EAAIqvK,GAAS,IAAK,GAAGgtB,GAAWh4L,EAAKk5L,QAASxqB,EAAK/yK,EAAGqE,EAAKm5L,aAC3Dx+J,EAAEh2B,EAAI,IAAK,KACX,CACDg2B,EAAEh2B,EAAI,MAGR,GADG+pK,EAAK/pK,GAAKq0L,IAAQtqB,EAAK/pK,EAAIq0L,EAAMtqB,EAAK/yK,EAAIs9L,GACzB,iBAAVvqB,EAAK/yJ,GAAiB+yJ,EAAK/yJ,EAAG,CACvC,IAAIq7E,EAAK03E,EAAKhiK,GAAKgiK,EAAKhiK,EAAErU,MAAM,EAAGisE,EAAI1xE,SAAW0xE,EAAM,CAAC3/D,EAAE,QAAS2/D,IAAIoqG,EAAKhiK,GAAK,KAClF/Q,EAAIuvK,GAAU,IAAKhB,GAAUwE,EAAK/yJ,GAAIq7E,IAAiB,MAAV03E,EAAK/yK,EAAYA,EAAI,GAClE,CAGD,OAFG+yK,EAAK/7K,GAAGkpD,EAAG,UAAU1oD,KAAK,CAACmxE,EAAKoqG,EAAK/7K,IACrC+7K,EAAK/5I,IAAGgG,EAAEw0J,GAAK,GACXjkB,GAAU,IAAKvvK,EAAGg/B,EACzB,CAyOD,SAASy+J,GAAa3mC,EAAgBzyJ,EAAMilF,EAAiBoyF,GAC5D,IAI4B4P,EAJxBtsJ,EAAI,CAACkvI,GAAYqB,GAAU,YAAa,KAAM,CACjD,MAASG,GAAW,GACpB,UAAWD,MAERx2J,EAAIqwE,EAAGqrF,WAAW7d,GAAgB4mC,EAAQ,GAC1Cx9I,EAAKopC,EAAGsrF,OAAO37J,GACV,MAANinC,IAAYA,EAAK,CAAC,GACrB,IAAIyoB,EAAMzoB,EAAG,SAAW,KACpBy4C,EAAQu7E,GAAkBvrG,GAC9B,GAAGgwB,EAAMx5F,EAAEvH,EAAI,OAAU+gG,EAAMx5F,EAAE8+D,EAAI,QAAS,CAC7C,GAAG55D,EAAKo4K,IAAK,MAAM,IAAItiL,MAAM,SAAWwuE,EAAM,uCAC9CgwB,EAAMx5F,EAAEvH,EAAI/I,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG,OAChC+gG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG,SAChC+wE,EAAMqrG,GAAar7E,EACnB,CACG+iF,IAAMA,EAAO,CAAC,GAClBx7H,EAAG,aAAe,GAClB,IAAIy9I,EAAW,IA5bhB,SAA8Bz9I,EAAIopC,EAAIwtE,EAAKzyJ,EAAM26B,GAChD,IAAI4+J,GAAS,EACTx3L,EAAQ,CAAC,EAAG/E,EAAU,KAC1B,GAAqB,SAAlBgD,EAAKq1K,UAAuBpwF,EAAGu0G,OAAQ,CACzC,IAAIC,EAAQx0G,EAAGqrF,WAAW7d,GAC1B,IAASxtE,EAAGy0G,WAAUD,EAAQx0G,EAAGy0G,SAASnpB,OAAO9d,GAAKknC,UAAYF,EAAoB,CAAX,MAAM3+L,GAAK,CACtFy+L,GAAS,EACTx3L,EAAM63L,SAAW3yB,GAAUiD,GAAUuvB,GACrC,CAED,GAAG59I,GAAMA,EAAG,YAAa,CACxB,IAAIg+I,EAAe,CAACC,aAAa,EAAGC,aAAa,GAC9Cl+I,EAAG,YAAYm+I,QAAOH,EAAaC,aAAe,GAClDj+I,EAAG,YAAYs6C,OAAM0jG,EAAaE,aAAe,GACpD/8L,GAAWA,GAAS,IAAMkuK,GAAU,YAAa,KAAM2uB,EACvD,EAEGN,GAAWv8L,KACf29B,EAAEA,EAAE/nC,QAAWs4K,GAAU,UAAWluK,EAAS+E,GAC7C,CA2aAk4L,CAAqBp+I,EAAIopC,EAAIwtE,EAAKzyJ,EAAM26B,GAExCA,EAAEA,EAAE/nC,QAAWs4K,GAAU,YAAa,KAAM,CAAC,IAAO5mG,IAEpD3pC,EAAEA,EAAE/nC,QAtTL,SAAiCipD,EAAI77C,EAAMyyJ,EAAKxtE,GAC/C,IAAIi1G,EAAS,CAACC,eAAe,KAG7B,SADMl1G,GAAI,CAAC,GAAGy0G,UAAU,CAAC,GAAGU,OAAO,IAAI,KAAIF,EAAMG,YAAcp1G,EAAGy0G,SAASU,MAAM,GAAGE,IAAM,IAAM,KACzFpvB,GAAU,aAAcA,GAAU,YAAa,KAAMgvB,GAAQ,CAAC,EACrE,CAiTcK,CAAwB1+I,EAAI77C,EAAMyyJ,EAAKxtE,GAGlDjlF,EAAKw6L,cAAa7/J,EAAEA,EAAE/nC,QAAWs4K,GAAU,gBAAiB,KAAM,CACpEuvB,iBAAiBz6L,EAAKw6L,YAAYC,kBAAkB,KACpDC,aAAa16L,EAAKw6L,YAAYE,cAAc,KAC5CC,gBAAgB36L,EAAKw6L,YAAYG,iBAAiB,OAGjC,MAAf9+I,EAAG,UAAoBA,EAAG,SAASjpD,OAAS,IAAG+nC,EAAEA,EAAE/nC,QA7WvD,SAA2BipD,EAAIgjI,GAE9B,IADA,IAAoBx6F,EAAhB1pD,EAAI,CAAC,UACDjoC,EAAI,EAAGA,GAAKmsL,EAAKjsL,SAAUF,GAC7B2xF,EAAMw6F,EAAKnsL,MAChBioC,EAAEA,EAAE/nC,QAAWs4K,GAAU,MAAO,KAAMgtB,GAAUxlM,EAAG2xF,KAGpD,OADA1pD,EAAEA,EAAE/nC,QAAU,UACP+nC,EAAE7+B,KAAK,GACd,CAqWiE8+L,CAAkB/+I,EAAIA,EAAG,WAE1FlhB,EAAEssJ,EAAOtsJ,EAAE/nC,QAAU,eACrBipD,EAAG,UAAY,GACE,MAAdA,EAAG,UACLw9I,EAlFF,SAA2Bx9I,EAAkB77C,EAAMyyJ,EAAgBxtE,GAClE,IAAwG3gB,EAEzEq0F,EAF3Bh+H,EAAsB,GAAIi/B,EAAsB,GAAI06B,EAAQu7E,GAAkBh0H,EAAG,SAAU6yH,EAAK,GAASttG,EAAK,GAAIy9G,EAAyB,GAAI3qJ,EAAE,EAAG7wB,EAAE,EAAG6gL,EAAOroI,EAAG,SACnK60H,EAAQx7K,MAAMkD,QAAQyjD,GACtBztD,EAAU,CAACwrE,EAAEwH,GAA+B4L,GAAU,EAC1D,IAAI3pE,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAGw7K,EAAKx7K,GAAK+rK,GAAW/rK,GAC7D,IAAI6wB,EAAIogE,EAAM1/E,EAAEglD,EAAG1lC,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,EAAG,CAGvC,IAFA0lC,EAAI,GACJwH,EAAK+tG,GAAWj7I,GACZ7wB,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CACvCihE,EAAMu6G,EAAKx7K,GAAK+9D,EAChB,IAAIy5H,EAAQnqB,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAIw4C,EAAGyoB,QAC1B70E,IAAVorM,GAC6D,OAA5DnsB,EAAOqqB,GAAkB8B,EAAOv2H,EAAKzoB,EAAI77C,KAAyB45D,EAAEzmE,KAAKu7K,EAC7E,EACE90G,EAAEhnE,OAAS,GAAMsxL,GAAQA,EAAKhwJ,MAChC9lC,EAAU,CAACwrE,EAAEwH,GACV8iH,GAAQA,EAAKhwJ,MACfykI,EAAMurB,EAAKhwJ,IACJgvJ,SAAQ90L,EAAO80L,OAAS,GAC/Bl2G,GAAU,EACP2rF,EAAI0qB,IAAKr2G,EAASm3G,GAAMxrB,EAAI0qB,KACvB1qB,EAAIyqB,MAAKp2G,EAAS2rF,EAAIyqB,KAC3Bp2G,GAAU,IAAK5+E,EAAOqwE,GAAKuO,EAAQ5+E,EAAO0sM,aAAe,GACzDniC,EAAI53B,QAAS3yI,EAAO+pM,aAAex/B,EAAI53B,QAE3CpmG,EAAEA,EAAE/nC,QAAWs4K,GAAU,MAAOtxG,EAAE99D,KAAK,IAAK1N,GAE7C,CACD,GAAG81L,EAAM,KAAMhwJ,EAAIgwJ,EAAKtxL,SAAUshC,EAC9BgwJ,GAAQA,EAAKhwJ,KACf9lC,EAAU,CAACwrE,EAAE1lC,EAAE,IACfykI,EAAMurB,EAAKhwJ,IACJgvJ,SAAQ90L,EAAO80L,OAAS,GAC/Bl2G,GAAU,EACN2rF,EAAI0qB,IAAKr2G,EAASm3G,GAAMxrB,EAAI0qB,KACvB1qB,EAAIyqB,MAAKp2G,EAAS2rF,EAAIyqB,KAC3Bp2G,GAAU,IAAK5+E,EAAOqwE,GAAKuO,EAAQ5+E,EAAO0sM,aAAe,GACzDniC,EAAI53B,QAAS3yI,EAAO+pM,aAAex/B,EAAI53B,OAC3CpmG,EAAEA,EAAE/nC,QAAWs4K,GAAU,MAAO,GAAI98K,IAGtC,OAAOusC,EAAE7+B,KAAK,GACd,CAwCSi/L,CAAkBl/I,EAAI77C,EAAMyyJ,EAAKxtE,GACtCo0G,EAAMzmM,OAAS,IAAG+nC,EAAEA,EAAE/nC,QAAWymM,IAElC1+J,EAAE/nC,OAAOq0L,EAAK,IAAKtsJ,EAAEA,EAAE/nC,QAAW,eAAiB+nC,EAAEssJ,GAAMtsJ,EAAEssJ,GAAMzrL,QAAQ,KAAK,MAIhFqgD,EAAG,cAAalhB,EAAEA,EAAE/nC,QA1bxB,SAAiC0jM,GAEhC,IAAI37J,EAAK,CAACy1I,MAAM,GAKhB,OAJAyoB,GAAmBlpM,SAAQ,SAASklB,GAAiB,MAATyhL,EAAGzhL,IAAcyhL,EAAGzhL,KAAI8lB,EAAE9lB,GAAK,IAAM,IACjFikL,GAAkBnpM,SAAQ,SAASklB,GAAiB,MAATyhL,EAAGzhL,IAAeyhL,EAAGzhL,KAAI8lB,EAAE9lB,GAAK,IAAM,IAE9EyhL,EAAGtpM,WAAU2tC,EAAE3tC,SAAWu9L,GAAsC+L,EAAGtpM,UAAUsM,SAAS,IAAInL,eACtF+8K,GAAU,kBAAmB,KAAMvwI,EAC1C,CAkbiCqgK,CAAwBn/I,EAAG,cAKpC,MAArBA,EAAG,iBAAwBlhB,EAAEA,EAAE/nC,QAhXnC,SAAiC3G,EAAM4vD,EAAIopC,EAAIwtE,GAC9C,IAAInuF,EAAyB,iBAAZr4E,EAAKq4E,IAAkBr4E,EAAKq4E,IAAMqrG,GAAa1jL,EAAKq4E,KACjE2gB,EAAGy0G,WAAUz0G,EAAGy0G,SAAY,CAACnpB,OAAO,KACpCtrF,EAAGy0G,SAASuB,QAAOh2G,EAAGy0G,SAASuB,MAAQ,IAC3C,IAAIh7I,EAAyBglC,EAAGy0G,SAASuB,MACrC3mG,EAAQo7E,GAAaprG,GACtBgwB,EAAM1/E,EAAEglD,GAAK06B,EAAMx5F,EAAE8+D,IAAK06B,EAAMx5F,EAAE8+D,EAAI81G,GAAa7zH,EAAG,SAAS/gD,EAAE8+D,EAAG0K,EAAMqrG,GAAar7E,IAC1F,IAAI,IAAI5hG,EAAI,EAAGA,EAAIutD,EAAMrtD,SAAUF,EAAG,CACrC,IAAIgB,EAAOusD,EAAMvtD,GACjB,GAAgB,yBAAbgB,EAAKoiM,MACLpiM,EAAKwnM,OAASzoC,EAAjB,CACA/+J,EAAKynM,IAAM,IAAMl2G,EAAGqrF,WAAW7d,GAAO,KAAOnuF,EAAK,KADpB,CAE9B,CAED,OADG5xE,GAAKutD,EAAMrtD,QAAQqtD,EAAM9sD,KAAK,CAAE2iM,KAAM,wBAAyBoF,MAAOzoC,EAAK0oC,IAAK,IAAMl2G,EAAGqrF,WAAW7d,GAAO,KAAOnuF,IAC9G4mG,GAAU,aAAc,KAAM,CAAC5mG,IAAIA,GAC1C,CAiW4C82H,CAAwBv/I,EAAG,eAAgBA,EAAIopC,EAAIwtE,IAM3E,MAAjB52G,EAAG,YAAsBA,EAAG,WAAWjpD,OAAS,IAAG+nC,EAAEA,EAAE/nC,QAlf3D,SAA6ByoM,GAC5B,GAAqB,IAAlBA,EAAOzoM,OAAc,MAAO,GAE/B,IADA,IAAI+nC,EAAI,sBAAwB0gK,EAAOzoM,OAAS,KACxCF,EAAI,EAAGA,GAAK2oM,EAAOzoM,SAAUF,EAAGioC,GAAK,mBAAqBg1I,GAAa0rB,EAAO3oM,IAAM,MAC5F,OAAOioC,EAAI,eACX,CA6eqE2gK,CAAoBz/I,EAAG,aAM5F,IAAeosI,EA5Zc56D,EA4ZzBkuE,GAAQ,EAAQ/jB,GAAO,EAsD3B,OArDU37H,EAAG,UAAqBjpD,OAAS,IAC1C+nC,EAAEA,EAAE/nC,QAAU,eACPipD,EAAG,UAAqBlsD,SAAQ,SAASgD,GAC3CA,EAAE,GAAGilL,SACTqQ,EAAO,CAAC,IAAMt1L,EAAE,IACY,KAAzBA,EAAE,GAAGilL,OAAO55K,OAAO,KACrBw5K,EAAMD,GAASF,GAAO,EAAGnN,GAAUv3K,EAAE,GAAGilL,QAAQp8K,QAAQ,OAAQ,IAAK85K,GAAKG,OAC1EwS,EAAI,QAAU,MAAMzQ,IAEjB+jB,EAAO5oM,EAAE,GAAGilL,OAAOlpL,QAAQ,OAAS,IAAGu5L,EAAI/pL,SAAWgsK,GAAUv3K,EAAE,GAAGilL,OAAOv/K,MAAMkjM,EAAK,KACxF5oM,EAAE,GAAGsqL,UAASgL,EAAI96B,QAAU+c,GAAUv3K,EAAE,GAAGsqL,UAC9CtiJ,EAAEA,EAAE/nC,QAAUs4K,GAAU,YAAY,KAAK+c,GACzC,IACDttJ,EAAEA,EAAE/nC,QAAU,wBAERipD,EAAG,UAIW,MAAlBA,EAAG,cAAqBlhB,EAAEA,EAAE/nC,SA/a/BwlM,GAD6B/qE,EAgbkCxxE,EAAG,aA9a3DqvH,GAAU,cAAe,KAAM79C,KAublCrtH,IAAQA,EAAKw7L,eAA+B,GAAlBx7L,EAAKw7L,WAAuB7gK,EAAEA,EAAE/nC,QAAUo4K,GAAS,gBAAiBE,GAAU,eAAgB,KAAM,CAACuwB,mBAAmB,EAAGC,MAAMp3H,MAI5Jg1H,EAAS1mM,OAAS,IACpB4kL,EAAMD,GAASF,GAAO,EAAG,uBAAyB5kB,EAAI,GAAK,OAAQ6iB,GAAKwB,MACxEn8I,EAAEA,EAAE/nC,QAAUs4K,GAAU,UAAW,KAAM,CAAC,OAAO,MAAQsM,IACzD37H,EAAG,YAAcy9I,GAGfz9I,EAAG,aAAajpD,OAAS,IAC3B4kL,EAAMD,GAASF,GAAO,EAAG,0BAA4B5kB,EAAI,GAAK,OAAQ6iB,GAAKI,KAC3E/6I,EAAEA,EAAE/nC,QAAUs4K,GAAU,gBAAiB,KAAM,CAAC,OAAO,MAAQsM,IAC/D37H,EAAG,WAAa27H,GAWd78I,EAAE/nC,OAAO,IAAK+nC,EAAEA,EAAE/nC,QAAW,eAAiB+nC,EAAE,GAAGA,EAAE,GAAGn/B,QAAQ,KAAK,MACjEm/B,EAAE7+B,KAAK,GACd,CAiED,SAAS6/L,GAAiBpjG,EAAI18C,EAAIy4C,EAAOpgE,GACxC,IAAIyG,EAjDL,SAAyBzG,EAAcogE,EAAOz4C,GAC7C,IAAIlhB,EAAIyhI,GAAQ,KACZzD,GAAO98G,EAAG,UAAU,IAAI3nB,IAAI,CAAC,EACjCyG,EAAEk9H,YAAY,EAAG3jI,GAEjByG,EAAEk9H,YAAY,EAAG,GAEjB,IAAI+jC,EAAQ,IACTjjC,EAAI0qB,IAAKuY,EAAyB,GAAjBzX,GAAMxrB,EAAI0qB,KACtB1qB,EAAIyqB,MAAKwY,EAAkB,GAAVjjC,EAAIyqB,KAC7BzoJ,EAAEk9H,YAAY,EAAG+jC,GAEjBjhK,EAAEk9H,YAAY,EAAG,GAEjB,IAAI56H,EAAQ,EACT07H,EAAI53B,QAAO9jG,GAAS07H,EAAI53B,OACxB43B,EAAIuqB,SAAQjmJ,GAAS,KACrB07H,EAAI0qB,KAAO1qB,EAAIyqB,OAAKnmJ,GAAS,IAChCtC,EAAEk9H,YAAY,EAAG56H,GAEjBtC,EAAEk9H,YAAY,EAAG,GAGjB,IAAIgkC,EAAW,EAAGC,EAAMnhK,EAAEhoC,EAC1BgoC,EAAEhoC,GAAK,EAGP,IADA,IAAIopM,EAAQ,CAACniI,EAAE1lC,EAAG3gC,EAAE,GACZb,EAAI,EAAGA,EAAI,KAAMA,EACxB,KAAI4hG,EAAM1/E,EAAErhB,EAAMb,EAAE,GAAM,IAAS4hG,EAAMx5F,EAAEvH,EAAKb,GAAK,IAArD,CAEA,IADA,IAAIspM,GAAS,EAAGvwF,GAAQ,EAChBh+F,EAAK/a,GAAG,GAAK+a,EAAM/a,EAAE,GAAI,KAAO+a,EACvCsuL,EAAMxoM,EAAIka,GACCvY,MAAMkD,QAAQyjD,IAAOA,EAAGkgJ,EAAMniI,IAAI,IAAImiI,EAAMxoM,GAAKsoD,EAAGmzH,GAAY+sB,OAC7DC,EAAQ,IAAGA,EAAQvuL,GAAGg+F,EAAOh+F,GAEzCuuL,EAAQ,MACTH,EACFlhK,EAAEk9H,YAAY,EAAGmkC,GACjBrhK,EAAEk9H,YAAY,EAAGpsD,GAVkD,CAapE,IAAI94G,EAAIgoC,EAAEhoC,EAKV,OAJAgoC,EAAEhoC,EAAImpM,EACNnhK,EAAEk9H,YAAY,EAAGgkC,GACjBlhK,EAAEhoC,EAAIA,EAECgoC,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,CAC1C,CAEQshK,CAAgB/nK,EAAGogE,EAAOz4C,IAC9BlhB,EAAE/nC,OAAS,KAAQipD,EAAG,UAAU,IAAI3nB,KAAIq6I,GAAah2E,EAAI,EAAwB59D,EACrF,CAGD,IAAIuhK,GAAiB3oB,GACjB4oB,GAAiB3oB,GA2IrB,SAAS4oB,GAAmBnwM,GAG3B,MAAO,CAFIsmL,GAAoBtmL,GACnBwnL,GAAWxnL,GACF,IACrB,CAgID,IAAIowM,GAAqB9oB,GACrB+oB,GAAqB9oB,GAiFzB,IAAI+oB,GAAgB,CAAC,OAAO,QAAQ,MAAM,SAAS,SAAS,UA4X5D,SAASC,GAAkBjkG,EAAiBm2E,EAAex6I,EAAc7wB,EAAcrD,EAAM67C,EAAkB4gJ,GAC9G,QAAchtM,IAAXi/K,EAAK/yK,EAAiB,OAAO,EAChC,IAAIq6J,EAAK,GACT,OAAO0Y,EAAK/pK,GACX,IAAK,IAAKqxJ,EAAK0Y,EAAK/yK,EAAI,IAAM,IAAK,MACnC,IAAK,KACJ+yK,EAAOxF,GAAIwF,IACN7zJ,EAAI6zJ,EAAK7zJ,GAAKw1I,GAAU,IAC7Bqe,EAAK/yK,EAAI0sK,GAAQ9iI,GAAUmpI,EAAK/yK,IAAK+yK,EAAK/pK,EAAI,IAC9C,MAED,IAAK,IAAK,IAAK,IAAKqxJ,EAAK,GAAG0Y,EAAK/yK,EAAG,MACpC,QAASq6J,EAAK0Y,EAAK/yK,EAEpB,IAAIg/B,EAAa,CAACi/B,EAAE1lC,EAAG3gC,EAAE8P,GAKzB,OAHAs3B,EAAE/lB,EAAI4jL,GAAex4L,EAAK8rL,QAASpd,EAAM1uK,GACtC0uK,EAAK/7K,GAAGkpD,EAAG,UAAU1oD,KAAK,CAAC67K,GAAYr0I,GAAI+zI,EAAK/7K,IAChD+7K,EAAKn7K,GAAGsoD,EAAG,aAAa1oD,KAAK,CAAC67K,GAAYr0I,GAAI+zI,EAAKn7K,IAC/Cm7K,EAAK/pK,GACX,IAAK,IAAK,IAAK,MAWd,OAVG3E,EAAK8pL,SACP9zB,EAAKgiC,GAAWh4L,EAAKk5L,QAAUxqB,EAAK/yK,EAAYqE,EAAKm5L,YACrDx+J,EAAEh2B,EAAI,IAAKg2B,EAAEh/B,EAAIq6J,EACdymC,EAAWluB,GAAah2E,EAAI,GA7nBnC,SAA4Bm2E,EAAMguB,EAAO/hK,GAIxC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BoW,GAAoBkqB,EAAO/hK,GAC3BA,EAAEk9H,YAAY,EAAG6kC,EAAM/gM,GAChBg/B,CACP,CAwnB6DgiK,CAAmBjuB,EAAM/zI,IAC9E4zI,GAAah2E,EAAI,EAzoB1B,SAA2Bm2E,EAAMguB,EAAO/hK,GAIvC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1BkW,GAAeoqB,EAAO/hK,GACtBA,EAAEk9H,YAAY,EAAG6kC,EAAM/gM,GAChBg/B,CACP,CAooBmDiiK,CAAkBluB,EAAM/zI,MAExEA,EAAEh2B,EAAI,MACH83L,EAAWluB,GAAah2E,EAAI,GAljBnC,SAA0Bm2E,EAAMguB,EAAO/hK,GAItC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,EAAI,EAAIsS,EAAK/yK,EAAE/I,SACzC4/K,GAAoBkqB,EAAO/hK,GAC3B82I,GAAmB/C,EAAK/yK,EAAGg/B,GACpBA,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,CAC1C,CA6iB2DkiK,CAAiBnuB,EAAM/zI,IAC1E4zI,GAAah2E,EAAI,EA9jB1B,SAAyBm2E,EAAMguB,EAAO/hK,GAIrC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,GAAK,EAAIsS,EAAK/yK,EAAE/I,SAC1C0/K,GAAeoqB,EAAO/hK,GACtB82I,GAAmB/C,EAAK/yK,EAAGg/B,GACpBA,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,CAC1C,CAyjBiDmiK,CAAgBpuB,EAAM/zI,MAE9D,EACR,IAAK,IAQF,OANC+zI,EAAK/yK,IAAe,EAAT+yK,EAAK/yK,IAAU+yK,EAAK/yK,GAAK,KAAQ+yK,EAAK/yK,EAAI,IACpD8gM,EAAWluB,GAAah2E,EAAI,GAxlBnC,SAA0Bm2E,EAAMguB,EAAO/hK,GAItC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BoW,GAAoBkqB,EAAO/hK,GAC3By4I,GAAe1E,EAAK/yK,EAAGg/B,GAChBA,CACP,CAmlB2DoiK,CAAiBruB,EAAM/zI,IAC1E4zI,GAAah2E,EAAI,EApmB1B,SAAyBm2E,EAAMguB,EAAO/hK,GAIrC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1BkW,GAAeoqB,EAAO/hK,GACtBy4I,GAAe1E,EAAK/yK,EAAGg/B,GAChBA,CACP,CA+lBiDqiK,CAAgBtuB,EAAM/zI,IAEjE8hK,EAAWluB,GAAah2E,EAAI,GAnnBnC,SAA4Bm2E,EAAMguB,EAAO/hK,GAIxC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1BoW,GAAoBkqB,EAAO/hK,GAC3B+4I,GAAWhF,EAAK/yK,EAAGg/B,GACZA,CACP,CA8mB6DsiK,CAAmBvuB,EAAM/zI,IAC9E4zI,GAAah2E,EAAI,EA/nB1B,SAA2Bm2E,EAAMguB,EAAO/hK,GAIvC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1BkW,GAAeoqB,EAAO/hK,GACtB+4I,GAAWhF,EAAK/yK,EAAGg/B,GACZA,CACP,CA0nBmDuiK,CAAkBxuB,EAAM/zI,KAChE,EACV,IAAK,IAIJ,OAHAA,EAAEh2B,EAAI,IACH83L,EAAWluB,GAAah2E,EAAI,GAnsBlC,SAA4Bm2E,EAAMguB,EAAO/hK,GAIxC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BoW,GAAoBkqB,EAAO/hK,GAC3BA,EAAEk9H,YAAY,EAAG6W,EAAK/yK,EAAI,EAAI,GACvBg/B,CACP,CA8rB4DwiK,CAAmBzuB,EAAM/zI,IAC9E4zI,GAAah2E,EAAI,EA/sBzB,SAA2Bm2E,EAAMguB,EAAO/hK,GAIvC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BkW,GAAeoqB,EAAO/hK,GACtBA,EAAEk9H,YAAY,EAAG6W,EAAK/yK,EAAI,EAAI,GACvBg/B,CACP,CA0sBkDyiK,CAAkB1uB,EAAM/zI,KACjE,EACR,IAAK,IAIJ,OAHAA,EAAEh2B,EAAI,IACH83L,EAAWluB,GAAah2E,EAAI,GAhrBlC,SAA6Bm2E,EAAMguB,EAAO/hK,GAMzC,OALQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BoW,GAAoBkqB,EAAO/hK,GAC3BA,EAAEk9H,YAAY,EAAG6W,EAAK/yK,GACtBg/B,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACVl9H,CACP,CAyqB6D0iK,CAAoB3uB,EAAM/zI,IAChF4zI,GAAah2E,EAAI,EA5rBzB,SAA4Bm2E,EAAMguB,EAAO/hK,GAIxC,OAHQ,MAALA,IAAWA,EAAIyhI,GAAQ,IAC1BkW,GAAeoqB,EAAO/hK,GACtBA,EAAEk9H,YAAY,EAAG6W,EAAK/yK,GACfg/B,CACP,CAurBmD2iK,CAAmB5uB,EAAM/zI,KACnE,EAIT,OAFG8hK,EAAWluB,GAAah2E,EAAI,GAluBhC,SAA6Bm2E,EAAMguB,EAAO/hK,GAEzC,OADQ,MAALA,IAAWA,EAAIyhI,GAAQ,IACnBoW,GAAoBkqB,EAAO/hK,EAClC,CA+tB2D4iK,CAAoB7uB,EAAM/zI,IAChF4zI,GAAah2E,EAAI,EA3uBvB,SAA4Bm2E,EAAMguB,EAAO/hK,GAExC,OADQ,MAALA,IAAWA,EAAIyhI,GAAQ,IACnBkW,GAAeoqB,EAAO/hK,EAC7B,CAwuBiD6iK,CAAmB9uB,EAAM/zI,KACnE,CACP,CA2BD,SAAS8iK,GAAiBllG,EAAI18C,GA7hB9B,IAAkCwgH,EAAK1hI,EA8hBlCkhB,GAAOA,EAAG,aACd0yH,GAAah2E,EAAI,KA/hBgB8jE,EA+hB0CxgH,EAAG,WAAWjpD,OA9hBjF,MAAL+nC,IAAWA,EAAIyhI,GAAQ,IAC1BzhI,EAAEk9H,YAAY,EAAGwE,GACV1hI,IA6hBPkhB,EAAG,WAAWlsD,SAAQ,SAAS0jC,GAAKk7I,GAAah2E,EAAI,IAA2B+jG,GAAmBjpK,GAAM,IACzGk7I,GAAah2E,EAAI,KACjB,CAED,SAASmlG,GAAenlG,EAAI18C,GACvBA,GAAOA,EAAG,WACd0yH,GAAah2E,EAAI,KACjB18C,EAAG,SAASlsD,SAAQ,SAAS0jC,EAAG3gC,GAAQ2gC,GAAGk7I,GAAah2E,EAAI,GAxe7D,SAA0Bl1F,EAAcghF,EAAK1pD,GACpC,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1B,IAAIpwI,EAAIksK,GAAU70L,EAAGghF,GACrB1pD,EAAEk9H,aAAa,EAAGx0J,GAClBs3B,EAAEk9H,aAAa,EAAGx0J,GAClBs3B,EAAEk9H,YAAY,EAAqB,KAAjB7rI,EAAE9E,OAAS,KAC7ByT,EAAEk9H,YAAY,EAAG,GACjB,IAAI56H,EAAQ,EAKZ,OAJGonD,EAAI6+F,SAAQjmJ,GAAS,GACH,iBAAXjR,EAAE9E,QAAmB+V,GAAS,GACrConD,EAAI08C,QAAO9jG,GAAUonD,EAAI08C,OAAS,GACrCpmG,EAAEk9H,YAAY,EAAG56H,GACVtC,CACP,CA2duFgjK,CAAiBjrM,EAAG2gC,GAAM,IACjHk7I,GAAah2E,EAAI,KACjB,CAED,SAASqlG,GAAgBrlG,EAAI18C,GACxBA,GAAOA,EAAG,UACd0yH,GAAah2E,EAAI,KACjBg2E,GAAah2E,EAAI,IAxblB,SAA+Bj0B,GAC9B,IAAI3pC,EAAIyhI,GAAQ,IAIhB,OAHAzhI,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjB2b,GAAmBlvG,EAAK3pC,GACjBA,CACP,CAkb+CkjK,CAAsBhuB,GAAkBh0H,EAAG,WAC1F0yH,GAAah2E,EAAI,KACjB,CAED,SAASulG,GAAavlG,EAAI18C,EAAkBw7H,GAE3Cx7H,EAAG,UAAUlsD,SAAQ,SAASgD,GAC7B,GAAIA,EAAE,GAAGilL,OAAT,CACA,IAAIJ,EAAMD,GAASF,GAAO,EAAG1kL,EAAE,GAAGilL,OAAOp8K,QAAQ,OAAQ,IAAK85K,GAAKG,OACnElH,GAAah2E,EAAI,IApiBnB,SAAwB5lG,EAAG6kL,GAC1B,IAAI78I,EAAIyhI,GAAQ,GAAG,GAAGzpK,EAAE,GAAGilL,OAAOhlL,QAAUD,EAAE,GAAGsqL,SAAW,IAAIrqL,SAChE4gL,GAAmB,CAAC5+J,EAAE66J,GAAY98K,EAAE,IAAKmI,EAAE20K,GAAY98K,EAAE,KAAMgoC,GAC/Do4I,GAAY,MAAQyE,EAAK78I,GACzB,IAAIojK,EAASprM,EAAE,GAAGilL,OAAOlpL,QAAQ,KAKjC,OAHA+iL,KADqB,GAAXssB,EAAe,GAAKprM,EAAE,GAAGilL,OAAOv/K,MAAM0lM,EAAO,KAC7B,GAAIpjK,GAC9B82I,GAAmB9+K,EAAE,GAAGsqL,SAAW,GAAItiJ,GACvC82I,GAAmB,GAAI92I,GAChBA,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,EACpB,CA0hByCqrM,CAAerrM,EAAG6kL,GAFnC,CAGvB,WACM37H,EAAG,SACV,CAoCD,SAASoiJ,GAAe1lG,EAAI18C,EAAI69I,GAC/BnrB,GAAah2E,EAAI,KAGhBg2E,GAAah2E,EAAI,IAhgBnB,SAA8B18C,EAAI69I,EAAU/+J,GACnC,MAALA,IAAWA,EAAIyhI,GAAQ,KAC1B,IAAIzgJ,EAAI,IAcR,SAbM+9K,GAAU,CAAC,GAAGU,OAAO,IAAI,IAAI,CAAC,GAAGE,MAAK3+K,GAAK,IACjDgf,EAAEk9H,YAAY,EAAGl8I,GACjBgf,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,KACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACVl9H,CACP,CA+e+CujK,CAAqBriJ,EAAI69I,IAKvEnrB,GAAah2E,EAAI,KAGlBg2E,GAAah2E,EAAI,IACjB,CAOD,SAAS4lG,GAAmB5lG,EAAI18C,GAnfhC,IAAkCy6I,EAAI37J,EAofjCkhB,EAAG,aAEP0yH,GAAah2E,EAAI,KAtfgB+9F,EAsf0Cz6I,EAAG,YArftE,MAALlhB,IAAWA,EAAIyhI,GAAQ,KAC1BzhI,EAAEk9H,YAAY,EAAGy+B,EAAGtpM,SAAWu9L,GAAsC+L,EAAGtpM,UAAY,GACpF2tC,EAAEk9H,YAAY,EAAG,GACjB,CACC,CAAC,WAAuB,GACxB,CAAC,aAAuB,GACxB,CAAC,eAAwB,GACzB,CAAC,iBAAwB,GACzB,CAAC,cAAwB,GACzB,CAAC,iBAAwB,GACzB,CAAC,cAAwB,GACzB,CAAC,oBAAwB,GACzB,CAAC,iBAAwB,GACzB,CAAC,cAAwB,GACzB,CAAC,qBAAuB,GACxB,CAAC,QAAwB,GACzB,CAAC,cAAwB,GACzB,CAAC,eAAwB,GACzB,CAAC,uBAAuB,IACvBloK,SAAQ,SAASklB,GAEfA,EAAE,GAAI8lB,EAAEk9H,YAAY,EAAe,MAAZy+B,EAAGzhL,EAAE,KAAgByhL,EAAGzhL,EAAE,IAAU,EAAJ,GAChD8lB,EAAEk9H,YAAY,EAAe,MAAZy+B,EAAGzhL,EAAE,KAAeyhL,EAAGzhL,EAAE,IAAM,EAAI,EAC9D,IACM8lB,GA8dP,CAED,SAASyjK,GAAa3rC,EAAgBzyJ,EAAMilF,EAAiBoyF,GAC5D,IAAI9+E,EAAK01E,KACLr5J,EAAIqwE,EAAGqrF,WAAW7d,GAAM52G,EAAKopC,EAAGsrF,OAAO37J,IAAM,CAAC,EAC9CrhB,EAAeqhB,EAAG,IAASqwE,GAAMA,EAAGy0G,WAAUnmM,EAAI0xF,EAAGy0G,SAASnpB,OAAO9d,GAAKknC,UAAYpmM,EAAgB,CAAX,MAAMuH,GAAK,CAC1G,IAviByBu9L,EAAqB19J,EAuiB1Ci/B,EAAIi2G,GAAkBh0H,EAAG,SAAW,MACxC,GAAG+d,EAAE9+D,EAAEvH,EAAI,OAAUqmE,EAAE9+D,EAAE8+D,EAAI,QAAS,CACrC,GAAG55D,EAAKo4K,IAAK,MAAM,IAAItiL,MAAM,UAAY+lD,EAAG,SAAW,MAAQ,uCAC/D+d,EAAE9+D,EAAEvH,EAAI/I,KAAKykB,IAAI2qD,EAAE9+D,EAAEvH,EAAG,OACxBqmE,EAAE9+D,EAAE8+D,EAAIpvE,KAAKykB,IAAI2qD,EAAE9+D,EAAEvH,EAAG,QACxB,CA4CD,OA3CAsoD,EAAG,UAAY,GAEfA,EAAG,aAAe,GAClB0yH,GAAah2E,EAAI,MACdtT,EAAGu0G,QAAU39I,EAAG,cAAa0yH,GAAah2E,EAAI,IAt4BlD,SAAyB53F,EAAK0xJ,EAAM13H,GAC3B,MAALA,IAAWA,EAAIyhI,GAAQ,GAAG,EAAEz7J,EAAI/N,SACnC,IAAI+oB,EAAI,IACL02I,IACCA,EAAK2nC,QAAOr+K,IAAK,IACjB02I,EAAKl8D,OAAOx6E,IAAK,MAErBgf,EAAEk9H,YAAY,EAAGl8I,GACjB,IAAI,IAAIjpB,EAAI,EAAGA,EAAI,IAAKA,EAAGioC,EAAEk9H,YAAY,EAAE,GAK3C,OAJA8b,GAAe,CAACrzD,KAAK,GAAI3lF,GACzBA,EAAEk9H,aAAa,GAAG,GAClBl9H,EAAEk9H,aAAa,GAAG,GAClB6a,GAAmB/xK,EAAKg6B,GACjBA,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,EACpB,CAw3ByE0rM,CAAgB9qM,EAAGsoD,EAAG,cAC/F0yH,GAAah2E,EAAI,IAAuB4jG,GAAeviI,IACvDqkI,GAAe1lG,EAAI18C,EAAIopC,EAAGy0G,UAE1BgE,GAAenlG,EAAI18C,GAtIpB,SAAyB08C,EAAI18C,EAAkB42G,EAAgBzyJ,GAC9D,IAAmDskE,EAA/CgwB,EAAQu7E,GAAkBh0H,EAAG,SAAW,MAAYulB,EAAK,GAAIy9G,EAAyB,GAC1FtQ,GAAah2E,EAAI,KACjB,IAAIm4E,EAAQx7K,MAAMkD,QAAQyjD,GACtByiJ,EAAMhqG,EAAMx5F,EAAE8+D,EACf/d,EAAG,WAAUyiJ,EAAM9zM,KAAKukB,IAAIulF,EAAMx5F,EAAE8+D,EAAG/d,EAAG,SAASjpD,OAAS,IAC/D,IAAI,IAAIshC,EAAIogE,EAAM1/E,EAAEglD,EAAG1lC,GAAKoqK,IAAOpqK,EAAG,CACrCktC,EAAK+tG,GAAWj7I,GAGhBynK,GAAiBpjG,EAAI18C,EAAIy4C,EAAOpgE,GAChC,IAAIuoK,GAAY,EAChB,GAAGvoK,GAAKogE,EAAMx5F,EAAE8+D,EAAG,IAAI,IAAIv2D,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CAE3D6wB,IAAMogE,EAAM1/E,EAAEglD,IAAGilH,EAAKx7K,GAAK+rK,GAAW/rK,IACzCihE,EAAMu6G,EAAKx7K,GAAK+9D,EAChB,IAAIstG,EAAOgC,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAKw4C,EAAGyoB,GAGvCm4H,IAFI/tB,GAEQ8tB,GAAkBjkG,EAAIm2E,EAAMx6I,EAAG7wB,EAAGrD,EAAM67C,EAAI4gJ,EACxD,CACD,CACDluB,GAAah2E,EAAI,IACjB,CAgHAgmG,CAAgBhmG,EAAI18C,EAAI42G,EAAKzyJ,GAE7Bm+L,GAAmB5lG,EAAI18C,GAzExB,SAA0B08C,EAAI18C,EAAIopC,EAAIwtE,GACrC,GAAI52G,EAAG,eAAP,CACA,IAAI5vD,EAAO4vD,EAAG,eACVyoB,EAA0B,kBAAbr4E,EAAKq4E,IAAmBr4E,EAAKq4E,IAAMqrG,GAAa1jL,EAAKq4E,KAGlE2gB,EAAGy0G,WAAUz0G,EAAGy0G,SAAY,CAACnpB,OAAO,KACpCtrF,EAAGy0G,SAASuB,QAAOh2G,EAAGy0G,SAASuB,MAAQ,IAC3C,IAAIh7I,EAAyBglC,EAAGy0G,SAASuB,MACrC3mG,EAAQo7E,GAAaprG,GACtBgwB,EAAM1/E,EAAEglD,GAAK06B,EAAMx5F,EAAE8+D,IAAK06B,EAAMx5F,EAAE8+D,EAAI81G,GAAa7zH,EAAG,SAAS/gD,EAAE8+D,EAAG0K,EAAMqrG,GAAar7E,IAC1F,IAAI,IAAI5hG,EAAI,EAAGA,EAAIutD,EAAMrtD,SAAUF,EAAG,CACrC,IAAIgB,EAAOusD,EAAMvtD,GACjB,GAAgB,yBAAbgB,EAAKoiM,MACLpiM,EAAKwnM,OAASzoC,EAAjB,CACA/+J,EAAKynM,IAAM,IAAMl2G,EAAGqrF,WAAW7d,GAAO,KAAOnuF,EAAK,KADpB,CAE9B,CACE5xE,GAAKutD,EAAMrtD,QAAQqtD,EAAM9sD,KAAK,CAAE2iM,KAAM,wBAAyBoF,MAAOzoC,EAAK0oC,IAAK,IAAMl2G,EAAGqrF,WAAW7d,GAAO,KAAOnuF,IAErHiqG,GAAah2E,EAAI,IAA8Bi7E,GAAmB3D,GAAkBvrG,KAIpFiqG,GAAah2E,EAAI,IAtBY,CAuB7B,CAoDAimG,CAAiBjmG,EAAI18C,EAAIopC,EAAIwtE,GAI7BgrC,GAAiBllG,EAAI18C,GAIrBiiJ,GAAavlG,EAAI18C,EAAIw7H,GAElBx7H,EAAG,aAAa0yH,GAAah2E,EAAI,KArkBX8/F,EAqkBqDx8I,EAAG,YApkBzE,MAALlhB,IAAWA,EAAIyhI,GAAQ,KAC1Bg8B,GAAgBC,GAChBkE,GAAc5sM,SAAQ,SAAS4lC,GAAKm+I,GAAY2kB,EAAiB9iK,GAAIoF,EAAK,IACnEA,IAwkBH36B,IAAQA,EAAKw7L,eAA+B,GAAlBx7L,EAAKw7L,UAAuBoC,GAAgBrlG,EAAI18C,GAtG/E,SAA6B08C,EAAI18C,EAAkB42G,EAAgB4kB,GAElE,GAAGx7H,EAAG,aAAajpD,OAAS,EAAG,CAC9B,IAAI4kL,EAAMD,GAASF,GAAO,EAAG,0BAA4B5kB,EAAI,GAAK,OAAQ6iB,GAAKI,KAC/EnH,GAAah2E,EAAI,IAA+Bw6E,GAAY,MAAQyE,IACpE37H,EAAG,WAAa27H,CAChB,CACD,CAkGAinB,CAAoBlmG,EAAI18C,EAAI42G,EAAK4kB,GAQjC9I,GAAah2E,EAAI,KACVA,EAAGv+D,KACV,CAqJD,IAAI0kK,GAAa,CAChB,CAAC,qBAA+B,EAAO,QACvC,CAAC,wBAA+B,EAAO,QACvC,CAAC,cAA+B,EAAO,QACvC,CAAC,sBAA+B,EAAO,QACvC,CAAC,WAA+B,IAChC,CAAC,YAA+B,EAAO,QACvC,CAAC,sBAA+B,EAAQ,OACxC,CAAC,iBAA+B,EAAO,QACvC,CAAC,sBAA+B,EAAO,QACvC,CAAC,qBAA+B,EAAO,QACvC,CAAC,gBAA+B,EAAO,QACvC,CAAC,yBAA+B,EAAO,QACvC,CAAC,0BAA+B,EAAO,QACvC,CAAC,8BAA+B,EAAO,QACvC,CAAC,qBAA+B,EAAO,QACvC,CAAC,cAA+B,OAChC,CAAC,wBAA+B,EAAO,QACvC,CAAC,cAAe,YAgGjB,IAAIC,GAAwB,UAAWpgM,MAAM,IAC7C,SAASqgM,GAAc/pL,EAAcgqL,GACpC,GAAGhqL,EAAEjiB,OAAS,GAAI,CAAE,GAAGisM,EAAM,OAAO,EAAO,MAAM,IAAI/oM,MAAM,qCAAwC,CACnG,IAAIgpM,GAAQ,EAMZ,OALAH,GAAShvM,SAAQ,SAAS4D,GACzB,IAAoB,GAAjBshB,EAAEnmB,QAAQ6E,GAAb,CACA,IAAIsrM,EAAM,MAAM,IAAI/oM,MAAM,4CAC1BgpM,GAAQ,CAFqB,CAG7B,IACMA,CACP,CAWD,SAASC,GAAS95G,GACjB,IAAIA,IAAOA,EAAGqrF,aAAerrF,EAAGsrF,OAAQ,MAAM,IAAIz6K,MAAM,oBACxD,IAAImvF,EAAGqrF,WAAW19K,OAAQ,MAAM,IAAIkD,MAAM,qBAC1C,IAbuBgkE,EAAGhjD,EAAGkoL,EAazBzuB,EAAUtrF,EAAGy0G,UAAYz0G,EAAGy0G,SAASnpB,QAAW,GAb7Bz2G,EAcRmrB,EAAGqrF,WAdQx5J,EAcIy5J,EAdDyuB,IAcW/5G,EAAGu0G,OAb3C1/H,EAAEnqE,SAAQ,SAASklB,EAAEniB,GACpBksM,GAAc/pL,GACd,IAAI,IAAIpH,EAAI,EAAGA,EAAI/a,IAAK+a,EAAG,GAAGoH,GAAKilD,EAAErsD,GAAI,MAAM,IAAI3X,MAAM,yBAA2B+e,GACpF,GAAGmqL,EAAO,CACT,IAAIC,EAAMnoL,GAAKA,EAAEpkB,IAAMokB,EAAEpkB,GAAGinM,UAAa9kL,EACzC,GAAuB,IAApBoqL,EAAGp9L,WAAW,IAAYo9L,EAAGrsM,OAAS,GAAI,MAAM,IAAIkD,MAAM,2BAA6BmpM,EAC1F,CACD,IAOD,IAAI,IAAIvsM,EAAI,EAAGA,EAAIuyF,EAAGqrF,WAAW19K,SAAUF,EAAGkmM,GAAS3zG,EAAGsrF,OAAOtrF,EAAGqrF,WAAW59K,IAAKuyF,EAAGqrF,WAAW59K,GAAIA,EAEtG,CAiKD,SAASwsM,GAAaj6G,GACrB,IAAItqD,EAAI,CAACkvI,IACTlvI,EAAEA,EAAE/nC,QAAUs4K,GAAU,WAAY,KAAM,CACzC,MAASG,GAAW,GAGpB,UAAWD,KAGZ,IAAI+zB,EAAel6G,EAAGy0G,WAAaz0G,EAAGy0G,SAASuB,OAAO,IAAIroM,OAAS,EAK/DwsM,EAAsB,CAACxF,SAAS,gBACjC30G,EAAGy0G,UAAYz0G,EAAGy0G,SAAS2F,UAC7BX,GAAW/uM,SAAQ,SAAS0U,GAEe,MAAtC4gF,EAAGy0G,SAAS2F,QAAQh7L,EAAE,KACtB4gF,EAAGy0G,SAAS2F,QAAQh7L,EAAE,KAAgBA,EAAE,KAC5C+6L,EAAW/6L,EAAE,IAAO4gF,EAAGy0G,SAAS2F,QAAQh7L,EAAE,IAC1C,IAEE4gF,EAAGy0G,SAAS2F,QAAQ1F,WAAYyF,EAAWxF,SAAW30G,EAAGy0G,SAAS2F,QAAQ1F,gBAAiByF,EAAWzF,WAE1Gh/J,EAAEA,EAAE/nC,QAAWs4K,GAAU,aAAc,KAAMk0B,GAI7C,IAAI/uB,EAASprF,EAAGy0G,UAAYz0G,EAAGy0G,SAASnpB,QAAU,GAC9C79K,EAAI,EAGR,GAAG29K,GAAUA,EAAO,IAAQA,EAAO,GAAGivB,OAAQ,CAE7C,IADA3kK,EAAEA,EAAE/nC,QAAU,cACVF,EAAI,EAAGA,GAAKuyF,EAAGqrF,WAAW19K,QACzBy9K,EAAO39K,IACP29K,EAAO39K,GAAG4sM,SAFyB5sM,GAIrCA,GAAKuyF,EAAGqrF,WAAW19K,SAAQF,EAAI,GAClCioC,EAAEA,EAAE/nC,QAAU,6BAA+BF,EAAI,gBAAkBA,EAAI,MACvEioC,EAAEA,EAAE/nC,QAAU,cACd,CAGD,IADA+nC,EAAEA,EAAE/nC,QAAU,WACVF,EAAI,EAAGA,GAAKuyF,EAAGqrF,WAAW19K,SAAUF,EAAG,CAC1C,IAAIwvL,EAAO,CAACxuL,KAAKw2K,GAAUjlF,EAAGqrF,WAAW59K,GAAG2F,MAAM,EAAE,MAGpD,GAFA6pL,EAAIqd,QAAU,IAAI7sM,EAAE,GACpBwvL,EAAI,QAAU,OAAOxvL,EAAE,GACpB29K,EAAO39K,GAAI,OAAO29K,EAAO39K,GAAG4sM,QAC9B,KAAK,EAAGpd,EAAIjlK,MAAQ,SAAU,MAC9B,KAAK,EAAGilK,EAAIjlK,MAAQ,aAErB0d,EAAEA,EAAE/nC,QAAWs4K,GAAU,QAAQ,KAAKgX,EACtC,CA+BD,OA9BAvnJ,EAAEA,EAAE/nC,QAAU,YAKXusM,IACFxkK,EAAEA,EAAE/nC,QAAU,iBACXqyF,EAAGy0G,UAAYz0G,EAAGy0G,SAASuB,OAAOh2G,EAAGy0G,SAASuB,MAAMtrM,SAAQ,SAASklB,GACvE,IAAIzQ,EAAY,CAAC1Q,KAAKmhB,EAAEihL,MACrBjhL,EAAE2qL,UAASp7L,EAAEitL,QAAUx8K,EAAE2qL,SACd,MAAX3qL,EAAEqmL,QAAe92L,EAAEq7L,aAAe,GAAG5qL,EAAEqmL,OACvCrmL,EAAEyqL,SAAQl7L,EAAE8+K,OAAS,KACpBruK,EAAEsmL,MACNxgK,EAAEA,EAAE/nC,QAAUs4K,GAAU,cAAehB,GAAUr1J,EAAEsmL,KAAM/2L,GACzD,IACDu2B,EAAEA,EAAE/nC,QAAU,mBAcZ+nC,EAAE/nC,OAAO,IAAI+nC,EAAEA,EAAE/nC,QAAU,cAAe+nC,EAAE,GAAGA,EAAE,GAAGn/B,QAAQ,KAAK,MAC7Dm/B,EAAE7+B,KAAK,GACd,CAyOD,SAAS4jM,GAAgBnnG,EAAItT,GAE5B,GAAIA,EAAGy0G,UAAaz0G,EAAGy0G,SAASnpB,OAAhC,CAGA,IAFA,IAjB0B9d,EAAK93H,EAiB3B01I,EAASprF,EAAGy0G,SAASnpB,OACrB79K,EAAI,EAAGitM,GAAU,EAAGzc,GAAU,EAC5BxwL,EAAI29K,EAAOz9K,SAAUF,GACtB29K,EAAO39K,KAAO29K,EAAO39K,GAAG4sM,SAAqB,GAAXK,EAAcA,EAASjtM,EACjC,GAApB29K,EAAO39K,GAAG4sM,SAA0B,GAAXpc,IAAcA,EAASxwL,GAEzD,KAAGwwL,EAASyc,GACZpxB,GAAah2E,EAAI,KACjBg2E,GAAah2E,EAAI,KAzBSk6D,EAyBmCktC,EAxBzDhlK,IAAGA,EAAIyhI,GAAQ,KACnBzhI,EAAEk9H,aAAa,EAAG,GAClBl9H,EAAEk9H,aAAa,EAAG,KAClBl9H,EAAEk9H,YAAY,EAAI,OAClBl9H,EAAEk9H,YAAY,EAAI,OAClBl9H,EAAEk9H,YAAY,EAAI,KAClBl9H,EAAEk9H,YAAY,EAAIpF,GAClB93H,EAAEk9H,YAAY,EAAIpF,GAElB93H,EAAEk9H,YAAY,EADF,KAELl9H,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,IAgB1C4zI,GAAah2E,EAAI,IAX6B,CAY9C,CAuBD,SAASqnG,GAAa36G,EAAIjlF,GACzB,IAAIu4F,EAAK01E,KAyBT,OAxBAM,GAAah2E,EAAI,KACjBg2E,GAAah2E,EAAI,IAjElB,SAA8BtsG,EAAM0uC,GAC/BA,IAAGA,EAAIyhI,GAAQ,MACnB,IAAI,IAAI1pK,EAAI,EAAQ,GAALA,IAAUA,EAAGioC,EAAEk9H,YAAY,EAAG,GAK7C,OAJA4Z,GAAmB,UAAW92I,GAC9B82I,GAAmBpkB,GAAKztJ,QAAS+6B,GACjC82I,GAAmBpkB,GAAKztJ,QAAS+6B,GACjC82I,GAAmB,OAAQ92I,GACpBA,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,CAC1C,CAyD8CklK,IAE9CtxB,GAAah2E,EAAI,IAxOlB,SAAyBtsG,EAAmB0uC,GACvCA,IAAGA,EAAIyhI,GAAQ,KACnB,IAAIn/H,EAAQ,EAQZ,OAPGhxC,GAECA,EAAK6zM,gBAAe7iK,GAAS,GAEjCtC,EAAEk9H,YAAY,EAAG56H,GACjBtC,EAAEk9H,YAAY,EAAG,GACjB6a,GAAmBzmL,GAAQA,EAAK0tM,UAAY,eAAgBh/J,GACrDA,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,EACpB,CA6NyCotM,CAAgB96G,EAAGy0G,UAAYz0G,EAAGy0G,SAAS2F,SAAW,OAG/FK,GAAgBnnG,EAAItT,GAjFrB,SAAyBsT,EAAItT,GAC5BspF,GAAah2E,EAAI,KACjB,IAAI,IAAIk6D,EAAM,EAAGA,GAAOxtE,EAAGqrF,WAAW19K,SAAU6/J,EAAK,CAGpD8b,GAAah2E,EAAI,KAhMQtsG,EA+LjB,CAAEqzM,OADAr6G,EAAGy0G,UAAYz0G,EAAGy0G,SAASnpB,QAAUtrF,EAAGy0G,SAASnpB,OAAO9d,IAAQxtE,EAAGy0G,SAASnpB,OAAO9d,GAAK6sC,QAAU,EACrFU,OAAQvtC,EAAI,EAAGwtC,SAAU,OAASxtC,EAAI,GAAI/+J,KAAMuxF,EAAGqrF,WAAW7d,KA/LtD93H,OAgMYulK,KA/LrCvlK,EAAIyhI,GAAQ,MACnBzhI,EAAEk9H,YAAY,EAAG5rK,EAAKqzM,QACtB3kK,EAAEk9H,YAAY,EAAG5rK,EAAK+zM,QACtBjtB,GAAY9mL,EAAKg0M,SAAUtlK,GAC3B82I,GAAmBxlL,EAAKyH,KAAK2E,MAAM,EAAE,IAAKsiC,GACnCA,EAAE/nC,OAAS+nC,EAAEhoC,EAAIgoC,EAAEtiC,MAAM,EAAGsiC,EAAEhoC,GAAKgoC,GA2LzC,CAjMF,IAA2B1uC,EAAM0uC,EAkMhC4zI,GAAah2E,EAAI,IACjB,CA0EA4nG,CAAgB5nG,EAAItT,GAepBspF,GAAah2E,EAAI,KAEVA,EAAGv+D,KACV,CAgED,SAASomK,GAASn0M,EAAiByH,EAAiBsM,EAAMilF,EAAiBoyF,GAC1E,OAAyB,SAAjB3jL,EAAK2E,OAAO,GAAc+lM,GAAehF,IAAcntM,EAAM+T,EAAMilF,EAAIoyF,EAC/E,CAeD,SAASgpB,GAAWp0M,EAAqByH,EAAiBsM,GACzD,OAAyB,SAAjBtM,EAAK2E,OAAO,GAAc+4L,GAAqBd,IAAoBrkM,EAAM+T,EACjF,CA46BD,SAASsgM,GAAiBr7G,EAAiBjlF,GAC1C,IAAI26B,EAAsB,GAK1B,OAHGsqD,EAAGizF,OAAOv9I,EAAExnC,KAtnYhB,SAA6B+kL,EAAOl4K,GACnC,IAAI26B,EAAsB,GAgB1B,OAfA/hC,GAAKkgL,IAAiBjpK,KAAI,SAASwjB,GAClC,IAAI,IAAI3gC,EAAI,EAAGA,EAAIujL,GAAWrjL,SAAUF,EAAG,GAAGujL,GAAWvjL,GAAG,IAAM2gC,EAAG,OAAO4iJ,GAAWvjL,GACvF,IAAIA,EAAI,EAAGA,EAAIwjL,GAAUtjL,SAAUF,EAAG,GAAGwjL,GAAUxjL,GAAG,IAAM2gC,EAAG,OAAO6iJ,GAAUxjL,GAChF,MAAM2gC,CACN,IAAE1jC,SAAQ,SAASq8B,GACnB,GAAkB,MAAfksJ,EAAMlsJ,EAAE,IAAX,CACA,IAAIqH,EAAIrzB,GAAQA,EAAKk4K,OAA6B,MAApBl4K,EAAKk4K,MAAMlsJ,EAAE,IAAchsB,EAAKk4K,MAAMlsJ,EAAE,IAAMksJ,EAAMlsJ,EAAE,IAE9E,SADCA,EAAE,KACKqH,EAAI,IAAI72B,KAAK62B,GAAGx3B,cAAcL,QAAQ,SAAS,MAE9C,iBAAL63B,EAAeA,EAAI9wB,OAAO8wB,IACtB,IAANA,IAAoB,IAANA,EAAeA,EAAIA,EAAI,IAAM,IAC3CA,aAAa72B,OAAM62B,EAAI,IAAI72B,KAAK62B,GAAGx3B,cAAcL,QAAQ,SAAS,KAC1Em/B,EAAExnC,KAAK63K,GAAS8N,GAAgB9sJ,EAAE,KAAOA,EAAE,GAAIqH,GARjB,CAS9B,IACM63I,GAAU,qBAAsBvwI,EAAE7+B,KAAK,IAAK,CAAC0sJ,MAAM8iB,IAC1D,CAomYoBi1B,CAAoBt7G,EAAGizF,MAAOl4K,IAE/CilF,EAAGu7G,WAAW7lK,EAAExnC,KArmYpB,SAA8B+kL,EAAOsoB,GACpC,IAAIC,EAAY,CAAC,aAAa,cAC1B7tL,EAAI,2BACJ+nB,EAAsB,GA2B1B,OA1BGu9I,GAAOt/K,GAAKs/K,GAAOvoL,SAAQ,SAAS4lC,GAEtC,GAAItrC,OAAOoH,UAAU0P,eAAevN,KAAK0kL,EAAO3iJ,GAAhD,CACA,IAAI,IAAI7iC,EAAI,EAAGA,EAAIujL,GAAWrjL,SAAUF,EAAG,GAAG6iC,GAAK0gJ,GAAWvjL,GAAG,GAAI,OACrE,IAAIA,EAAI,EAAGA,EAAIwjL,GAAUtjL,SAAUF,EAAG,GAAG6iC,GAAK2gJ,GAAUxjL,GAAG,GAAI,OAC/D,IAAIA,EAAI,EAAGA,EAAI+tM,EAAU7tM,SAAUF,EAAG,GAAG6iC,GAAKkrK,EAAU/tM,GAAI,OAE5D,IAAI2gC,EAAI6kJ,EAAM3iJ,GACV5wB,EAAI,SACO,iBAAL0uB,GAAiB1uB,EAAI,QAAS0uB,EAAI9wB,OAAO8wB,KACrC,IAANA,IAAoB,IAANA,GAAe1uB,EAAI,UAAW0uB,EAAIA,EAAI,IAAM,KAC7DA,EAAI9wB,OAAO8wB,GAChBsH,EAAExnC,KAAK+3K,GAAUf,GAAa50I,GAAIlC,EAAG,CAAC,QAAQ1uB,IAVY,CAW1D,IACE67L,GAAW5nM,GAAK4nM,GAAW7wM,SAAQ,SAAS4lC,GAE9C,GAAItrC,OAAOoH,UAAU0P,eAAevN,KAAKgtM,EAAWjrK,MACjD2iJ,IAASjuL,OAAOoH,UAAU0P,eAAevN,KAAK0kL,EAAO3iJ,IAAxD,CACA,IAAIlC,EAAImtK,EAAUjrK,GACd5wB,EAAI,SACO,iBAAL0uB,GAAiB1uB,EAAI,QAAS0uB,EAAI9wB,OAAO8wB,KACrC,IAANA,IAAoB,IAANA,GAAe1uB,EAAI,UAAW0uB,EAAIA,EAAI,IAAM,KAC1DA,aAAa72B,MAAQmI,EAAI,cAAe0uB,EAAIA,EAAEx3B,eACjDw3B,EAAI9wB,OAAO8wB,GAChBsH,EAAExnC,KAAK+3K,GAAUf,GAAa50I,GAAIlC,EAAG,CAAC,QAAQ1uB,IAPoB,CAQlE,IACM,IAAMiO,EAAI,WAAa04J,GAAW,KAAO3wI,EAAE7+B,KAAK,IAAM,KAAO8W,EAAI,GACxE,CAskYwB8tL,CAAqBz7G,EAAGizF,MAAOjzF,EAAGu7G,YACnD7lK,EAAE7+B,KAAK,GACd,CAoBD,SAAS6kM,GAAgB9rL,GAAK,OAAOq2J,GAAU,aAAc,KAAM,CAAC,UAAWr2J,EAAEihL,KAAM,cAAc,IAAMnS,GAAS9uK,EAAEsmL,IAAK,CAACvhI,EAAE,EAAErmE,EAAE,KAAQ,CAmJ1I,SAASqtM,GAAmBlyB,EAAMpqG,EAAgBzoB,EAAI77C,EAAMyyJ,EAAgBxtE,EAAI01E,GAC/E,IAAI+T,QAAmBj/K,GAAVi/K,EAAK/yK,QAA4BlM,GAAVi/K,EAAK/yJ,EAAiB,MAAO,GAEjE,IAAI8hH,EAAO,CAAC,EAEZ,GADGixC,EAAK/yJ,IAAG8hH,EAAK,cAAgB,IAAMysC,GAAUyZ,GAASjV,EAAK/yJ,EAAGg/I,KAC9D+T,EAAKhiK,GAAKgiK,EAAKhiK,EAAErU,MAAM,EAAGisE,EAAI1xE,SAAW0xE,EAAK,CAChD,IAAItqC,EAAMy1I,GAAYf,EAAKhiK,EAAErU,MAAMisE,EAAI1xE,OAAS,IAChD6qI,EAAK,iBAAmB,QAAUzjG,EAAI4/B,GAAK+gG,EAAK/gG,EAAI,GAAK,KAAO5/B,EAAI4/B,EAAI+gG,EAAK/gG,GAAK,KAAO,KAAO5/B,EAAIzmC,GAAKonK,EAAKpnK,EAAI,GAAK,KAAOymC,EAAIzmC,EAAIonK,EAAKpnK,GAAK,IAChJ,CAOD,GALGm7K,EAAK/7K,GAAK+7K,EAAK/7K,EAAEilL,SACnBn6C,EAAK,WAAaysC,GAAUwE,EAAK/7K,EAAEilL,QAChClJ,EAAK/7K,EAAEsqL,UAASx/C,EAAK,mBAAqBysC,GAAUwE,EAAK/7K,EAAEsqL,WAG5DphI,EAAG,WAEL,IADA,IAAIglJ,EAAOhlJ,EAAG,WACN+oD,EAAK,EAAGA,GAAMi8F,EAAKjuM,SAAUgyG,EACjCi8F,EAAKj8F,GAAIhwF,EAAErhB,GAAKonK,EAAKpnK,GAAKstM,EAAKj8F,GAAIhwF,EAAEglD,GAAK+gG,EAAK/gG,IAC/CinI,EAAKj8F,GAAI9pG,EAAEvH,EAAIstM,EAAKj8F,GAAIhwF,EAAErhB,IAAGkqI,EAAK,kBAAoBojE,EAAKj8F,GAAI9pG,EAAEvH,EAAIstM,EAAKj8F,GAAIhwF,EAAErhB,GAChFstM,EAAKj8F,GAAI9pG,EAAE8+D,EAAIinI,EAAKj8F,GAAIhwF,EAAEglD,IAAG6jE,EAAK,gBAAkBojE,EAAKj8F,GAAI9pG,EAAE8+D,EAAIinI,EAAKj8F,GAAIhwF,EAAEglD,IAInF,IAAIj1D,EAAI,GAAIqnB,EAAI,GAChB,OAAO0iJ,EAAK/pK,GACX,IAAK,IAAK,IAAI3E,EAAKkxK,WAAY,MAAO,GAAI,MAC1C,IAAK,IAAKvsK,EAAI,SAAUqnB,EAAIzpB,OAAOmsK,EAAK/yK,GAAI,MAC5C,IAAK,IAAKgJ,EAAI,UAAWqnB,EAAK0iJ,EAAK/yK,EAAI,IAAM,IAAM,MACnD,IAAK,IAAKgJ,EAAI,QAASqnB,EAAIkkJ,GAAKxB,EAAK/yK,GAAI,MACzC,IAAK,IAAKgJ,EAAI,WAAYqnB,EAAI,IAAIxvB,KAAKkyK,EAAK/yK,GAAGE,cAA4B,MAAV6yK,EAAK7zJ,IAAW6zJ,EAAK7zJ,EAAI6zJ,EAAK7zJ,GAAKw1I,GAAU,KAAK,MACnH,IAAK,IAAK1rJ,EAAI,SAAUqnB,IAAe0iJ,EAAK/yK,GAAG,IA55cjC,IACNH,QAAQwuK,IAAU,SAASpvJ,GAAK,OAAOmvJ,GAAUnvJ,EAAK,IAAEpf,QAAQ4uK,IAAa,SAASx1J,GAAK,MAAO,MAASA,EAAE/S,WAAW,GAAGvI,SAAS,IAAKnL,cAAgB,GAAM,IA85cxK,IAAImpM,EAAKkB,GAAex4L,EAAK8rL,QAASpd,EAAM1uK,GAC5Cy9H,EAAK,cAAgB,KAAO,GAAG65D,GAC/B75D,EAAK,YAAck9B,EAAKpnK,EAAI,EAC5B,IAAIutM,EAAgB,MAAVpyB,EAAK/yK,EAAYqwB,EAAI,GAC3BqH,EAAc,KAAVq7I,EAAK/pK,EAAW,GAAM,kBAAoBA,EAAI,KAAOm8L,EAAK,UAIlE,OAFIpyB,EAAKn7K,GAAG,IAAIX,OAAS,IAAGygC,GAA2Bq7I,EAAKn7K,EA/C5Csc,KAAI,SAAStc,GAE5B,IACI6Q,EAAG8mK,GAAU,WADK33K,EAAEoR,GAAG,IA92ckCnJ,QAAQ,iBAAiB,SA+2cvD,CAAC,MAAQ,oCACxC,OAAO0vK,GAAU,UAAW9mK,EAAG,CAAC,YAAY7Q,EAAEkO,GAC9C,IAAE3F,KAAK,KA4CDovK,GAAU,OAAQ73I,EAAGoqG,EAC5B,CACD,SAASsjE,GAAkB7sK,EAAcykI,GACxC,IAAIh+H,EAAI,mBAAqBzG,EAAE,GAAK,IAMpC,OALGykI,IACCA,EAAIyqB,MAAQzqB,EAAI0qB,MAAK1qB,EAAI0qB,IAAMC,GAAM3qB,EAAIyqB,MACzCzqB,EAAI0qB,MAAK1oJ,GAAK,oCAAsCg+H,EAAI0qB,IAAM,KAC9D1qB,EAAIuqB,SAAQvoJ,GAAK,mBAEdA,EAAI,GACX,CAuCD,SAASqmK,GAAcvuC,EAAgBzyJ,EAAMilF,GAC5C,IAAItqD,EAAsB,GACtB/lB,EAAIqwE,EAAGqrF,WAAW7d,GAClB52G,EAAKopC,EAAGsrF,OAAO37J,GAEfjQ,EAAek3C,EArOpB,SAA6BA,EAAkB77C,EAAMyyJ,EAAgBxtE,GACpE,IAAIppC,EAAI,MAAO,GACf,MAAMopC,GAAI,CAAC,GAAGy0G,UAAU,CAAC,GAAGuB,MAAO,MAAO,GAI1C,IAFA,IAAIh7I,EAAuBglC,EAAGy0G,SAASuB,MACnCnnI,EAAwB,GACpBphE,EAAI,EAAGA,EAAIutD,EAAMrtD,SAAUF,EAAG,CACrC,IAAImiB,EAAIorC,EAAMvtD,GACXmiB,EAAEqmL,OAASzoC,IAIX59I,EAAEihL,KAAKn5L,MAAM,aAChBm3D,EAAI3gE,KAAKwtM,GAAgB9rL,IACzB,CACD,OAAOi/C,EAAIh4D,KAAK,GAChB,CAqNwBmlM,CAAoBplJ,EAAI77C,EAAMyyJ,EAAKxtE,GAAM,GAUjE,OATGtgF,EAAE/R,OAAS,GAAG+nC,EAAExnC,KAAK,UAAYwR,EAAI,YAGxCA,EAAIk3C,EA9CL,SAA6BA,EAAkB77C,EAAMyyJ,EAAgBxtE,GACpE,IAAIppC,EAAG,QAAS,MAAO,GACvB,IAAIy4C,EAAkBu7E,GAAkBh0H,EAAG,SACvCglJ,EAAwBhlJ,EAAG,YAAc,GAAI+oD,EAAK,EAClDjqE,EAAsB,GACvBkhB,EAAG,UAAUA,EAAG,SAASlsD,SAAQ,SAASklB,EAAGniB,GAC/CywL,GAAYtuK,GACZ,IAAI0f,IAAM1f,EAAEqS,MACR8E,EAAIksK,GAAUxlM,EAAGmiB,GACjB0gB,EAAY,CAAC,WAAW7iC,EAAE,GAC3B6hC,IAAGgB,EAAE,YAAcyuJ,GAASh4J,EAAE9E,QAC9BrS,EAAEquK,SAAQ3tJ,EAAE,aAAa,KAC5BoF,EAAExnC,KAAK+3K,GAAU,SAAS,KAAK31I,GAC/B,IAED,IADA,IAAIm7I,EAAQx7K,MAAMkD,QAAQyjD,GAClB3nB,EAAIogE,EAAM1/E,EAAEglD,EAAG1lC,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,EAAG,CAE3C,IADA,IAAIykI,EAAM,CAACooC,GAAkB7sK,GAAI2nB,EAAG,UAAU,IAAI3nB,KAC1C7wB,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CAC3C,IAAI69L,GAAO,EACX,IAAIt8F,EAAK,EAAGA,GAAMi8F,EAAKjuM,SAAUgyG,EAChC,KAAGi8F,EAAKj8F,GAAIhwF,EAAErhB,EAAI8P,MACfw9L,EAAKj8F,GAAIhwF,EAAEglD,EAAI1lC,MACf2sK,EAAKj8F,GAAI9pG,EAAEvH,EAAI8P,MACfw9L,EAAKj8F,GAAI9pG,EAAE8+D,EAAI1lC,GAAlB,CACG2sK,EAAKj8F,GAAIhwF,EAAErhB,GAAK8P,GAAKw9L,EAAKj8F,GAAIhwF,EAAEglD,GAAK1lC,IAAGgtK,GAAO,GAClD,KAF6B,CAI9B,IAAGA,EAAH,CACA,IAAIvmC,EAAO,CAAC/gG,EAAE1lC,EAAE3gC,EAAE8P,GACdihE,EAAM0qG,GAAYrU,GAAO+T,EAAOgC,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAKw4C,EAAGyoB,GAChEq0F,EAAIxlK,KAAKytM,GAAmBlyB,EAAMpqG,EAAKzoB,EAAI77C,EAAMyyJ,EAAKxtE,EAAI01E,GAHzC,CAIjB,CACDhC,EAAIxlK,KAAK,UACNwlK,EAAI/lK,OAAS,GAAG+nC,EAAExnC,KAAKwlK,EAAI78J,KAAK,IACnC,CACD,OAAO6+B,EAAE7+B,KAAK,GACd,CAUSqlM,CAAoBtlJ,EAAI77C,GAAiB,GAC/C2E,EAAE/R,OAAS,GAAG+nC,EAAExnC,KAAK,UAAYwR,EAAI,YAGxCg2B,EAAExnC,KA3NH,SAA8B0oD,EAAkB77C,EAAMyyJ,EAAgBxtE,GACrE,IAAIppC,EAAI,MAAO,GACf,IAAIlhB,EAAsB,GA0C1B,GA1BGkhB,EAAG,cACLlhB,EAAExnC,KAAK,eACJ0oD,EAAG,YAAY8xB,QAAQhzC,EAAExnC,KAAK+3K,GAAU,SAAU,KAAM,CAAC,WAAWrvH,EAAG,YAAY8xB,UACnF9xB,EAAG,YAAY08I,QAAQ59J,EAAExnC,KAAK+3K,GAAU,SAAU,KAAM,CAAC,WAAWrvH,EAAG,YAAY08I,UACtF59J,EAAExnC,KAAK+3K,GAAU,cAAe,KAAM,CACrC,WAAYrvH,EAAG,YAAY2hE,QAAU,OACrC,SAAU3hE,EAAG,YAAYs6C,MAAQ,MACjC,UAAWt6C,EAAG,YAAY0hE,OAAS,MACnC,QAAS1hE,EAAG,YAAYw6C,KAAO,UAEhC17D,EAAExnC,KAAK,iBAgBL8xF,GAAMA,EAAGy0G,UAAYz0G,EAAGy0G,SAASnpB,QAAUtrF,EAAGy0G,SAASnpB,OAAO9d,GAEhE,GAAGxtE,EAAGy0G,SAASnpB,OAAO9d,GAAK6sC,OAAQ3kK,EAAExnC,KAAK+3K,GAAU,UAA8C,GAAlCjmF,EAAGy0G,SAASnpB,OAAO9d,GAAK6sC,OAAc,cAAgB,kBAAoB,CAAC,QACtI,CAEJ,IAAI,IAAI5sM,EAAI,EAAGA,EAAI+/J,KAAaxtE,EAAGy0G,SAASnpB,OAAO79K,IAAOuyF,EAAGy0G,SAASnpB,OAAO79K,GAAG4sM,UAAtD5sM,GACvBA,GAAK+/J,GAAK93H,EAAExnC,KAAK,cACpB,CAqDF,UAhDO8xF,GAAI,CAAC,GAAGy0G,UAAU,CAAC,GAAGU,OAAO,IAAI,IAAI,CAAC,GAAGE,KAAK3/J,EAAExnC,KAAK,yBA2BzD0oD,EAAG,cACLlhB,EAAExnC,KAAK63K,GAAS,kBAAmB,SAChCnvH,EAAG,YAAYulJ,SAASzmK,EAAExnC,KAAK63K,GAAS,iBAAkB,SAC1DnvH,EAAG,YAAYwlJ,WAAW1mK,EAAExnC,KAAK63K,GAAS,mBAAoB,SAC1B,MAApCnvH,EAAG,YAAYylJ,mBAA8BzlJ,EAAG,YAAYylJ,kBACjB,MAAtCzlJ,EAAG,YAAY0lJ,qBAAgC1lJ,EAAG,YAAY0lJ,qBAAqB5mK,EAAExnC,KAAK63K,GAAS,kBAAmB,kBAD5CrwI,EAAExnC,KAAK63K,GAAS,kBAAmB,gBAEtH,CACC,CAAE,cAAe,oBACjB,CAAE,gBAAiB,iBACnB,CAAE,aAAc,iBAChB,CAAE,gBAAiB,mBACnB,CAAE,aAAc,mBAChB,CAAE,mBAAoB,yBACtB,CAAE,gBAAiB,mBACnB,CAAE,aAAc,mBAChB,CAAE,OAAQ,aACV,CAAE,aAAc,eAChB,CAAE,cAAe,wBAChBr7K,SAAQ,SAAS0U,GAAQw3C,EAAG,YAAYx3C,EAAE,KAAKs2B,EAAExnC,KAAK,IAAIkR,EAAE,GAAG,KAAQ,KAG1D,GAAZs2B,EAAE/nC,OAAoB,GAClBs4K,GAAU,mBAAoBvwI,EAAE7+B,KAAK,IAAK,CAAC0sJ,MAAM8iB,IACxD,CAiHOk2B,CAAqB3lJ,EAAI77C,EAAMyyJ,EAAKxtE,IAEpCtqD,EAAE7+B,KAAK,GACd,CACD,SAAS2lM,GAAWx8G,EAAIjlF,GACnBA,IAAMA,EAAO,CAAC,GACdilF,EAAGymG,MAAKzmG,EAAGymG,IAAMxiB,GAAI7Y,KACtBprE,EAAGymG,MACLl1B,KAAYF,GAAerxE,EAAGymG,KAE9B1rL,EAAKy4L,OAAStwB,GAAUljF,EAAGymG,KAAM1rL,EAAKy4L,OAAOxzG,EAAGymG,IAAI,QAAU,EAC9D1rL,EAAK04L,IAAMzzG,EAAGymG,IACd1rL,EAAK8rL,QAAU,GACf0M,GAAex4L,EAAK8rL,QAAS,CAAC,EAAG,CAAC2M,OAAO,CAAC,QAAU,MAErD,IAAIr0L,EAAsB,GAC1BA,EAAEjR,KAAKmtM,GAAiBr7G,EAAIjlF,IAC5BoE,EAAEjR,KA3RK,IA4RPiR,EAAEjR,KAAK,IACPiR,EAAEjR,KAAK,IACP,IAAI,IAAIT,EAAI,EAAGA,EAAIuyF,EAAGqrF,WAAW19K,SAAUF,EAC1C0R,EAAEjR,KAAK+3K,GAAU,YAAa81B,GAActuM,EAAGsN,EAAMilF,GAAK,CAAC,UAAUilF,GAAUjlF,EAAGqrF,WAAW59K,OAG9F,OAFA0R,EAAE,GA7RH,SAAwB6gF,EAAIjlF,GAE3B,IAAIkiH,EAA2B,CAAC,mEAQhC,OAPAliH,EAAK8rL,QAAQn8L,SAAQ,SAAS8oG,EAAIvhG,GACjC,IAAI8F,EAA4B,GAChCA,EAAQ7J,KAAK+3K,GAAU,eAAgB,KAAM,CAAC,YAAahB,GAAU7Z,GAAU53D,EAAGu3E,cAElF,IAAIr1I,EAAW,CAAC,QAAS,KAAO,GAAGzjC,IACnCgrH,EAAO/uH,KAAK+3K,GAAU,QAASluK,EAAQlB,KAAK,IAAK6+B,GACjD,IACMuwI,GAAU,SAAUhpD,EAAOpmH,KAAK,IACvC,CAkRO4lM,CAAez8G,EAAIjlF,GAC1BoE,EAAE,GAjRH,SAA0B6gF,GACzB,MAAMA,GAAI,CAAC,GAAGy0G,UAAU,CAAC,GAAGuB,MAAO,MAAO,GAI1C,IAFA,IAAIh7I,EAAuBglC,EAAGy0G,SAASuB,MACnCnnI,EAAwB,GACpBphE,EAAI,EAAGA,EAAIutD,EAAMrtD,SAAUF,EAAG,CACrC,IAAImiB,EAAIorC,EAAMvtD,GACA,MAAXmiB,EAAEqmL,QACFrmL,EAAEihL,KAAKn5L,MAAM,aAChBm3D,EAAI3gE,KAAKwtM,GAAgB9rL,IACzB,CACD,OAAOq2J,GAAU,QAASp3G,EAAIh4D,KAAK,IACnC,CAqQO6lM,CAAiB18G,GACjB4kF,GAAaqB,GAAU,WAAY9mK,EAAEtI,KAAK,IAAK,CACrD,MAAcwvK,GACd,UAAcA,GACd,UAAcA,GACd,WAAcA,GACd,WAAcA,GACd,aAAcA,IAEf,CAkmBD,IAAIs2B,GACC,mCADDA,GAEE,mCAFFA,GAGE,mCA+FN,SAASC,GAAa58G,EAAiBjlF,GACtC,IAAI26B,EAAI36B,GAAQ,CAAC,EACbu8J,EAAMxnJ,GAAIhqB,MAAMk7K,QAAQ,CAAChjK,KAAK,MAC9B6+L,EAAS,YACb,OAAOnnK,EAAE06I,UAAY,OACpB,IAAK,MAAO16I,EAAE06I,SAAW,QAEzB,IAAK,MAAW16I,EAAE06I,WAAU16I,EAAE06I,SAAW,OAEzC,IAAK,QAASysB,EAAS,YAAannK,EAAEk0I,KAAO,EAAG,MAChD,IAAK,QAASizB,EAAS,QAASnnK,EAAEk0I,KAAO,EAAG,MAC5C,QAAS,MAAM,IAAI/4K,MAAM,gBAAkB6kC,EAAE06I,SAAW,gBAMzD,OAJAtgK,GAAIhqB,MAAM+5K,QAAQvI,EAAKulC,EAAQC,GAAe98G,EAAItqD,IACrC,GAAVA,EAAEk0I,OAAc5pF,EAAGizF,OAASjzF,EAAGu7G,YAvFnC,SAAyBv7G,EAAiBs3E,GACzC,IACWylC,EADPC,EAAY,GAAIC,EAAW,GAAIC,EAAW,GAC1CzvM,EAAI,EACJ0vM,EAAyCn6B,GAAUgM,GAAkB,KACrEouB,EAAsCp6B,GAAUiM,GAAc,KAClE,GAAGjvF,EAAGizF,MAGL,IAFA8pB,EAAOppM,GAAKqsF,EAAGizF,OAEXxlL,EAAI,EAAGA,EAAIsvM,EAAKpvM,SAAUF,GAAIzI,OAAOoH,UAAU0P,eAAevN,KAAK4uM,EAAcJ,EAAKtvM,IAAMuvM,EAAYh4M,OAAOoH,UAAU0P,eAAevN,KAAK6uM,EAAWL,EAAKtvM,IAAMwvM,EAAWC,GAAUhvM,KAAK,CAAC6uM,EAAKtvM,GAAIuyF,EAAGizF,MAAM8pB,EAAKtvM,MAE1N,GAAGuyF,EAAGu7G,UAGL,IAFAwB,EAAOppM,GAAKqsF,EAAGu7G,WAEX9tM,EAAI,EAAGA,EAAIsvM,EAAKpvM,SAAUF,EAAOzI,OAAOoH,UAAU0P,eAAevN,KAAMyxF,EAAGizF,OAAO,CAAC,EAAI8pB,EAAKtvM,MAAMzI,OAAOoH,UAAU0P,eAAevN,KAAK4uM,EAAcJ,EAAKtvM,IAAMuvM,EAAYh4M,OAAOoH,UAAU0P,eAAevN,KAAK6uM,EAAWL,EAAKtvM,IAAMwvM,EAAWC,GAAUhvM,KAAK,CAAC6uM,EAAKtvM,GAAIuyF,EAAGu7G,UAAUwB,EAAKtvM,MAEjS,IAAI4vM,EAAY,GAChB,IAAI5vM,EAAI,EAAGA,EAAIyvM,EAASvvM,SAAUF,EAC9BqnL,GAAUrrL,QAAQyzM,EAASzvM,GAAG,KAAO,GAAK4lL,GAAiB5pL,QAAQyzM,EAASzvM,GAAG,KAAO,GACpE,MAAlByvM,EAASzvM,GAAG,IACf4vM,EAAUnvM,KAAKgvM,EAASzvM,IAEtBwvM,EAAStvM,QAAQmiB,GAAIhqB,MAAM+5K,QAAQvI,EAAK,0BAA6Bie,GAAwB0nB,EAAUN,GAAYS,EAAWnuB,MAC9H+tB,EAAUrvM,QAAU0vM,EAAU1vM,SAAQmiB,GAAIhqB,MAAM+5K,QAAQvI,EAAK,kCAAqCie,GAAwBynB,EAAWL,GAAaQ,EAAcnuB,GAAkBquB,EAAU1vM,OAAS0vM,EAAY,KAAMV,IAC1N,CAgE8CW,CAAgBt9G,EAAIs3E,GAErD,GAAV5hI,EAAEk0I,MAAa5pF,EAAGu0G,QA38NtB,SAAsBj9B,EAAKimC,GACzBA,EAAI1pC,UAAUnpK,SAAQ,SAASq8B,EAAGt5B,GAChC,GAAS,GAALA,EAAJ,CAEA,IAAI+vM,EAAUz2K,EAAExwB,QAAQ,aAAc,sBACZ,MAAtBinM,EAAQpqM,OAAO,IACjB0c,GAAIhqB,MAAM+5K,QAAQvI,EAAKkmC,EAASD,EAAI3pC,UAAUnmK,GAAGkP,QAH3C,CAIT,GACF,CAm8N6B8gM,CAAanmC,EAAKxnJ,GAAIvlB,KAAKy1F,EAAGu0G,OAAQ,CAAClpM,KAA0B,iBAAb20F,EAAGu0G,OAAqB,SAAW,YAC7Gj9B,CACP,CAED,IAAIiS,GAAiB,CACb,EAAe,CAAuB7yJ,EAt1H9C,SAAyB1vB,EAAM2G,GAC9B,IAAIioB,EAAK,CAAC,EACNu9I,EAAMnsK,EAAK0G,EAAIC,EACnBioB,EAAE++C,EAAI3tE,EAAKisK,WAAW,GACtBjsK,EAAK0G,GAAK,EACV,IAAIipM,EAAQ3vM,EAAKisK,WAAW,GAC5BjsK,EAAK0G,GAAK,EACV,IAAIsqC,EAAQhxC,EAAKisK,WAAW,GAK5B,OAJAjsK,EAAK0G,EAAIylK,EACE,EAARn7H,IAAcpiB,EAAEkmH,MAAgB,EAAR9jG,GAChB,GAARA,IAAcpiB,EAAEqoK,QAAS,GACjB,GAARjmJ,IAAcpiB,EAAEuoK,IAAMwY,EAAQ,IAC1B/gL,CACP,GA00HO,EAAe,CAA0Bc,EA/uHjD,SAA4B1vB,GAE3B,MAAO,CADImmL,GAAenmL,GAE1B,GA6uHO,EAAe,CAAuB0vB,EA3nH9C,SAAyB1vB,GAGxB,MAAO,CAFImmL,GAAenmL,GACd+mL,GAAe/mL,GACN,IACrB,GAwnHO,EAAe,CAA0B0vB,EAvsHjD,SAA4B1vB,GAG3B,MAAO,CAFImmL,GAAenmL,GACbA,EAAKisK,WAAW,GACP,IACtB,GAosHO,EAAe,CAAyBv8I,EAhuHhD,SAA2B1vB,GAG1B,MAAO,CAFImmL,GAAenmL,GACdA,EAAKisK,WAAW,GACP,IACrB,GA6tHO,EAAe,CAAyBv8I,EAtpHhD,SAA2B1vB,GAG1B,MAAO,CAFImmL,GAAenmL,GACdwnL,GAAWxnL,GACF,IACrB,GAmpHO,EAAe,CAAuB0vB,EAhmH9C,SAAyB1vB,GAGxB,MAAO,CAFImmL,GAAenmL,GACdslL,GAAmBtlL,GACV,MACrB,GA6lHO,EAAe,CAAyB0vB,EAhrHhD,SAA2B1vB,GAG1B,MAAO,CAFImmL,GAAenmL,GACfA,EAAKisK,WAAW,GACP,IACpB,GA6qHO,EAAe,CAA2Bv8I,EA1hHlD,SAA6B1vB,EAAM2G,EAAQoN,GAC1C,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACf87K,EAAO0D,GAAenmL,GAC1ByiL,EAAK90G,EAAI55D,EAAK,QACd,IACI26B,EAAI,CAAC+zI,EADG6C,GAAmBtlL,GACT,OACtB,GAAG+T,EAAK2iM,YAAa,CACpB12M,EAAK0G,GAAK,EACV,IAAIkwL,EAAU+U,GAA4B3rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAC9D26B,EAAE,GAAKw7J,GAAkBtT,EAAS,EAAenU,EAAM1uK,EAAK21L,SAAU31L,EACtE,MACI/T,EAAK0G,EAAIqnC,EACd,OAAOW,CACP,GA8gHO,EAAe,CAAwBhf,EA3iH/C,SAA0B1vB,EAAM2G,EAAQoN,GACvC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACf87K,EAAO0D,GAAenmL,GAC1ByiL,EAAK90G,EAAI55D,EAAK,QACd,IACI26B,EAAI,CAAC+zI,EADG+E,GAAWxnL,GACD,KACtB,GAAG+T,EAAK2iM,YAAa,CACpB12M,EAAK0G,GAAK,EACV,IAAIkwL,EAAU+U,GAA4B3rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAC9D26B,EAAE,GAAKw7J,GAAkBtT,EAAS,EAAenU,EAAM1uK,EAAK21L,SAAU31L,EACtE,MACI/T,EAAK0G,EAAIqnC,EACd,OAAOW,CACP,GA+hHO,GAAe,CAAyBhf,EA5kHhD,SAA2B1vB,EAAM2G,EAAQoN,GACxC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACf87K,EAAO0D,GAAenmL,GAC1ByiL,EAAK90G,EAAI55D,EAAK,QACd,IACI26B,EAAI,CAAC+zI,EADGziL,EAAKisK,WAAW,GACN,KACtB,GAAGl4J,EAAK2iM,YAAa,CACpB12M,EAAK0G,GAAK,EACV,IAAIkwL,EAAU+U,GAA4B3rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAC9D26B,EAAE,GAAKw7J,GAAkBtT,EAAS,EAAenU,EAAM1uK,EAAK21L,SAAU31L,EACtE,MACI/T,EAAK0G,EAAIqnC,EACd,OAAOW,CACP,GAgkHO,GAAe,CAA0Bhf,EA7jHjD,SAA4B1vB,EAAM2G,EAAQoN,GACzC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACf87K,EAAO0D,GAAenmL,GAC1ByiL,EAAK90G,EAAI55D,EAAK,QACd,IACI26B,EAAI,CAAC+zI,EADGziL,EAAKisK,WAAW,GACN,KACtB,GAAGl4J,EAAK2iM,YAAa,CACpB12M,EAAK0G,GAAK,EACV,IAAIkwL,EAAU+U,GAA4B3rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAC9D26B,EAAE,GAAKw7J,GAAkBtT,EAAS,EAAenU,EAAM1uK,EAAK21L,SAAU31L,EACtE,MACI/T,EAAK0G,EAAIqnC,EACd,OAAOW,CACP,GAijHO,GAAe,CAA2Bhf,EAlvHlD,SAA6B1vB,GAE5B,MAAO,CADIsmL,GAAoBtmL,GAE/B,GAgvHO,GAAe,CAAwB0vB,EA3nH/C,SAA0B1vB,GAGzB,MAAO,CAFIsmL,GAAoBtmL,GACnB+mL,GAAe/mL,GACN,IACrB,GAwnHO,GAAe,CAA2B0vB,EAvsHlD,SAA6B1vB,GAG5B,MAAO,CAFIsmL,GAAoBtmL,GAClBA,EAAKisK,WAAW,GACP,IACtB,GAosHO,GAAe,CAA0Bv8I,EAhuHjD,SAA4B1vB,GAG3B,MAAO,CAFIsmL,GAAoBtmL,GACnBA,EAAKisK,WAAW,GACP,IACrB,GA6tHO,GAAe,CAA0Bv8I,EAAEygL,IAC3C,GAAe,CAAwBzgL,EAhmH/C,SAA0B1vB,GAGzB,MAAO,CAFIsmL,GAAoBtmL,GACnBslL,GAAmBtlL,GACV,MACrB,GA6lHO,GAAe,CAA0B0vB,EAhrHjD,SAA4B1vB,GAG3B,MAAO,CAFIsmL,GAAoBtmL,GACpBA,EAAKisK,WAAW,GACP,IACpB,GA6qHO,GAAe,CAAwBv8I,EAAEm2J,IACzC,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,CAAyBl/J,EAAE,GAC1C,GAAe,CAAuBA,GAAG,GACzC,GAAe,CAAwBA,EAAE,GACzC,GAAe,CAAsBA,GAAG,GACxC,GAAe,CAAqB+I,EA7xE5C,SAAuB1vB,EAAM2G,EAAQoN,GACpC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACnB3G,EAAK0G,GAAK,EACV1G,EAAK0G,GAAK,EACV,IAAIikM,EAAO3qM,EAAKisK,WAAW,GACvBxkK,EAAOm/K,GAAuB5mL,GAC9B42L,EAAUgV,GAA4B5rM,EAAM,EAAG+T,GAC/CqxL,EAAU1e,GAA2B1mL,GAOzCA,EAAK0G,EAAIqnC,EACT,IAAI85B,EAAO,CAACgiI,KAAKpiM,EAAMkvM,IAAI/f,GAG3B,OAFG+T,EAAO,YAAW9iI,EAAIonI,MAAQtE,GAC9BvF,IAASv9H,EAAI0rI,QAAUnO,GACnBv9H,CACP,GA2wEO,GAAe,GACf,GAAe,GACf,GAAe,CAAqBn4C,EA55Q5C,SAAuB1vB,EAAM2G,EAAmBoN,GAC/C,IAAI8zD,EAAO,CAAC,EAEZA,EAAIqkG,GAAKlsK,EAAKisK,WAAW,GAAK,GAE9B,IAAIi0B,EAl4LL,SAAyBlgM,GACxB,IAAImY,EAAInY,EAAKisK,WAAW,GAYxB,OAXAjsK,EAAK0G,IACK,CACTkwM,MAAW,EAAJz+L,EACP0+L,QAAa,EAAJ1+L,EACT2+L,WAAgB,EAAJ3+L,EACZ4+L,WAAgB,EAAJ5+L,EACZ6+L,SAAc,GAAJ7+L,EACV8+L,QAAa,GAAJ9+L,EACT++L,UAAe,GAAJ/+L,EACXg/L,QAAa,IAAJh/L,EAGV,CAo3LYi/L,CAAgBp3M,GAW5B,OAVGkgM,EAAM2W,UAAShvI,EAAIs4H,OAAS,GAC5BD,EAAMgX,YAAWrvI,EAAI04H,SAAW,GAChCL,EAAMiX,UAAStvI,EAAIxiE,OAAS,GAC5B66L,EAAM+W,UAASpvI,EAAIy4H,OAAS,GAC5BJ,EAAM8W,WAAUnvI,EAAIw4H,QAAU,GAC9BH,EAAM6W,aAAYlvI,EAAIu4H,OAAS,GAGvB,MADDpgM,EAAKisK,WAAW,KACPpkG,EAAI44H,KAAO,GAEvBzgM,EAAKisK,WAAW,IAEtB,KAAK,EAAGpkG,EAAI84H,UAAY,cAAe,MACvC,KAAK,EAAG94H,EAAI84H,UAAY,YAGzB,IAAIC,EAAY5gM,EAAKisK,WAAW,GAChB,GAAb20B,IAAgB/4H,EAAI+4H,UAAYA,GAEnC,IAAIC,EAAS7gM,EAAKisK,WAAW,GAC1B40B,EAAS,IAAGh5H,EAAIg5H,OAASA,GAE5B,IAAIwW,EAAWr3M,EAAKisK,WAAW,GAM/B,OALGorC,EAAW,IAAGxvI,EAAIi5H,QAAUuW,GAE/Br3M,EAAK0G,IACLmhE,EAAIsgC,MA99LL,SAAwBnoG,GACvB,IAAI6nE,EAAM,CAAC,EAIPyvI,EAHIt3M,EAAKisK,WAAW,KAGD,EAEnB9kK,EAAQnH,EAAKisK,WAAW,GACxB2b,EAAM5nL,EAAKisK,WAAW,EAAG,KACzBsrC,EAAKv3M,EAAKisK,WAAW,GACrBurC,EAAKx3M,EAAKisK,WAAW,GACrBwrC,EAAKz3M,EAAKisK,WAAW,GAGzB,OAFAjsK,EAAK0G,IAEG4wM,GACP,KAAK,EAAGzvI,EAAIwsD,KAAO,EAAG,MACtB,KAAK,EACJxsD,EAAI1gE,MAAQA,EACZ,IAAIuwM,EAAMvvB,GAAOhhL,GAEbuwM,IAAK7vI,EAAIigH,IAAMmX,GAAQyY,IAC3B,MACD,KAAK,EAEJ7vI,EAAIigH,IAAMmX,GAAQ,CAACsY,EAAIC,EAAIC,IAC3B,MACD,KAAK,EAAG5vI,EAAI8/G,MAAQxgL,EAIrB,OAFW,GAAPygL,IAAU//G,EAAIggH,KAAOD,EAAM,EAAIA,EAAM,MAAQA,EAAM,OAEhD//G,CACP,CA+7LY8vI,CAAe33M,GAEpBA,EAAKisK,WAAW,IAEtB,KAAK,EAAGpkG,EAAIk5H,OAAS,QAAS,MAC9B,KAAK,EAAGl5H,EAAIk5H,OAAS,QAKtB,OAFAl5H,EAAIpgE,KAAO69K,GAAmBtlL,GAEvB6nE,CACP,GAk3QO,GAAe,CAAoBn4C,EA56Q3C,SAAsB1vB,EAAM2G,GAG3B,MAAO,CAFQ3G,EAAKisK,WAAW,GACfqZ,GAAmBtlL,GAEnC,GAy6QO,GAAe,CAAqB0vB,EAAEwxK,IACtC,GAAe,CAAuBxxK,EAAE8xK,IACxC,GAAe,CAAmB9xK,EAtyQ1C,SAAqB1vB,EAAM2G,GAC1B,IAAIwlK,EAAMnsK,EAAK0G,EAAIC,EACfixM,EAAa53M,EAAKisK,WAAW,GAC7B4rC,EAAO73M,EAAKisK,WAAW,GAE3B,OADAjsK,EAAK0G,EAAIylK,EACF,CAAC4jB,KAAK6nB,EAAY7zB,SAAS8zB,EAClC,GAiyQO,GAAe,GACf,GAAe,CAAyBnoL,EAzidhD,SAAuB1vB,GACtB,OAAOA,EAAKisK,WAAW,EAAG,IAC1B,GAwidO,GAAe,GACf,GAAe,CAAmBv8I,EA3qP1C,SAAsB1vB,GAGpB,IAFA,IAAI6nE,EAAM,GACNuoG,EAAMpwK,EAAKisK,WAAW,GACnBmE,KAAQ,GACbvoG,EAAI3gE,KAAK,CAAClH,EAAKisK,WAAW,GAAIjsK,EAAKisK,WAAW,KAChD,OAAOpkG,CACR,GAsqPO,GAAe,CAAyBlhD,EAAE,GAC1C,GAAe,CAAuBA,GAAG,GACzC,GAAe,CAAyBA,EAAE,GAC1C,GAAe,CAAuBA,GAAG,GACzC,GAAe,CAA8BA,EAAE,GAC/C,GAAe,CAA4BA,GAAG,GAC9C,GAAe,GACf,GAAe,GACf,GAAe,CAAwB+I,EAAEuhK,IACzC,GAAe,CAA4BvhK,EA7pHnD,SAA8B1vB,GAG7B,MAAO,CAFImmL,GAAenmL,GACd6lL,GAAc7lL,GACL,KACrB,GA0pHO,GAAe,CAA+B0vB,EA3+OtD,SAAiC1vB,GAChC,IAAI6nE,EAAM,CAAC,EACXA,EAAIphE,EAAIzG,EAAKisK,WAAW,GACxB,IAAIwW,EAAO,CAAC,EACZA,EAAK90G,EAAI3tE,EAAKisK,WAAW,GACzBwW,EAAKn7K,EAAItH,EAAKisK,WAAW,GACzBpkG,EAAI8F,EAAIo1G,GAAYN,GACpB,IAAIzxI,EAAQhxC,EAAKisK,WAAW,GAG5B,OAFW,EAARj7H,IAAa62B,EAAInhE,EAAI,KACb,EAARsqC,IAAa62B,EAAIryD,EAAI,KACjBqyD,CACP,GAi+OO,GAAe,CAAqBn4C,EAl6G5C,WACC,GAk6GO,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,GAAe,GACf,IAAe,GACf,IAAe,CAA2B/I,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,EAAG+I,EAAEqyJ,GAAWhiJ,EAAE,GAC7D,IAAe,CAAwBpZ,GAAG,GAC1C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA4BA,EAAE,EAAG+I,EAh/GxD,SAA8B1vB,GAC7B,IAAI0vB,EAAI1vB,EAAKisK,WAAW,GAExB,OADAjsK,EAAK0G,GAAK,GACH,CAAE2nM,IAAS,GAAJ3+K,EACd,GA6+GO,IAAe,CAA0B/I,GAAG,GAC5C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAAuB+I,EAj2H9C,SAAyB1vB,EAAM2G,GAC9B,IAAIioB,EAAI,CAAC,EACLc,EAAI1vB,EAAKA,EAAK0G,GAMlB,QANwB1G,EAAK0G,EAC7BkoB,EAAEm/K,QAAc,GAAJr+K,GACZd,EAAEs7E,OAAc,IAAJx6E,GAEZ1vB,EAAK0G,GAAK,GACVkoB,EAAEnnB,KAAO++K,GAAmBxmL,EAAM2G,EAAS,IACpCioB,CACP,GAy1HO,IAAe,CAAsBc,EAAEugL,GAAgBlwK,EAAE,IACzD,IAAe,CAAqBrQ,EAzjH5C,WACC,GAyjHO,IAAe,GACf,IAAe,CAAuBA,EA/3E9C,SAAyB1vB,EAAM2G,GAC9B,IAAI+nC,EAAiB,CAAC,EAClBsC,EAAQhxC,EAAKisK,WAAW,GAC5Bv9H,EAAEopK,oBAAsB93M,EAAKisK,WAAW,GACxC,IAAI8rC,EAAWpxM,EAAS,EAAK2+K,GAAmBtlL,GAAQ,GAiBxD,OAhBG+3M,EAAQpxM,OAAS,IAAG+nC,EAAEg/J,SAAWqK,GACpCrpK,EAAEspK,wBAAkC,MAARhnK,GAC5BtC,EAAEupK,cAAwB,GAARjnK,GAClBtC,EAAEwpK,sBAAgC,KAARlnK,GAC1BtC,EAAEs2H,YAAsB,EAARh0H,GAChBtC,EAAEmlK,iBAA2B,EAAR7iK,GACrBtC,EAAEypK,sBAAgC,KAARnnK,GAC1BtC,EAAE0pK,qBAA+B,GAARpnK,GACzBtC,EAAE2pK,gBAA0B,KAARrnK,GACpBtC,EAAE4pK,yBAAmC,OAARtnK,GAC7BtC,EAAE6pK,0BAAoC,IAARvnK,GAC9BtC,EAAE8pK,8BAAwC,EAARxnK,GAClCtC,EAAE+pK,qBAA+B,GAARznK,GACzBtC,EAAEgqK,YAAc,CAAC,MAAO,eAAgB,QAAS1nK,GAAS,GAAM,GAChEtC,EAAEiqK,wBAAkC,MAAR3nK,GAC5BtC,EAAEkqK,YAAc,CAAC,UAAW,QAAS,UAAW5nK,GAAS,EAAK,GACvDtC,CACP,GA02EO,IAAe,GACf,IAAe,GACf,IAAe,CAAyBhf,EAp5EhD,SAA2B1vB,EAAM2G,GAChC,IAAIioB,EAAI,CAAC,EAKT,OAJAA,EAAEykL,OAASrzM,EAAKisK,WAAW,GAC3Br9I,EAAEmlL,OAAS/zM,EAAKisK,WAAW,GAC3Br9I,EAAEolL,SAAWntB,GAAY7mL,EAAK2G,EAAO,GACrCioB,EAAEnnB,KAAO69K,GAAmBtlL,GACrB4uB,CACP,GA84EO,IAAe,GACf,IAAe,GACf,IAAe,CAAyBjI,EAAE,EAAG+I,EA/7SrD,SAA2B1vB,GAC1B,MAAO,CAACA,EAAKisK,WAAW,GAAIjsK,EAAKisK,WAAW,GAC5C,GA87SO,IAAe,CAAuBtlJ,GAAG,GACzC,IAAe,CAA6BA,EAAE,EAAG+I,EAAE43J,IACnD,IAAe,CAA2B3gK,GAAG,GAC7C,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,GACf,IAAe,GACf,IAAe,CAA0B+I,EAAE0gL,IAC3C,IAAe,CAAgCzpL,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAuCA,EAAE,GACxD,IAAe,CAAqCA,GAAG,GACvD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAqCA,EAAE,GACtD,IAAe,CAAmCA,GAAG,GACrD,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAAqCA,EAAE,GACtD,IAAe,CAAmCA,GAAG,GACrD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAqCA,EAAE,GACtD,IAAe,CAAmCA,GAAG,GACrD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAAyBA,EAAE,GAC1C,IAAe,CAAuBA,GAAG,GACzC,IAAe,GACf,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAAwB+I,EAz5P/C,SAA0B1vB,EAAM2G,GAC9B,MAAO,CACLqqC,MAAOhxC,EAAKisK,WAAW,GACvBt4J,QAAS3T,EAAKisK,WAAW,GACzBxkK,KAAM69K,GAAmBtlL,GAE5B,GAo5PO,IAAe,CAA6B2mB,GAAG,GAC/C,IAAe,CAA2B+I,EAv3PlD,SAA6B1vB,GAE3B,OADAA,EAAK0G,GAAK,EACmB,GAAtB1G,EAAKisK,WAAW,EACxB,EAo3PwEtlJ,EAAE,GACnE,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,GACf,IAAe,GACf,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA2B+I,EAAEm3J,IAC5C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA6BlgK,EAAE,GAC9C,IAAe,GACf,IAAe,CAA4B+I,EAAEkhK,IAC7C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA2BjqK,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA2BA,EAAE,GAC5C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAwB+I,EAr0H/C,SAA0B1vB,EAAM2G,EAAQoN,GACvC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EACfkyM,EAAMxxB,GAAUrnL,GAChB84M,EAAc94M,EAAKisK,WAAW,GAC9Bv9H,EAAI,CAACmqK,GACT,GADenqK,EAAE,GAAKoqK,EACnB/kM,EAAK2iM,YAAa,CACpB,IAAI9f,EAAU8U,GAA6B1rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAC/D26B,EAAE,GAAKkoJ,CACP,MAAM52L,EAAK0G,EAAIqnC,EAChB,OAAOW,CACP,GA4zHO,IAAe,CAAwBhf,EAzzH/C,SAA0B1vB,EAAM2G,EAAQoN,GACvC,IAAIg6B,EAAM/tC,EAAK0G,EAAIC,EAEf+nC,EAAI,CADE44I,GAAmBtnL,EAAM,KAEnC,GAAG+T,EAAK2iM,YAAa,CACpB,IAAI9f,EAAUiV,GAA8B7rM,EAAM+tC,EAAM/tC,EAAK0G,EAAGqN,GAChE26B,EAAE,GAAKkoJ,EACP52L,EAAK0G,EAAIqnC,CACT,MAAM/tC,EAAK0G,EAAIqnC,EAChB,OAAOW,CACP,GAgzHO,IAAe,GACf,IAAe,CAAoC/nB,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAAyBA,EAAE,GAC1C,IAAe,CAAuBA,GAAG,GACzC,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA2CA,EAAE,GAC5D,IAAe,CAAyCA,GAAG,GAC3D,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,GACf,IAAe,GACf,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,GACf,IAAe,CAAwB+I,EA30H/C,SAA0B1vB,GACzB,IAAIosM,EAAW,CAAC,EAEhB,OADAkE,GAAc5sM,SAAQ,SAAS4lC,GAAK8iK,EAAQ9iK,GAAKk+I,GAAWxnL,EAAW,IAChEosM,CACP,GAw0HO,IAAe,GACf,IAAe,GACf,IAAe,CAAkCzlL,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAA0B+I,EAnrIjD,WACC,GAmrIO,IAAe,CAAyB/I,EAAE,GAC1C,IAAe,CAAuBA,GAAG,GACzC,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,CAAwBA,EAAE,GACzC,IAAe,CAAsBA,GAAG,GACxC,IAAe,CAAyBA,EAAE,GAC1C,IAAe,CAAuBA,GAAG,GACzC,IAAe,CAAsB+I,EAt6H7C,SAAwB1vB,EAAM2G,GAC7B,IAAIonC,EAAM/tC,EAAK0G,EAAIC,EACfkyM,EAAMvxB,GAAmBtnL,EAAM,IAC/B+4M,EAAQryB,GAA2B1mL,GACnCm4J,EAAMmtB,GAAmBtlL,GACzBkhK,EAAUokB,GAAmBtlL,GAC7BsiH,EAAUgjE,GAAmBtlL,GACjCA,EAAK0G,EAAIqnC,EACT,IAAIW,EAAK,CAACmqK,IAAIA,EAAKE,MAAMA,EAAO5gD,IAAIA,EAAK71C,QAAQA,GAEjD,OADG4+C,IAASxyH,EAAEsiJ,QAAU9vB,GACjBxyH,CACP,GA45HO,IAAe,CAA0B/nB,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,GACf,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAyBA,EAAE,GAC1C,IAAe,CAAuBA,GAAG,GACzC,IAAe,GACf,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,GACf,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,GACf,IAAe,GACf,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAAiCA,EAAE,GAClD,IAAe,GACf,IAAe,GACf,IAAe,CAAwB+I,EAAEm3J,IACzC,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAAiClgK,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,GACf,IAAe,GACf,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,GACf,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA2BA,GAAG,GAC7C,IAAe,GACf,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,GACf,IAAe,CAAmCA,EAAE,GACpD,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAAiCA,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,GACf,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,GACf,IAAe,CAA2BA,EAAE,GAC5C,IAAe,CAAyBA,GAAG,GAC3C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA0BA,EAAE,GAC3C,IAAe,CAAwBA,GAAG,GAC1C,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,GACf,IAAe,CAAkCA,EAAE,GACnD,IAAe,CAAgCA,GAAG,GAClD,IAAe,CAA8BA,EAAE,GAC/C,IAAe,CAA4BA,GAAG,GAC9C,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,CAA8B+I,EAAEw1K,IAC/C,IAAe,CAAiCv+K,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAA6BA,EAAE,EAAG+I,EAtmPzD,SAA+B1vB,GAC9B,IAAI6nE,EAAM,CAAC,EACXA,EAAIy8H,QAAUtkM,EAAKisK,WAAW,GAC9B,IAAI4sC,EAAMvxB,GAAmBtnL,EAAM,IAInC,OAHA6nE,EAAIgxI,IAAMA,EAAIlwL,EACdk/C,EAAIwQ,IAAM0qG,GAAY81B,EAAIlwL,GAC1B3oB,EAAK0G,GAAK,GACHmhE,CACP,GA+lPO,IAAe,CAA2BlhD,GAAG,GAC7C,IAAe,CAA4B+I,EAAEs2J,IAC7C,IAAe,CAAgCr/J,EAAE,GACjD,IAAe,GACf,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAA6BA,EAAE,GAC9C,IAAe,CAA2BA,GAAG,GAC7C,IAAe,CAAqCA,EAAE,GACtD,IAAe,GACf,IAAe,CAAmCA,GAAG,GACrD,IAAe,CAA2CA,EAAE,GAC5D,IAAe,CAAmCA,EAAE,GACpD,IAAe,GACf,IAAe,CAAiCA,GAAG,GACnD,IAAe,CAAuB+I,EAh0G9C,SAAyB1vB,EAAM2G,GAG9B,OAFA3G,EAAK0G,GAAK,GAEH,CAAEe,KADE69K,GAAmBtlL,GAE9B,GA6zGO,IAAe,GACf,IAAe,CAAiC2mB,EAAE,GAClD,IAAe,CAA+BA,GAAG,GACjD,IAAe,CAAgCA,EAAE,GACjD,IAAe,CAA8BA,GAAG,GAChD,IAAe,CAAoCA,EAAE,GACrD,IAAe,CAAkCA,GAAG,GACpD,IAAe,GACf,IAAe,CAA+BA,EAAE,GAChD,IAAe,GACf,IAAe,CAA6BA,GAAG,GAC/C,IAAe,GACf,IAAe,CAA6BA,EAAE,GAC9C,IAAe,GACf,IAAe,CAA2BA,GAAG,GAC7C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,CAA+BA,EAAE,GAChD,IAAe,CAA6BA,GAAG,GAC/C,IAAe,CAA4BA,EAAE,GAC7C,IAAe,CAA0BA,GAAG,GAC5C,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,CAAsCA,EAAE,GACvD,KAAe,CAAoCA,GAAG,GACtD,KAAe,GACf,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAAmCA,EAAE,GACpD,KAAe,CAAiCA,GAAG,GACnD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,GACf,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAA6CA,EAAE,GAC9D,KAAe,CAA2CA,GAAG,GAC7D,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,GACf,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAAuB+I,EAx9H9C,WACC,GAw9HO,KAAe,CAA6B/I,EAAE,GAC9C,KAAe,GACf,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,CAAqCA,EAAE,GACtD,KAAe,CAAmCA,GAAG,GACrD,KAAe,GACf,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,CAA2BA,EAAE,GAC5C,KAAe,CAAyBA,GAAG,GAC3C,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAAmCA,EAAE,GACpD,KAAe,CAAiCA,GAAG,GACnD,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,CAA4BA,EAAE,GAC7C,KAAe,CAA0BA,GAAG,GAC5C,KAAe,GACf,KAAe,CAAyCA,EAAE,GAC1D,KAAe,CAAuCA,GAAG,GACzD,KAAe,CAA2CA,EAAE,GAC5D,KAAe,CAAyCA,GAAG,GAC3D,KAAe,CAA0CA,EAAE,GAC3D,KAAe,CAAwCA,GAAG,GAC1D,KAAe,CAAyCA,EAAE,GAC1D,KAAe,CAAuCA,GAAG,GACzD,KAAe,CAAwCA,EAAE,GACzD,KAAe,CAAsCA,GAAG,GACxD,KAAe,GACf,KAAe,CAA2CA,EAAE,GAC5D,KAAe,GACf,KAAe,CAAyCA,GAAG,GAC3D,KAAe,CAAuCA,EAAE,GACxD,KAAe,CAAqCA,GAAG,GACvD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAA+CA,EAAE,GAChE,KAAe,CAA6CA,GAAG,GAC/D,KAAe,CAA6BA,EAAE,GAC9C,KAAe,CAA2BA,GAAG,GAC7C,KAAe,GACf,KAAe,CAA4BA,EAAE,GAC7C,KAAe,CAA0BA,GAAG,GAC5C,KAAe,CAA6BA,EAAE,GAC9C,KAAe,CAA2BA,GAAG,GAC7C,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,GACf,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,GACf,KAAe,CAAqCA,EAAE,GACtD,KAAe,CAAmCA,GAAG,GACrD,KAAe,CAA8CA,EAAE,GAC/D,KAAe,CAA4CA,GAAG,GAC9D,KAAe,CAA4CA,EAAE,GAC7D,KAAe,CAA0CA,GAAG,GAC5D,KAAe,CAAmCA,EAAE,GACpD,KAAe,CAAiCA,GAAG,GACnD,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,GACf,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,CAAyCA,EAAE,GAC1D,KAAe,CAAuCA,GAAG,GACzD,KAAe,GACf,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,CAA2BA,GAAG,GAC7C,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAA6BA,EAAE,GAC9C,KAAe,CAA2BA,GAAG,GAC7C,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAAqCA,EAAE,GACtD,KAAe,CAAmCA,GAAG,GACrD,KAAe,GACf,KAAe,CAA4BA,EAAE,GAC7C,KAAe,CAA0BA,GAAG,GAC5C,KAAe,GACf,KAAe,CAAqCA,EAAE,GACtD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAA4CA,EAAE,GAC7D,KAAe,CAA0CA,GAAG,GAC5D,KAAe,GACf,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,GACf,KAAe,GACf,KAAe,CAA8BA,EAAE,GAC/C,KAAe,CAA4BA,GAAG,GAC9C,KAAe,CAA2BA,EAAE,GAC5C,KAAe,CAAyBA,GAAG,GAC3C,KAAe,GACf,KAAe,GACf,KAAe,CAAmCA,EAAE,GACpD,KAAe,CAAiCA,GAAG,GACnD,KAAe,GACf,KAAe,GACf,KAAe,CAA0CA,EAAE,GAC3D,KAAe,CAAwCA,GAAG,GAC1D,KAAe,GACf,KAAe,GACf,KAAe,CAAsCA,EAAE,GACvD,KAAe,CAAoCA,GAAG,GACtD,KAAe,GACf,KAAe,CAAgDA,EAAE,GACjE,KAAe,CAA8CA,GAAG,GAChE,KAAe,GACf,KAAe,CAAsCA,EAAE,GACvD,KAAe,CAAoCA,GAAG,GACtD,KAAe,CAAqCA,EAAE,GACtD,KAAe,CAAmCA,GAAG,GACrD,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,GACf,KAAe,GACf,KAAe,CAAmCA,EAAE,GACpD,KAAe,CAAiCA,GAAG,GACnD,KAAe,GACf,KAAe,CAA6CA,EAAE,GAC9D,KAAe,CAA2CA,GAAG,GAC7D,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAA2CA,EAAE,GAC5D,KAAe,CAAyCA,GAAG,GAC3D,KAAe,GACf,KAAe,CAA4BA,EAAE,GAC7C,KAAe,CAA0BA,GAAG,GAC5C,KAAe,GACf,KAAe,CAAqCA,EAAE,GACtD,KAAe,CAAmCA,GAAG,GACrD,KAAe,GACf,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,GACf,KAAe,CAA+BA,EAAE,GAChD,KAAe,CAA6BA,GAAG,GAC/C,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,GACf,KAAe,CAAwCA,EAAE,GACzD,KAAe,CAAsCA,GAAG,GACxD,KAAe,GACf,KAAe,CAAgCA,EAAE,GACjD,KAAe,CAA8BA,GAAG,GAChD,KAAe,CAAsCA,EAAE,GACvD,KAAe,CAAoCA,GAAG,GACtD,KAAe,CAAmCA,EAAE,GACpD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAwCA,EAAE,GACzD,KAAe,CAAsCA,GAAG,GACxD,KAAe,CAAuCA,EAAE,GACxD,KAAe,CAAqCA,GAAG,GACvD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAAoCA,EAAE,GACrD,KAAe,CAAkCA,GAAG,GACpD,KAAe,CAAiCA,EAAE,GAClD,KAAe,CAA+BA,GAAG,GACjD,KAAe,GACf,KAAe,CAAsCA,EAAE,GACvD,KAAe,CAAoCA,GAAG,GACtD,KAAe,CAAuCA,EAAE,GACxD,KAAe,CAAqCA,GAAG,GACvD,KAAe,GACf,KAAe,GACf,KAAe,GACf,KAAe,CAAuCA,EAAE,GACxD,KAAe,CAAqCA,GAAG,GACvD,KAAe,GACf,KAAe,CAAkCA,EAAE,GACnD,KAAe,CAAgCA,GAAG,GAClD,KAAe,GACf,KAAe,GACf,MAAe,CAAEiC,EAAE,KAkd3B,SAASu0K,GAAe7wF,EAAiBjoG,EAAiB0M,EAASpK,GAClE,IAAI+R,EAAerU,EACnB,IAAGy/B,MAAMprB,GAAT,CACA,IAAI0+B,EAAMzwC,IAAWoK,GAAS,IAAIpK,QAAU,EACxC+nC,EAAI49D,EAAGr1D,KAAK,GAChBvI,EAAEk9H,YAAY,EAAGlzJ,GACjBg2B,EAAEk9H,YAAY,EAAGx0H,GACOA,EAAM,GAAKupI,GAAO5vK,IAAUu7F,EAAGplG,KAAK6J,EALzC,CAMnB,CAyBD,SAASioM,GAAgBnxI,EAAK8F,EAAcrmE,GAM3C,OALIugE,IAAKA,EAAMsoG,GAAQ,IACvBtoG,EAAI+jG,YAAY,EAAGj+F,GACnB9F,EAAI+jG,YAAY,EAAGtkK,GACnBugE,EAAI+jG,YAAY,EAAG,GACnB/jG,EAAI+jG,YAAY,EAAG,GACZ/jG,CACP,CAkBD,SAASoxI,GAAoB3sG,EAAiBm2E,EAAex6I,EAAc7wB,GAC1E,GAAa,MAAVqrK,EAAK/yK,EAAW,OAAO+yK,EAAK/pK,GAC9B,IAAK,IAAK,IAAK,IACd,IAAIhJ,EAAc,KAAV+yK,EAAK/pK,EAAW0jK,GAAQ9iI,GAAUmpI,EAAK/yK,IAAM+yK,EAAK/yK,EAK1D,YAJIA,IAAQ,EAAFA,IAAUA,GAAK,GAAOA,EAAI,MACnCytL,GAAe7wF,EAAI,EAjxZvB,SAAwB3+B,EAAcrmE,EAAc3D,GACnD,IAAIkkE,EAAMsoG,GAAQ,GAGlB,OAFA6oC,GAAgBnxI,EAAK8F,EAAGrmE,GACxBugE,EAAI+jG,YAAY,EAAGjoK,GACZkkE,CACP,CA4wZ8BqxI,CAAejxK,EAAG7wB,EAAG1H,IAEhDytL,GAAe7wF,EAAI,EAlyZvB,SAAwB3+B,EAAcrmE,EAAc3D,GACnD,IAAIkkE,EAAMsoG,GAAQ,IAGlB,OAFA6oC,GAAgBnxI,EAAK8F,EAAGrmE,GACxBugE,EAAI+jG,YAAY,EAAGjoK,EAAK,KACjBkkE,CACP,CA6xZ8BsxI,CAAelxK,EAAE7wB,EAAG1H,KAEjD,IAAK,IAAK,IAAK,IAAwE,YAAnEytL,GAAe7wF,EAAI,EAzBzC,SAAyB3+B,EAAcrmE,EAAc3D,EAAK+U,GACzD,IAAImvD,EAAMsoG,GAAQ,GAGlB,OAFA6oC,GAAgBnxI,EAAK8F,EAAGrmE,GACxB0nL,GAAUrrL,EAAK+U,GAAK,IAAKmvD,GAClBA,CACP,CAoBgDuxI,CAAgBnxK,EAAG7wB,EAAGqrK,EAAK/yK,EAAG+yK,EAAK/pK,IAElF,IAAK,IAAK,IAAK,MAEd,YADAykL,GAAe7wF,EAAI,EApBtB,SAA0B3+B,EAAcrmE,EAAc3D,GACrD,IAAIkkE,EAAMsoG,GAAQ,EAAI,EAAExsK,EAAIgD,QAI5B,OAHAqyM,GAAgBnxI,EAAK8F,EAAGrmE,GACxBugE,EAAI+jG,YAAY,EAAGjoK,EAAIgD,QACvBkhE,EAAI+jG,YAAYjoK,EAAIgD,OAAQhD,EAAK,QAC1BkkE,EAAInhE,EAAImhE,EAAIlhE,OAASkhE,EAAIz7D,MAAM,EAAGy7D,EAAInhE,GAAKmhE,CAClD,CAc6BwxI,CAAiBpxK,EAAG7wB,GAAIqrK,EAAK/yK,GAAG,IAAItD,MAAM,EAAE,OAGzE+wL,GAAe7wF,EAAI,EAAQ0sG,GAAgB,KAAM/wK,EAAG7wB,GACpD,CAyBD,SAASkiM,GAAgBtgH,EAAiBjlF,GACzC,IAAI26B,EAAI36B,GAAQ,CAAC,EAIjB,IAFA,IAAIu4F,EAAK01E,KACLxb,EAAM,EACF//J,EAAE,EAAEA,EAAEuyF,EAAGqrF,WAAW19K,SAASF,EAAMuyF,EAAGqrF,WAAW59K,IAAMioC,EAAEy1I,QAAO3d,EAAI//J,GAC5E,GAAU,GAAP+/J,GAAc93H,EAAEy1I,OAASnrF,EAAGqrF,WAAW,IAAM31I,EAAEy1I,MAAO,MAAM,IAAIt6K,MAAM,oBAAsB6kC,EAAEy1I,OAMjG,OALAgZ,GAAe7wF,EAAe,GAAV59D,EAAEk0I,KAAY,KAAoB,GAAVl0I,EAAEk0I,KAAY,IAAS,EAAUyN,GAAUr3F,EAAI,GAAMtqD,IA9BlG,SAAwB49D,EAAiB18C,EAAkB42G,EAAgBzyJ,GAC1E,IACmDskE,EAD/CosG,EAAQx7K,MAAMkD,QAAQyjD,GACtBy4C,EAAQu7E,GAAkBh0H,EAAG,SAAW,MAAuBulB,EAAK,GAAIy9G,EAAyB,GACrG,GAAGvqF,EAAMx5F,EAAEvH,EAAI,KAAQ+gG,EAAMx5F,EAAE8+D,EAAI,MAAQ,CAC1C,GAAG55D,EAAKo4K,IAAK,MAAM,IAAItiL,MAAM,UAAY+lD,EAAG,SAAW,MAAQ,oCAC/Dy4C,EAAMx5F,EAAEvH,EAAI/I,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG,KAChC+gG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG,OAChC+wE,EAAMqrG,GAAar7E,EACnB,CACD,IAAI,IAAIpgE,EAAIogE,EAAM1/E,EAAEglD,EAAG1lC,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,EAAG,CAC3CktC,EAAK+tG,GAAWj7I,GAChB,IAAI,IAAI7wB,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CACxC6wB,IAAMogE,EAAM1/E,EAAEglD,IAAGilH,EAAKx7K,GAAK+rK,GAAW/rK,IACzCihE,EAAMu6G,EAAKx7K,GAAK+9D,EAChB,IAAIstG,EAAOgC,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAKw4C,EAAGyoB,GACnCoqG,GAEJw2B,GAAoB3sG,EAAIm2E,EAAMx6I,EAAG7wB,EACjC,CACD,CACD,CAYAmiM,CAAejtG,EAAItT,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAOA,EAAK93H,GAEvDyuJ,GAAe7wF,EAAI,IACZA,EAAGv+D,KACV,CAED,SAASyrK,GAAkBltG,EAAItsG,EAAM+T,GACpCopL,GAAe7wF,EAAI,GAr+apB,SAAoBtsG,EAAM+T,GACzB,IAAItM,EAAOzH,EAAKyH,MAAQ,QACpBgpL,EAAM18K,GAAsB,GAAbA,EAAK6uK,KACpBl0I,EAAIyhI,GADkCsgB,EAAM,GAAKhpL,EAAKd,OAAW,GAAK,EAAIc,EAAKd,QAUnF,OARA+nC,EAAEk9H,YAAY,EAAqB,IAAjB5rK,EAAKksK,IAAM,KAC7Bx9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,KACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAGnkK,EAAKd,QAClB8pL,GAAI/hJ,EAAEk9H,YAAY,EAAG,GACzBl9H,EAAEk9H,aAAa6kB,EAAK,EAAI,GAAKhpL,EAAKd,OAAQc,EAAOgpL,EAAK,OAAS,WACxD/hJ,CACP,CAw9asC+qK,CAAW,CAChDvtC,GAAG,GACH/jE,MAAO,CAACw/E,MAAM,GACdlgL,KAAM,QACNo5L,OAAQ,EACRE,OAAQ,SACNhtL,GACH,CA2CD,SAAS2lM,GAAoBptG,EAAIsmF,GAChC,GAAIA,EAAJ,CACA,IAAIxiB,EAAM,EACVwiB,EAAKlvL,SAAQ,SAAS00F,EAAKouE,KACrB4J,GAAO,KAAOh4E,GAClB+kG,GAAe7wF,EAAI,IAt9ZtB,SAAuBlU,EAAKouE,GAC3B,IAAI93H,EAAIyhI,GAAQ,IAChBzhI,EAAEk9H,YAAY,EAAGpF,GACjB93H,EAAEk9H,YAAY,EAAGpF,GACjB93H,EAAEk9H,YAAY,EAAe,IAAZxzE,EAAIn9D,OACrByT,EAAEk9H,YAAY,EAAG,GACjB,IAAIl8I,EAAI,EAMR,OALG0oE,EAAI6+F,SAAQvnK,GAAK,GACpBgf,EAAEk9H,YAAY,EAAGl8I,GACjBA,EAAI0oE,EAAI08C,OAAS,EACjBpmG,EAAEk9H,YAAY,EAAGl8I,GACjBgf,EAAEk9H,YAAY,EAAG,GACVl9H,CACP,CAy8Z2CirK,CAAc1N,GAAUzlC,EAAKpuE,GAAMouE,GAE7E,GANe,CAOhB,CAED,SAASozC,GAAoBttG,EAAiBm2E,EAAex6I,EAAc7wB,EAAcrD,GACxF,IAAIs3L,EAAK,GAAKkB,GAAex4L,EAAK8rL,QAASpd,EAAM1uK,GACjD,GAAa,MAAV0uK,EAAK/yK,GAAc+yK,EAAK93E,GAI3B,GAAG83E,EAAK93E,GAAIwyF,GAAe7wF,EAAI,EAAsB8+F,GAAc3oB,EAAMx6I,EAAG7wB,EAAGrD,EAAMs3L,SAChF,OAAO5oB,EAAK/pK,GAChB,IAAK,IAAK,IAAK,IAGdykL,GAAe7wF,EAAI,IAp0atB,SAAsBrkE,EAAc7wB,EAAc1H,EAAG27L,GACpD,IAAI38J,EAAIyhI,GAAQ,IAGhB,OAFA2f,GAAc7nJ,EAAG7wB,EAAGi0L,EAAI38J,GACxB+4I,GAAW/3K,EAAGg/B,GACPA,CACP,CA+za0CmrK,CAAa5xK,EAAG7wB,EAFtC,KAAVqrK,EAAK/pK,EAAW0jK,GAAQ9iI,GAAUmpI,EAAK/yK,IAAM+yK,EAAK/yK,EAEI27L,IAC9D,MACD,IAAK,IAAK,IAAK,IACdlO,GAAe7wF,EAAI,IAt1atB,SAAuBrkE,EAAc7wB,EAAc1H,EAAG27L,EAAet3L,EAAM2E,GAC1E,IAAIg2B,EAAIyhI,GAAQ,GAGhB,OAFA2f,GAAc7nJ,EAAG7wB,EAAGi0L,EAAI38J,GACxBsgJ,GAAUt/K,EAAGgJ,EAAGg2B,GACTA,CACP,CAi1a2CorK,CAAc7xK,EAAG7wB,EAAGqrK,EAAK/yK,EAAG27L,EAAIt3L,EAAM0uK,EAAK/pK,IACpF,MAED,IAAK,IAAK,IAAK,MACd,GAAG3E,EAAK8pL,QAEPV,GAAe7wF,EAAI,IAhibvB,SAAwBrkE,EAAc7wB,EAAc1H,EAAc27L,GACjE,IAAI38J,EAAIyhI,GAAQ,IAGhB,OAFA2f,GAAc7nJ,EAAG7wB,EAAGi0L,EAAI38J,GACxBA,EAAEk9H,YAAY,EAAGl8J,GACVg/B,CACP,CA2hb6CqrK,CAAe9xK,EAAG7wB,EADjD20L,GAAWh4L,EAAKk5L,QAASxqB,EAAK/yK,EAAGqE,EAAKm5L,YACoB7B,SAC/DlO,GAAe7wF,EAAI,IAhhb7B,SAAqBrkE,EAAc7wB,EAAc1H,EAAc27L,EAAet3L,GAC7E,IAAIimM,GAAMjmM,GAAqB,GAAbA,EAAK6uK,KACnBl0I,EAAIyhI,IAAkB6pC,EAAV,GAAiB,EAAIA,GAAMtqM,EAAE/I,QAK7C,OAJAmpL,GAAc7nJ,EAAG7wB,EAAGi0L,EAAI38J,GACxBA,EAAEk9H,YAAY,EAAGl8J,EAAE/I,QAChBqzM,GAAItrK,EAAEk9H,YAAY,EAAG,GACxBl9H,EAAEk9H,aAAa,EAAIouC,GAAMtqM,EAAE/I,OAAQ+I,EAAGsqM,EAAK,UAAY,QAChDtrK,CACP,CAwgbgDurK,CAAYhyK,EAAG7wB,GAAIqrK,EAAK/yK,GAAG,IAAItD,MAAM,EAAE,KAAMi/L,EAAIt3L,IAC/F,MACD,QACCopL,GAAe7wF,EAAI,IAAoBwjF,GAAc7nJ,EAAG7wB,EAAGi0L,SArB5DlO,GAAe7wF,EAAI,IAAoBwjF,GAAc7nJ,EAAG7wB,EAAGi0L,GAuB5D,CAGD,SAAS6O,GAAe1zC,EAAgBzyJ,EAAMilF,GAC7C,IAMI3gB,EANAi0B,EAAK01E,KACLr5J,EAAIqwE,EAAGqrF,WAAW7d,GAAM52G,EAAKopC,EAAGsrF,OAAO37J,IAAM,CAAC,EAC9CwxL,GAAsBnhH,GAAI,CAAC,GAAGy0G,UAAU,CAAC,EACzC2M,GAAwBD,EAAI71B,QAAQ,IAAI9d,IAAM,CAAC,EAC/Cie,EAAQx7K,MAAMkD,QAAQyjD,GACtBoqJ,EAAkB,GAAbjmM,EAAK6uK,KACMztG,EAAK,GAAIy9G,EAAyB,GAClDvqF,EAAQu7E,GAAkBh0H,EAAG,SAAW,MACxCyqJ,EAAWL,EAAK,MAAQ,MAC5B,GAAG3xG,EAAMx5F,EAAEvH,EAAI,KAAQ+gG,EAAMx5F,EAAE8+D,GAAK0sI,EAAU,CAC7C,GAAGtmM,EAAKo4K,IAAK,MAAM,IAAItiL,MAAM,UAAY+lD,EAAG,SAAW,MAAQ,oCAC/Dy4C,EAAMx5F,EAAEvH,EAAI/I,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG,KAChC+gG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKykB,IAAIqlF,EAAMx5F,EAAEvH,EAAG+yM,EAAS,EACzC,CAEDld,GAAe7wF,EAAI,KAAQ+jF,GAAUr3F,EAAI,GAAMjlF,IAE/CopL,GAAe7wF,EAAI,GAAuByiF,GAAY,IACtDoO,GAAe7wF,EAAI,GAAwByiF,GAAY,MACvDoO,GAAe7wF,EAAI,GAA0BuiF,IAAU,IACvDsO,GAAe7wF,EAAI,GAAuBuiF,IAAU,IACpDsO,GAAe7wF,EAAI,GAAwBm7E,GAAW,OACtD0V,GAAe7wF,EAAI,GAA6BuiF,IAAU,IAC1DsO,GAAe7wF,EAAI,GAA0BuiF,IAAU,IACvDsO,GAAe7wF,EAAI,GAAwBuiF,IAAU,IACrDsO,GAAe7wF,EAAI,IAAsByiF,GAAY,IACrDoO,GAAe7wF,EAAI,IAj5apB,SAAoBguG,GACnB,IAAI5rK,EAAIyhI,GAAQ,GAIhB,OAHAzhI,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG0uC,EAAK,GAAKA,EAAK,GAAK,EAAI,GACzC5rK,EAAEk9H,YAAY,EAAG0uC,EAAK,GAAKA,EAAK,GAAK,EAAI,GAClC5rK,CACP,CA24asC6rK,CAAW,CAAC,EAAE,KAIpDpd,GAAe7wF,EAAI,IAAsBuiF,IAAU,IACnDsO,GAAe7wF,EAAI,IAAsBuiF,IAAU,IAEhDmrB,GAAIN,GAAoBptG,EAAI18C,EAAG,UAElCutI,GAAe7wF,EAAI,IArhbpB,SAA0BjE,EAAOt0F,GAChC,IAAIu0B,EAAiB,GAAbv0B,EAAK6uK,MAAc7uK,EAAK6uK,KAAW,EAAJ,EACnCl0I,EAAIyhI,GAAQ,EAAE7nI,EAAI,GAMtB,OALAoG,EAAEk9H,YAAYtjI,EAAG+/D,EAAM1/E,EAAEglD,GACzBj/B,EAAEk9H,YAAYtjI,EAAG+/D,EAAMx5F,EAAE8+D,EAAI,GAC7Bj/B,EAAEk9H,YAAY,EAAGvjE,EAAM1/E,EAAErhB,GACzBonC,EAAEk9H,YAAY,EAAGvjE,EAAMx5F,EAAEvH,EAAI,GAC7BonC,EAAEk9H,YAAY,EAAG,GACVl9H,CACP,CA4gb0B8rK,CAAiBnyG,EAAOt0F,IAG/CimM,IAAIpqJ,EAAG,UAAY,IACtB,IAAI,IAAI3nB,EAAIogE,EAAM1/E,EAAEglD,EAAG1lC,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,EAAG,CAC3CktC,EAAK+tG,GAAWj7I,GAChB,IAAI,IAAI7wB,EAAIixF,EAAM1/E,EAAErhB,EAAG8P,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CACxC6wB,IAAMogE,EAAM1/E,EAAEglD,IAAGilH,EAAKx7K,GAAK+rK,GAAW/rK,IACzCihE,EAAMu6G,EAAKx7K,GAAK+9D,EAChB,IAAIstG,EAAOgC,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAKw4C,EAAGyoB,GACnCoqG,IAEJm3B,GAAoBttG,EAAIm2E,EAAMx6I,EAAG7wB,EAAGrD,GACjCimM,GAAMv3B,EAAK/7K,GAAGkpD,EAAG,UAAU1oD,KAAK,CAACmxE,EAAKoqG,EAAK/7K,IAC9C,CACD,CACD,IAAI8mM,EAAmB4M,EAAO1M,UAAY0M,EAAO3yM,MAAQkhB,EAazD,OAXGqxL,GAAI7c,GAAe7wF,EAAI,IAjpb3B,SAAuBtJ,GACtB,IAAIt0D,EAAIyhI,GAAQ,IAAKzgJ,EAAI,KAOzB,OANGszE,GAAQA,EAAKqrG,MAAK3+K,GAAK,IAC1Bgf,EAAEk9H,YAAY,EAAGl8I,GACjBgf,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,IACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACVl9H,CACP,CAwobgD+rK,EAAeN,EAAIhM,OAAO,IAAI,KAE3E6L,IAAOpqJ,EAAG,YAAY,IAAIjpD,QAAQw2L,GAAe7wF,EAAI,IAzuazD,SAA0B8iG,GACzB,IAAI1gK,EAAIyhI,GAAQ,EAAoB,EAAhBi/B,EAAOzoM,QAC3B+nC,EAAEk9H,YAAY,EAAGwjC,EAAOzoM,QACxB,IAAI,IAAIF,EAAI,EAAGA,EAAI2oM,EAAOzoM,SAAUF,EAAG2pL,GAAYgf,EAAO3oM,GAAIioC,GAC9D,OAAOA,CACP,CAouaiFgsK,CAAiB9qJ,EAAG,aAElGoqJ,GA1GJ,SAA+B1tG,EAAiB18C,GAC/C,IAAI,IAAI3nB,EAAE,EAAGA,EAAE2nB,EAAG,UAAUjpD,SAAUshC,EAAG,CACxC,IAAI0yK,EAAK/qJ,EAAG,UAAU3nB,GACtBk1J,GAAe7wF,EAAI,IAAoBwkF,GAAY6pB,IAChDA,EAAG,GAAG3pB,SAASmM,GAAe7wF,EAAI,KAA2BykF,GAAmB4pB,GACnF,QACM/qJ,EAAG,SACV,CAmGOgrJ,CAAsBtuG,EAAI18C,GAEjCutI,GAAe7wF,EAAI,IAAuBmjF,GAAsB+d,IAE7DwM,GArIJ,SAAoB1tG,EAAI18C,GAEvB,IAAIlhB,EAAIyhI,GAAQ,IAChBzhI,EAAEk9H,YAAY,EAAG,MAAQl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAC/Dl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAC3DuxB,GAAe7wF,EAAI,KAAsB59D,IAEzCA,EAAIyhI,GAAQ,KACVvE,YAAY,EAAG,MAAQl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAC/Dl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAC3Dl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAAIl9H,EAAEk9H,YAAY,EAAG,GAC3DwkB,GAAYxM,GAAkBh0H,EAAG,SAAS,MAAOlhB,GACjDA,EAAEk9H,YAAY,EAAG,GACjBuxB,GAAe7wF,EAAI,KAAmB59D,EACtC,CAuHOmsK,CAAWvuG,EAAI18C,GAEtButI,GAAe7wF,EAAI,IACZA,EAAGv+D,KACV,CAGD,SAAS+sK,GAAmB9hH,EAAiBwqE,EAAMzvJ,GAClD,IAAI+5D,EAAIk0G,KACJm4B,GAAsBnhH,GAAI,CAAC,GAAGy0G,UAAU,CAAC,EACzCsN,EAA+BZ,EAAI71B,QAAQ,GAC3C02B,EAA0Bb,EAAI/G,SAAS,GACvC4G,EAAkB,GAAbjmM,EAAK6uK,KAAW6N,EAAkB,GAAb18K,EAAK6uK,MACnCua,GAAervH,EAAG,KAAQuiH,GAAUr3F,EAAI,EAAMjlF,IAC1B,OAAjBA,EAAKq1K,UAAmB+T,GAAervH,EAAG,KAC7CqvH,GAAervH,EAAG,IAA2BksI,EAAKjrB,GAAY,MAAU,MACxEoO,GAAervH,EAAG,IAjxcnB,SAAqBllD,EAAG8lB,GAASA,IAAGA,EAAEyhI,GAAQvnJ,IAAI,IAAI,IAAIpH,EAAE,EAAGA,EAAEoH,IAAKpH,EAAGktB,EAAEk9H,YAAY,EAAG,GAAI,OAAOl9H,CAAI,CAixcpEusK,CAAY,IAC7CxqB,GAAI0M,GAAervH,EAAG,KACtB2iH,GAAI0M,GAAervH,EAAG,KACzBqvH,GAAervH,EAAG,KAClBqvH,GAAervH,EAAG,GAv0bnB,SAA2BnlD,EAAc5U,GACxC,IAAIimM,GAAMjmM,GAAqB,GAAbA,EAAK6uK,KACnBl0I,EAAIyhI,GAAQ6pC,EAAK,IAAM,IAK3B,IAJAtrK,EAAEk9H,YAAyB,GAAb73J,EAAK6uK,KAAY,EAAI,EAAG,GACnCo3B,GAAItrK,EAAEk9H,YAAY,EAAG,GACxBl9H,EAAEk9H,YAAY,EAAG,WACjBl9H,EAAEk9H,YAAY,EAAI,SAAcouC,EAAK,EAAI,YACnCtrK,EAAEhoC,EAAIgoC,EAAE/nC,QAAQ+nC,EAAEk9H,YAAY,EAAIouC,EAAK,EAAI,IACjD,OAAOtrK,CACP,CA8zb4CwsK,CAAkB,EAAWnnM,IAEzEopL,GAAervH,EAAG,GAAuBihH,GAAYirB,EAAK,KAAS,OAEhEA,GAAI7c,GAAervH,EAAG,IAAkBihH,GAAY,IACpDirB,GAAI7c,GAAervH,EAAG,KACzBqvH,GAAervH,EAAG,IA5ianB,SAAuBllD,GAEtB,IADA,IAAIi/C,EAAMsoG,GAAQ,EAAIvnJ,GACdniB,EAAI,EAAGA,EAAImiB,IAAKniB,EAAGohE,EAAI+jG,YAAY,EAAGnlK,EAAE,GAChD,OAAOohE,CACP,CAwiawCszI,CAAcniH,EAAGqrF,WAAW19K,SACjEqzM,GAAMhhH,EAAGu0G,QAAQpQ,GAAervH,EAAG,KAEnCksI,GAAMhhH,EAAGu0G,SAEXpQ,GAAervH,EAAG,IAAuB2hH,GADlBurB,EAAItN,UAAY,iBAGxCvQ,GAAervH,EAAG,IAAkCihH,GAAY,KAIhEoO,GAAervH,EAAG,GAAyB+gH,IAAU,IACrDsO,GAAervH,EAAG,GAAsB+gH,IAAU,IAClDsO,GAAervH,EAAG,GAAuBihH,GAAY,IAClDirB,GAAI7c,GAAervH,EAAG,IAAuB+gH,IAAU,IACvDmrB,GAAI7c,GAAervH,EAAG,IAA2BihH,GAAY,IAChEoO,GAAervH,EAAG,GAttbnB,WACC,IAAIp/B,EAAIyhI,GAAQ,IAUhB,OATAzhI,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,OACjBl9H,EAAEk9H,YAAY,EAAG,OACjBl9H,EAAEk9H,YAAY,EAAG,IACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,KACVl9H,CACP,CA0sbwC0sK,IACxCje,GAAervH,EAAG,GAAqB+gH,IAAU,IACjDsO,GAAervH,EAAG,IAAsBihH,GAAY,IACpDoO,GAAervH,EAAG,GAAuB+gH,GAAwB,QAlrIlE,SAAkB71F,GAEjB,OAAIA,EAAGy0G,UACHz0G,EAAGy0G,SAAS2F,SACT/0B,GAAarlF,EAAGy0G,SAAS2F,QAAQpuC,UAAY,OAF5B,OAGxB,CA6qImDq2C,CAASriH,KAC5DmkG,GAAervH,EAAG,GAA4B+gH,IAAU,IACrDmrB,GAAI7c,GAAervH,EAAG,IAAyB+gH,IAAU,IAC5DsO,GAAervH,EAAG,IAAuBihH,GAAY,IAErDyqB,GAAkB1rI,EAAGkrB,EAAIjlF,GA/L1B,SAA0Bu4F,EAAIozF,EAAkB3rL,GAC3C2rL,GACJ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAO,GAAgB,MAAMh8L,SAAQ,SAASiqE,GAEpE,IAAI,IAAIlnE,EAAIknE,EAAE,GAAIlnE,GAAKknE,EAAE,KAAMlnE,EAAe,MAATi5L,EAAGj5L,IAAY02L,GAAe7wF,EAAI,KAAqBkkF,GAAa/pL,EAAGi5L,EAAGj5L,GAAIsN,GACnH,GACD,CA0LAunM,CAAiBxtI,EAAGkrB,EAAGymG,IAAK1rL,GAxK7B,SAA6Bu4F,EAAIv4F,GAChC,IAAI,IAAItN,EAAI,EAAGA,EAAI,KAAMA,EAAG02L,GAAe7wF,EAAI,IAAiBokF,GAAS,CAAC3M,SAAS,EAAGlrG,OAAM,GAAO,EAAG9kE,IACtGA,EAAK8rL,QAAQn8L,SAAQ,SAAS4D,GAC7B61L,GAAe7wF,EAAI,IAAiBokF,GAASppL,EAAG,EAAGyM,GACnD,GACD,CAoKAwnM,CAAoBztI,EAAG/5D,GAEpBimM,GAAI7c,GAAervH,EAAG,IAAuB+gH,IAAU,IAC1D,IA5pasBngJ,EA4palBl5B,EAAIs4D,EAAE//B,MAEN32B,EAAI4qK,KAELg4B,GAAI7c,GAAe/lL,EAAG,KA/parBs3B,IAAGA,EAAIyhI,GAAQ,IACnBzhI,EAAEk9H,YAAY,EAAG,GACjBl9H,EAAEk9H,YAAY,EAAG,GACVl9H,IAgqaJsrK,GAAMjmM,EAAKk5L,SA/Tf,SAA6B3gG,EAAiBjoG,EAAiB0M,EAASpK,GACvE,IAAIywC,EAAMzwC,IAAWoK,GAAS,IAAIpK,QAAU,EAC5C,GAAGywC,GAAO,KAAM,OAAO+lJ,GAAe7wF,EAAIjoG,EAAM0M,EAASqmC,GACzD,IAAI1+B,EAAIrU,EACR,IAAGy/B,MAAMprB,GAAT,CAGA,IAFA,IAAIjJ,EAAQsB,EAAQtB,OAAS,GAAIurL,EAAO,EACpCv0L,EAAI,EAAG6hC,EAAI,EACTA,GAAK74B,EAAMurL,IAAS,OAAS,MAAQ1yJ,GAAK74B,EAAMurL,IAAS,KAAOA,IACtE,IAAItsJ,EAAI49D,EAAGr1D,KAAK,GAKhB,IAJAvI,EAAEk9H,YAAY,EAAGlzJ,GACjBg2B,EAAEk9H,YAAY,EAAGtjI,GACjBgkE,EAAGplG,KAAK6J,EAAQ3E,MAAM3F,EAAGA,EAAI6hC,IAC7B7hC,GAAK6hC,EACC7hC,EAAI2wC,GAAK,CAId,KAHA1I,EAAI49D,EAAGr1D,KAAK,IACV20H,YAAY,EAAG,IACjBtjI,EAAI,EACEA,GAAK74B,EAAMurL,IAAS,OAAS,MAAQ1yJ,GAAK74B,EAAMurL,IAAS,KAAOA,IACtEtsJ,EAAEk9H,YAAY,EAAGtjI,GACjBgkE,EAAGplG,KAAK6J,EAAQ3E,MAAM3F,EAAGA,EAAE6hC,IAAK7hC,GAAI6hC,CACpC,CAhBkB,CAiBnB,CA0SuBkzK,CAAoBpkM,EAAG,IAzzb/C,SAAmBwmL,EAAK7pL,GACvB,IAAI2tE,EAASyuF,GAAQ,GACrBzuF,EAAOkqF,YAAY,EAAGgyB,EAAIE,OAC1Bp8G,EAAOkqF,YAAY,EAAGgyB,EAAII,QAE1B,IADA,IAAIpV,EAAO,GACHpnK,EAAI,EAAGA,EAAIo8K,EAAIj3L,SAAU6a,EAAGonK,EAAKpnK,GAAK2tK,GAAkCyO,EAAIp8K,IACpF,IAAIktB,EAAI60H,GAAQ,CAAC7hF,GAAQv4E,OAAOy/K,IAEhC,OADOl6I,EAAcj/B,MAAQ,CAACiyE,EAAO/6E,QAAQwC,OAAOy/K,EAAKhlK,KAAI,SAASlP,GAAO,OAAOA,EAAI/N,MAAS,KAC1F+nC,CACP,CAgzbsD+sK,CAAU1nM,EAAKk5L,UAGrE9P,GAAe/lL,EAAG,IAClB,IAAI9P,EAAI8P,EAAE22B,MAEN1E,EAAI24I,KACJ05B,EAAO,EAAGl6L,EAAI,EAClB,IAAIA,EAAI,EAAGA,EAAIw3E,EAAGqrF,WAAW19K,SAAU6a,EAAGk6L,IAAS1B,EAAK,GAAK,KAAOA,EAAK,EAAI,GAAKhhH,EAAGqrF,WAAW7iK,GAAG7a,OACnG,IAAIknC,EAAQr4B,EAAE7O,OAAS+0M,EAAOp0M,EAAEX,OAChC,IAAI6a,EAAI,EAAGA,EAAIw3E,EAAGqrF,WAAW19K,SAAU6a,EAAG,CAEzC27K,GAAe9zJ,EAAG,IAA0BinJ,GAAkB,CAACx9H,IAAIjlB,EAAO0iJ,IADhDwqB,EAAQv5L,IAAO,CAAC,GAC0C6xL,QAAQ,EAAGnhI,GAAG,EAAGzqE,KAAKuxF,EAAGqrF,WAAW7iK,IAAKzN,IAC7H85B,GAAS21H,EAAKhiJ,GAAG7a,MACjB,CAED,IAAI8O,EAAI4zB,EAAE0E,MACV,GAAG2tK,GAAQjmM,EAAE9O,OAAQ,MAAM,IAAIkD,MAAM,OAAS6xM,EAAO,OAASjmM,EAAE9O,QAEhE,IAAIkhE,EAAM,GAIV,OAHGryD,EAAE7O,QAAQkhE,EAAI3gE,KAAKsO,GACnBC,EAAE9O,QAAQkhE,EAAI3gE,KAAKuO,GACnBnO,EAAEX,QAAQkhE,EAAI3gE,KAAKI,GACfi8J,GAAQ17F,EACf,CA8BD,SAASiuI,GAAe98G,EAAiBjlF,GACxC,IAAI,IAAItN,EAAI,EAAGA,GAAKuyF,EAAGqrF,WAAW19K,SAAUF,EAAG,CAC9C,IAAImpD,EAAKopC,EAAGsrF,OAAOtrF,EAAGqrF,WAAW59K,IACjC,GAAImpD,GAAOA,EAAG,QACF6zH,GAAa7zH,EAAG,SACnB/gD,EAAEvH,EAAI,KACM,oBAAX2M,SAA0BA,QAAQzK,OAAOyK,QAAQzK,MAAM,cAAgBwvF,EAAGqrF,WAAW59K,GAAK,uDAEpG,CAED,IAAIioC,EAAI36B,GAAQ,CAAC,EACjB,OAAO26B,EAAEk0I,MAAQ,GAChB,KAAK,EAAG,KAAK,EAAG,OAvClB,SAAyB5pF,EAAiBjlF,GACzC,IAAI26B,EAAI36B,GAAQ,CAAC,EACbyvJ,EAAO,GAERxqE,IAAOA,EAAGymG,MACZzmG,EAAGymG,IAAMxiB,GAAI7Y,KAEXprE,GAAMA,EAAGymG,MACXl1B,KAAYF,GAAerxE,EAAGymG,KAE9B/wJ,EAAE89J,OAAStwB,GAAUljF,EAAGymG,KAAM/wJ,EAAE89J,OAAOxzG,EAAGymG,IAAI,QAAU,EACxD/wJ,EAAE+9J,IAAMzzG,EAAGymG,KAGZ/wJ,EAAEu+J,QAAkB,GAAqBv+J,EAAEu+J,QAAQnP,MAAQ,EAAGpvJ,EAAEu+J,QAAQjP,OAAS,EACjF2d,GAAejtK,GAEfA,EAAEmxJ,QAAU,GACZ0M,GAAe79J,EAAEmxJ,QAAS,CAAC,EAAG,CAAC2M,OAAO,CAAC,QAAU,KAE7CxzG,EAAGizF,QAAOjzF,EAAGizF,MAAQ,CAAC,GAE1B,IAAI,IAAIxlL,EAAI,EAAGA,EAAIuyF,EAAGqrF,WAAW19K,SAAUF,EAAG+8J,EAAKA,EAAK78J,QAAUuzM,GAAezzM,EAAGioC,EAAGsqD,GAEvF,OADAwqE,EAAK56J,QAAQkyM,GAAmB9hH,EAAIwqE,EAAM90H,IACnC60H,GAAQC,EACf,CAcwBo4C,CAAgB5iH,EAAIjlF,GAC3C,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,OAAOulM,GAAgBtgH,EAAIjlF,GAEpD,MAAM,IAAIlK,MAAM,gBAAkB6kC,EAAE06I,SAAW,YAC/C,CA4DD,SAASyyB,GAAcjsJ,EAAkB+d,EAAa1lC,EAAcyG,GAGnE,IAFA,IAAI70B,EAAsB+1C,EAAG,YAAa,GACtCuxH,EAAuB,GACnB/pK,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAAG,CAEnC,IADA,IAAIwgL,EAAK,EAAGpN,EAAK,EACThpK,EAAI,EAAGA,EAAI3H,EAAElT,SAAU6a,EAC9B,KAAG3H,EAAE2H,GAAGmH,EAAEglD,EAAI1lC,GAAKpuB,EAAE2H,GAAGmH,EAAErhB,EAAI8P,MAC3ByC,EAAE2H,GAAG3S,EAAE8+D,EAAI1lC,GAAKpuB,EAAE2H,GAAG3S,EAAEvH,EAAI8P,GAA9B,CACA,GAAGyC,EAAE2H,GAAGmH,EAAEglD,EAAI1lC,GAAKpuB,EAAE2H,GAAGmH,EAAErhB,EAAI8P,EAAG,CAAEwgL,GAAM,EAAG,KAAQ,CACpDA,EAAK/9K,EAAE2H,GAAG3S,EAAE8+D,EAAI9zD,EAAE2H,GAAGmH,EAAEglD,EAAI,EAAG68G,EAAK3wK,EAAE2H,GAAG3S,EAAEvH,EAAIuS,EAAE2H,GAAGmH,EAAErhB,EAAI,EAAG,KAFnB,CAI1C,KAAGswL,EAAK,GAAR,CACA,IAAIQ,EAAQrV,GAAY,CAACp1G,EAAE1lC,EAAE3gC,EAAE8P,IAC3BqrK,EAAO/zI,EAAE+1I,OAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAKw4C,EAAGwoI,GAErC9vJ,EAAKm6I,GAAkB,MAAVA,EAAK/yK,IAAe+yK,EAAKt3K,GAAKizK,GAAWqE,EAAKn6I,IAAM07I,GAAYvB,GAAOA,EAAKn6I,IAAM,MAAQ,GACvG+hK,EAAM,CAAC,EACRzS,EAAK,IAAGyS,EAAGyR,QAAUlkB,GACrBpN,EAAK,IAAG6f,EAAG0R,QAAUvxB,GACrB97I,EAAEstK,SAAU1zK,EAAI,gCAAkCA,EAAI,UACjDm6I,IACP4nB,EAAG,UAAY5nB,GAAQA,EAAK/pK,GAAK,IACpB,MAAV+pK,EAAK/yK,IAAW26L,EAAG,UAAY5nB,EAAK/yK,GAC1B,MAAV+yK,EAAK7zJ,IAAWy7K,EAAG,UAAY5nB,EAAK7zJ,GACpC6zJ,EAAK/7K,GAAyC,MAAnC+7K,EAAK/7K,EAAEilL,QAAU,KAAK55K,OAAO,KAAWu2B,EAAI,YAAcm6I,EAAK/7K,EAAEilL,OAAQ,KAAOrjJ,EAAI,SAEnG+hK,EAAGp/L,IAAMyjC,EAAEzjC,IAAM,OAAS,IAAMmtL,EAChCjX,EAAGj6K,KAAK+3K,GAAU,KAAM32I,EAAG+hK,GAhBR,CAiBnB,CAED,MADe,OACGlpB,EAAGtxK,KAAK,IAAM,OAChC,CAED,IAAIosM,GAAa,sFACbC,GAAW,iBAWf,SAASC,GAAmBvsJ,EAAkB3nB,EAAayG,GAE1D,MAD4B,GACjB7+B,KAAK,IAAM,UAAY6+B,GAAKA,EAAEzjC,GAAK,QAAUyjC,EAAEzjC,GAAK,IAAM,IAAM,GAC3E,CAED,SAASmxM,GAAcxsJ,EAAkB77C,GACxC,IAAI26B,EAAI36B,GAAQ,CAAC,EACb2tE,EAAqB,MAAZhzC,EAAEgzC,OAAiBhzC,EAAEgzC,OAASu6H,GACvC3P,EAAqB,MAAZ59J,EAAE49J,OAAiB59J,EAAE49J,OAAS4P,GACvCr0I,EAAwB,CAAC6Z,GACzB/T,EAAI81G,GAAa7zH,EAAG,SACxBlhB,EAAE+1I,MAAQx7K,MAAMkD,QAAQyjD,GACxBiY,EAAI3gE,KAAKi1M,GAAmBvsJ,EAAI+d,EAAGj/B,IACnC,IAAI,IAAIzG,EAAI0lC,EAAEhlD,EAAEglD,EAAG1lC,GAAK0lC,EAAE9+D,EAAE8+D,IAAK1lC,EAAG4/B,EAAI3gE,KAAK20M,GAAcjsJ,EAAI+d,EAAG1lC,EAAGyG,IAErE,OADAm5B,EAAI3gE,KAAK,WAAaolM,GACfzkI,EAAIh4D,KAAK,GAChB,CAED,SAASwsM,GAAczsJ,EAAkB45G,EAAuByH,GAC/D,IAAIl9J,EAAOk9J,GAAS,CAAC,EAErB,IAAIqrC,EAAO,EAAGC,EAAO,EACrB,GAAkB,MAAfxoM,EAAK4wK,OACP,GAAyB,iBAAf5wK,EAAK4wK,OAAoB23B,EAAOvoM,EAAK4wK,WAC1C,CACJ,IAAIC,EAAgD,iBAAf7wK,EAAK4wK,OAAqBnB,GAAYzvK,EAAK4wK,QAAU5wK,EAAK4wK,OAC/F23B,EAAO13B,EAAQj3G,EAAG4uI,EAAO33B,EAAQt9K,CACjC,CAGF,IAAI2wL,EAA+CzuB,EAAMgzC,qBAAqB,MAC1ErqB,EAAY5zL,KAAKykB,IAAIjP,EAAKo+K,WAAW,IAAU8F,EAAKtxL,QACpD0hG,EAAkB,CAAC1/E,EAAE,CAACglD,EAAE,EAAErmE,EAAE,GAAGuH,EAAE,CAAC8+D,EAAE2uI,EAAKh1M,EAAEi1M,IAC/C,GAAG3sJ,EAAG,QAAS,CACd,IAAIi1H,EAAmBpB,GAAa7zH,EAAG,SACvCy4C,EAAM1/E,EAAEglD,EAAIpvE,KAAKykB,IAAIqlF,EAAM1/E,EAAEglD,EAAGk3G,EAAOl8J,EAAEglD,GACzC06B,EAAM1/E,EAAErhB,EAAI/I,KAAKykB,IAAIqlF,EAAM1/E,EAAErhB,EAAGu9K,EAAOl8J,EAAErhB,GACzC+gG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKukB,IAAIulF,EAAMx5F,EAAE8+D,EAAGk3G,EAAOh2K,EAAE8+D,GACzC06B,EAAMx5F,EAAEvH,EAAI/I,KAAKukB,IAAIulF,EAAMx5F,EAAEvH,EAAGu9K,EAAOh2K,EAAEvH,IAC7B,GAATg1M,IAAYj0G,EAAMx5F,EAAE8+D,EAAI2uI,EAAOz3B,EAAOh2K,EAAE8+D,EAAI,EAC/C,CACD,IAAIyhI,EAA0B,GAAIqN,EAAO,EACrCvmB,EAA6BtmI,EAAG,WAAaA,EAAG,SAAW,IAC3D80H,EAAK,EAAGz8I,EAAI,EAAG7c,EAAK,EAAGhU,EAAI,EAAGwgL,EAAK,EAAGpN,EAAK,EAE/C,IADI56H,EAAG,WAAUA,EAAG,SAAW,IACzB80H,EAAKuT,EAAKtxL,QAAUshC,EAAIkqJ,IAAazN,EAAI,CAC9C,IAAIhY,EAA8BurB,EAAKvT,GACvC,GAAIg4B,GAAsBhwC,GAAM,CAC/B,GAAI34J,EAAKuuG,QAAS,SAClB4zE,EAAQjuJ,GAAK,CAACgvJ,QAAQ,EACtB,CACD,IAAI0lB,EAAiDjwC,EAAItpF,SACzD,IAAIh4D,EAAKhU,EAAI,EAAGgU,EAAKuxL,EAAKh2M,SAAUykB,EAAI,CACvC,IAAI2lJ,EAA+B4rC,EAAKvxL,GACxC,IAAIrX,EAAKuuG,UAAWo6F,GAAsB3rC,GAA1C,CACA,IAAIrhK,EAAgBqhK,EAAI6rC,aAAa,UAAY7rC,EAAI8rC,aAAa,UAAY9rC,EAAI6rC,aAAa,KAAO7rC,EAAI8rC,aAAa,KAAOj+B,GAAW7N,EAAIt8E,WACzI7lE,EAAgBmiJ,EAAI8rC,aAAa,WAAa9rC,EAAI8rC,aAAa,KACnE,IAAIJ,EAAO,EAAGA,EAAOrN,EAAOzoM,SAAU81M,EAAM,CAC3C,IAAIr1K,EAAcgoK,EAAOqN,GACtBr1K,EAAEze,EAAErhB,GAAK8P,EAAImlM,GAAQn1K,EAAEze,EAAEglD,EAAI1lC,EAAIq0K,GAAQr0K,EAAIq0K,GAAQl1K,EAAEv4B,EAAE8+D,IAAKv2D,EAAIgwB,EAAEv4B,EAAEvH,EAAE,EAAIi1M,EAAME,GAAQ,EAC7F,CAEDjyB,GAAMzZ,EAAI8rC,aAAa,YAAc,IAC/BjlB,GAAO7mB,EAAI8rC,aAAa,YAAc,GAAK,GAAKryB,EAAG,IAAG4kB,EAAOloM,KAAK,CAACyhB,EAAE,CAACglD,EAAE1lC,EAAIq0K,EAAKh1M,EAAE8P,EAAImlM,GAAM1tM,EAAE,CAAC8+D,EAAE1lC,EAAIq0K,GAAQ1kB,GAAI,GAAK,EAAGtwL,EAAE8P,EAAImlM,GAAQ/xB,GAAI,GAAK,KACvJ,IAAI97I,EAAa,CAACh2B,EAAE,IAAKhJ,EAAEA,GACvBwjE,EAAgB69F,EAAI8rC,aAAa,WAAa9rC,EAAI8rC,aAAa,MAAQ,GACnE,MAALntM,IACa,GAAZA,EAAE/I,OAAa+nC,EAAEh2B,EAAIw6D,GAAM,IACtBn/D,EAAKk8J,KAA0B,GAAnBvgK,EAAEd,OAAOjI,QAAqB,KAANusE,IAC9B,SAANxjE,EAAcg/B,EAAI,CAACh2B,EAAE,IAAKhJ,GAAE,GACtB,UAANA,EAAeg/B,EAAI,CAACh2B,EAAE,IAAKhJ,GAAE,GAC5Bo0B,MAAMo5I,GAASxtK,IACfo0B,MAAMs5I,GAAU1tK,GAAG+wB,aAC3BiO,EAAK,CAACh2B,EAAE,IAAKhJ,EAAE4pC,GAAU5pC,IACrBqE,EAAKmxK,YAAWx2I,EAAK,CAACh2B,EAAE,IAAKhJ,EAAE0sK,GAAQ1tI,EAAEh/B,KAC7Cg/B,EAAE9f,EAAI7a,EAAKw1J,QAAUnF,GAAU,KAJH11H,EAAI,CAACh2B,EAAE,IAAKhJ,EAAEwtK,GAASxtK,WAO1ClM,IAARkrC,EAAE9f,GAAwB,MAALA,IAAW8f,EAAE9f,EAAIA,GAGzC,IAAIloB,EAAI,GAAIo2M,EAAQ/rC,EAAIyrC,qBAAqB,KAC7C,GAAGM,GAASA,EAAMn2M,OAAQ,IAAI,IAAIo2M,EAAQ,EAAGA,EAAQD,EAAMn2M,UAAoBm2M,EAAMC,GAAOH,aAAa,SAC/C,MAAzDl2M,EAAIo2M,EAAMC,GAAOF,aAAa,SAAc9qM,OAAO,MADiBgrM,GAGlEr2M,GAAoB,KAAfA,EAAEqL,OAAO,KAAW28B,EAAEhoC,EAAK,CAAEilL,OAAQjlL,IAC1CqN,EAAK0wK,OAAa70H,EAAG3nB,EAAIq0K,KAAO1sJ,EAAG3nB,EAAIq0K,GAAQ,IAAI1sJ,EAAG3nB,EAAIq0K,GAAMllM,EAAImlM,GAAQ7tK,GAC1EkhB,EAAGmzH,GAAY,CAACz7K,EAAE8P,EAAImlM,EAAM5uI,EAAE1lC,EAAIq0K,KAAU5tK,EAC9C25D,EAAMx5F,EAAEvH,EAAI8P,EAAImlM,IAAMl0G,EAAMx5F,EAAEvH,EAAI8P,EAAImlM,GACzCnlM,GAAKozK,CAnCmD,CAoCxD,GACCviJ,CACF,CAKD,OAJGmnK,EAAOzoM,SAAQipD,EAAG,YAAcA,EAAG,YAAc,IAAIzmD,OAAOimM,IAC/D/mG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKukB,IAAIulF,EAAMx5F,EAAE8+D,EAAG1lC,EAAI,EAAIq0K,GACxC1sJ,EAAG,QAAU8zH,GAAar7E,GACvBpgE,GAAKkqJ,IAAWviI,EAAG,YAAc8zH,IAAcr7E,EAAMx5F,EAAE8+D,EAAIsqH,EAAKtxL,OAAO+9K,EAAGz8I,EAAE,EAAIq0K,EAAKj0G,KACjFz4C,CACP,CAED,SAASotJ,GAAgBxzC,EAAuByH,GAG/C,OAAOorC,IAFIprC,GAAS,CAAC,GACOwT,MAAS,GAAe,CAAC,EAC5Bjb,EAAOyH,EAChC,CAMD,SAASyrC,GAAsB1vI,GAC9B,IAAIs1C,EAAqB,GACrB26F,EAOL,SAAyCjwI,GAExC,OAAGA,EAAQ2mB,cAAc2V,aAA6E,oBAAvDt8B,EAAQ2mB,cAAc2V,YAAYyoB,iBAAwC/kD,EAAQ2mB,cAAc2V,YAAYyoB,iBAE5H,oBAArBA,iBAAwCA,iBAC3C,IACP,CAbuCmrF,CAAgClwI,GAGvE,OAFGiwI,IAAoB36F,EAAU26F,EAAmBjwI,GAASmwI,iBAAiB,YAC1E76F,IAASA,EAAUt1C,EAAQ6L,OAAS7L,EAAQ6L,MAAMypC,SACnC,SAAZA,CACP,CAmkBD,IAAI86F,GAAmE,WACtE,IAAIC,EAAgB,CACnB,yBACC,oEACC,kBACA,6CACA,kBACA,6CACD,uBACD,2BACCxtM,KAAK,IAEHkB,EAAU,2BAA6BiuK,GAAW,CACrD,eAAkB,mDAClB,cAAkB,kDAClB,cAAkB,kDAClB,aAAkB,iDAClB,aAAkB,oDAClB,WAAkB,8DAClB,cAAkB,+BAClB,WAAkB,mCAClB,eAAkB,sDAClB,YAAkB,2DAClB,WAAkB,+CAClB,iBAAkB,QACd,IAAMq+B,EAAgB,4BAE3B,OAAO,WACN,OAAOz/B,GAAa7sK,CACpB,CACD,CA9BsE,GA+BnEusM,GAAoE,WAEvE,IAQIC,EAAgB,mCAEhBpJ,EAAW,SAASvkJ,EAAIopC,EAAiBvyF,GAE5C,IAAIioC,EAAsB,GAC1BA,EAAExnC,KAAK,kCAAoC+2K,GAAUjlF,EAAGqrF,WAAW59K,IAAM,+BACzE,IAAIwhC,EAAE,EAAE7wB,EAAE,EAAGixF,EAAQo7E,GAAa7zH,EAAG,SAAS,MAC1CglJ,EAAwBhlJ,EAAG,YAAc,GAAI+oD,EAAK,EAClD8rE,EAAQx7K,MAAMkD,QAAQyjD,GAC1B,GAAGA,EAAG,SACL,IAAIx4C,EAAI,EAAGA,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAGs3B,EAAExnC,KAAK,+BAAiC0oD,EAAG,SAASx4C,GAAK,wBAA0Bw4C,EAAG,SAASx4C,GAAGomM,IAAM,IAAM,IAAM,4BAErJ,IAAIv2L,EAAI,GAAIw2L,EAAO7tJ,EAAG,UAAU,GAChC,IAAI3nB,EAAI,EAAGA,EAAIogE,EAAM1/E,EAAEglD,IAAK1lC,EAC3BhhB,EAAIw2L,EAAKx1K,GAAK,wBAA0Bw1K,EAAKx1K,GAAGu1K,IAAM,IAAM,GAC5D9uK,EAAExnC,KAAK,2BAA6B+f,EAAI,yBAEzC,KAAMghB,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,EAAG,CAG1B,IAFAhhB,EAAIw2L,EAAKx1K,GAAK,wBAA0Bw1K,EAAKx1K,GAAGu1K,IAAM,IAAM,GAC5D9uK,EAAExnC,KAAK,2BAA6B+f,EAAI,OACpC7P,EAAE,EAAGA,EAAIixF,EAAM1/E,EAAErhB,IAAK8P,EAAGs3B,EAAExnC,KAAKq2M,GACpC,KAAMnmM,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CAC1B,IAAI69L,GAAO,EAAO9iI,EAAK,CAAC,EAAGurI,EAAQ,GACnC,IAAI/kG,EAAK,EAAGA,GAAMi8F,EAAKjuM,SAAUgyG,EAChC,KAAGi8F,EAAKj8F,GAAIhwF,EAAErhB,EAAI8P,MACfw9L,EAAKj8F,GAAIhwF,EAAEglD,EAAI1lC,MACf2sK,EAAKj8F,GAAI9pG,EAAEvH,EAAI8P,MACfw9L,EAAKj8F,GAAI9pG,EAAE8+D,EAAI1lC,GAAlB,CACG2sK,EAAKj8F,GAAIhwF,EAAErhB,GAAK8P,GAAKw9L,EAAKj8F,GAAIhwF,EAAEglD,GAAK1lC,IAAGgtK,GAAO,GAClD9iI,EAAG,gCAAmCyiI,EAAKj8F,GAAI9pG,EAAEvH,EAAIstM,EAAKj8F,GAAIhwF,EAAErhB,EAAI,EACpE6qE,EAAG,6BAAmCyiI,EAAKj8F,GAAI9pG,EAAE8+D,EAAIinI,EAAKj8F,GAAIhwF,EAAEglD,EAAI,EACpE,KAJ6B,CAM9B,GAAGsnI,EAAQvmK,EAAExnC,KAhCO,+CAgCpB,CACA,IAAImxE,EAAM0qG,GAAY,CAACp1G,EAAE1lC,EAAG3gC,EAAE8P,IAAKqrK,EAAOgC,GAAS70H,EAAG3nB,IAAI,IAAI7wB,GAAIw4C,EAAGyoB,GACrE,GAAGoqG,GAAQA,EAAK/yJ,IACfyiD,EAAG,iBAAmB8rG,IA5pOlB,OA4pO+CwE,EAAK/yJ,EA5pOzCngB,QAAQq2L,GAAW,iBAAiBr2L,QAAQ,SAAS,MAE/DA,QAAQ,KAAM,KAAKA,QAAQ,KAAK,MA2pOlCkzK,EAAKhiK,GACJgiK,EAAKhiK,EAAErU,MAAM,EAAGisE,EAAI1xE,SAAW0xE,GAAK,CACtC,IAAIslI,EAAQl6B,GAAahB,EAAKhiK,GAC9B0xD,EAAG,uCAA0CwrI,EAAM9uM,EAAEvH,EAAIq2M,EAAMh1L,EAAErhB,EAAI,EACrE6qE,EAAG,oCAA0CwrI,EAAM9uM,EAAE8+D,EAAIgwI,EAAMh1L,EAAEglD,EAAI,CACrE,CAGH,GAAI80G,EAAJ,CACA,OAAOA,EAAK/pK,GACX,IAAK,IACJglM,EAASj7B,EAAK/yK,EAAI,OAAS,QAC3ByiE,EAAG,qBAAuB,UAC1BA,EAAG,wBAA2BswG,EAAK/yK,EAAI,OAAS,QAChD,MACD,IAAK,IACJguM,EAASj7B,EAAKn6I,GAAGhyB,OAAOmsK,EAAK/yK,GAAG,GAChCyiE,EAAG,qBAAuB,QAC1BA,EAAG,gBAAmBswG,EAAK/yK,GAAG,EAC9B,MACD,IAAK,IAAK,IAAK,MACdguM,EAAkB,MAAVj7B,EAAK/yK,EAAY,GAAK+yK,EAAK/yK,EACnCyiE,EAAG,qBAAuB,SAC1B,MACD,IAAK,IACJurI,EAASj7B,EAAKn6I,GAAIgR,GAAUmpI,EAAK/yK,GAAGE,cACpCuiE,EAAG,qBAAuB,OAC1BA,EAAG,qBAAwB74B,GAAUmpI,EAAK/yK,GAAGE,cAC7CuiE,EAAG,oBAAsB,MACzB,MAED,QAASzjC,EAAExnC,KAAKq2M,GAAgB,SAEjC,IAAIK,EA7EC3/B,GA6EqBy/B,GA5E1BnuM,QAAQ,QAAQ,SAASm3J,GAAI,MAAO,mBAAmBA,EAAG//J,OAAO,KAAO,IACxE4I,QAAQ,MAAO,eACfA,QAAQ,MAAO,qBACfA,QAAQ,KAAM,aAAaA,QAAQ,KAAM,aA0EzC,GAAGkzK,EAAK/7K,GAAK+7K,EAAK/7K,EAAEilL,OAAQ,CAC3B,IAAIkyB,EAAOp7B,EAAK/7K,EAAEilL,OAGG,MAFrBkyB,EAAyB,KAAlBA,EAAK9rM,OAAO,GAAY,IAAoB8rM,EAAKzxM,MAAM,GArrOzDmD,QAAQ,KAAK,KAqrOkDsuM,GAE5D9rM,OAAO,IAAc8rM,EAAKntM,MAAM,WAAUmtM,EAAO,MAAQA,GACjED,EAAS3+B,GAAU,SAAU2+B,EAAQ,CAAC,aAAcC,EAAKtuM,QAAQ,KAAM,UACvE,CACDm/B,EAAExnC,KAAK,aAAe+3K,GAAU,mBAAoBA,GAAU,SAAU2+B,EAAQ,CAAC,GAAIzrI,GAAM,KAjC7C,MAAlCzjC,EAAExnC,KAAKq2M,EAZ6B,CA8ChD,CACD7uK,EAAExnC,KAAK,+BACP,CAED,OADAwnC,EAAExnC,KAAK,0BACAwnC,EAAE7+B,KAAK,GACd,EA6DD,OAAO,SAAampF,EAAIjlF,GACvB,IAAI26B,EAAI,CAACkvI,IAELpsC,EAAOwtC,GAAW,CACrB,eAAsB,mDACtB,cAAsB,kDACtB,cAAsB,kDACtB,aAAsB,iDACtB,aAAsB,oDACtB,WAAsB,8DACtB,cAAsB,+BACtB,WAAsB,mCACtB,aAAsB,iDACtB,eAAsB,sDACtB,qBAAsB,yDACtB,YAAsB,2DACtB,cAAsB,kDACtB,aAAsB,iDACtB,aAAsB,qCACtB,aAAsB,iDACtB,eAAsB,mDACtB,YAAsB,oCACtB,aAAsB,oCACtB,aAAsB,kCACtB,YAAsB,oCACtB,eAAsB,gCACtB,YAAsB,mCACtB,YAAsB,4CACtB,cAAsB,8CACtB,YAAsB,oCACtB,WAAsB,+CACtB,cAAsB,+BACtB,cAAsB,sCACtB,iBAAsB,mCACtB,gBAAsB,kCACtB,gBAAsB,uEACtB,cAAsB,uEACtB,cAAsB,mEACtB,cAAsB,qEACtB,cAAsB,kCACtB,iBAAsB,QAGnB8+B,EAAO9+B,GAAW,CACrB,eAAmB,mDACnB,kBAAmB,mDAGA,QAAjBjrK,EAAKq1K,UACP16I,EAAExnC,KAAK,mBAAqBsqI,EAAOssE,EAAO,OAC1CpvK,EAAExnC,KAAK4kL,KAAiBv8K,QAAQ,wBAAyB,iBAEnDm/B,EAAExnC,KAAK,2BAA6BsqI,EAAQ,OA/GnB,SAAS9iG,EAAqBsqD,GAC9DtqD,EAAExnC,KAAK,gCAEPwnC,EAAExnC,KAAK,0EACPwnC,EAAExnC,KAAK,4CACPwnC,EAAExnC,KAAK,qCACPwnC,EAAExnC,KAAK,0CACPwnC,EAAExnC,KAAK,qCACPwnC,EAAExnC,KAAK,uBACPwnC,EAAExnC,KAAK,4BAGP,IAAI62M,EAAO,EACX/kH,EAAGqrF,WAAWzgK,KAAI,SAASgF,GAAK,OAAOowE,EAAGsrF,OAAO17J,EAAK,IAAEllB,SAAQ,SAASksD,GACxE,GAAIA,GACDA,EAAG,SACL,IAAI,IAAIx4C,EAAI,EAAGA,EAAIw4C,EAAG,SAASjpD,SAAUyQ,EAAG,GAAGw4C,EAAG,SAASx4C,GAAI,CAC9D,IAAI4mM,EAASpuJ,EAAG,SAASx4C,GACzB,GAAmB,MAAhB4mM,EAAO/iL,OAA+B,MAAd+iL,EAAOlmB,KAA6B,MAAdkmB,EAAO3rB,IAAa,SACrE6E,GAAY8mB,GACZA,EAAOR,IAAMO,EACb,IAAIz1K,EAAIsnB,EAAG,SAASx4C,GAAG0gL,IAAM,KAC7BppJ,EAAExnC,KAAK,gCAAkC62M,EAAO,oCAChDrvK,EAAExnC,KAAK,gFAAkFohC,EAAI,SAC7FoG,EAAExnC,KAAK,wBACL62M,CACF,CAEF,IAGD,IAAItgC,EAAO,EACXzkF,EAAGqrF,WAAWzgK,KAAI,SAASgF,GAAK,OAAOowE,EAAGsrF,OAAO17J,EAAK,IAAEllB,SAAQ,SAASksD,GACxE,GAAIA,GACDA,EAAG,SACL,IAAI,IAAI3nB,EAAI,EAAGA,EAAI2nB,EAAG,SAASjpD,SAAUshC,EAAG,GAAG2nB,EAAG,SAAS3nB,GAAI,CAC9D2nB,EAAG,SAAS3nB,GAAGu1K,IAAM//B,EACrB,IAAItyK,EAAIykD,EAAG,SAAS3nB,GAAGmvJ,IAAM,KAC7B1oJ,EAAExnC,KAAK,gCAAkCu2K,EAAO,iCAChD/uI,EAAExnC,KAAK,2EAA6EiE,EAAI,SACxFujC,EAAExnC,KAAK,wBACLu2K,CACF,CAEF,IAGD/uI,EAAExnC,KAAK,wFACPwnC,EAAExnC,KAAK,kFACPwnC,EAAExnC,KAAK,sBAGPwnC,EAAExnC,KAAK,+HAIPwnC,EAAExnC,KAAK,gCACP,CAwDA+2M,CAA2BvvK,EAAGsqD,GAC9BtqD,EAAExnC,KAAK,qBACPwnC,EAAExnC,KAAK,8BACP,IAAI,IAAIT,EAAI,EAAGA,GAAKuyF,EAAGqrF,WAAW19K,SAAUF,EAAGioC,EAAExnC,KAAKitM,EAASn7G,EAAGsrF,OAAOtrF,EAAGqrF,WAAW59K,IAAKuyF,EAAIvyF,IAKhG,OAJAioC,EAAExnC,KAAK,+BACPwnC,EAAExnC,KAAK,sBACa,QAAjB6M,EAAKq1K,SAAoB16I,EAAExnC,KAAK,sBAC9BwnC,EAAExnC,KAAK,8BACLwnC,EAAE7+B,KAAK,GACd,CACD,CA3NuE,GA6NxE,SAASquM,GAAUllH,EAAYjlF,GAC9B,GAAoB,QAAjBA,EAAKq1K,SAAoB,OAAOk0B,GAAkBtkH,EAAIjlF,GAEzD,IAAIwpK,EAAMI,KACNjuJ,EAAI,GAEJyuL,EAAqC,GACrCC,EAAkC,GAiCtC,OA7BA9gC,GAAaC,EADb7tJ,EAAI,WACiB,kDAIrB4tJ,GAAaC,EADb7tJ,EAAI,cACiB4tL,GAAkBtkH,EAAIjlF,IAC3CoqM,EAASj3M,KAAK,CAACwoB,EAAG,aAClB0uL,EAAIl3M,KAAK,CAACwoB,EAAG,gBAIb4tJ,GAAaC,EADb7tJ,EAAI,aACiB0tL,GAAiBpkH,EAAIjlF,IAC1CoqM,EAASj3M,KAAK,CAACwoB,EAAG,aAClB0uL,EAAIl3M,KAAK,CAACwoB,EAAG,eAIb4tJ,GAAaC,EADb7tJ,EAAI,WACiBkuJ,GAAakO,MAClCqyB,EAASj3M,KAAK,CAACwoB,EAAG,aAClB0uL,EAAIl3M,KAAK,CAACwoB,EAAG,iBAIb4tJ,GAAaC,EADb7tJ,EAAI,eAhrgBL,SAAmB0uL,GAClB,IARsBx/I,EAAiB4tG,EAQnC99H,EAAI,CAACkvI,IACTlvI,EAAExnC,KAAK,uEACP,IAAI,IAAIT,EAAI,EAAGA,GAAK23M,EAAIz3M,SAAUF,EACjCioC,EAAExnC,KAAK2kL,GAAeuyB,EAAI33M,GAAG,GAAI23M,EAAI33M,GAAG,KACxCioC,EAAExnC,MAZmB03D,EAYA,GAZiB4tG,EAYd4xC,EAAI33M,GAAG,GAXzB,CACN,iCAAmCm4D,EAAO,OAC1C,iGAAmG4tG,EAAO,QAC1G,0BACC38J,KAAK,MAWP,OAFA6+B,EAAExnC,KAAK2kL,GAAe,GAAG,WAAY,QACrCn9I,EAAExnC,KAAK,cACAwnC,EAAE7+B,KAAK,GACd,CAuqgBqBwuM,CAAUD,IAC/BD,EAASj3M,KAAK,CAACwoB,EAAG,wBAIlB4tJ,GAAaC,EADb7tJ,EAAI,wBA7sgBL,SAAwByuL,GACvB,IAAIzvK,EAAI,CAACkvI,IACTlvI,EAAExnC,KAAK,oHACPwnC,EAAExnC,KAAK,iJACP,IAAI,IAAIT,EAAI,EAAGA,EAAI03M,EAASx3M,SAAUF,EAAGioC,EAAExnC,KAAK,8CAAgDi3M,EAAS13M,GAAG,GAAK,0BAA4B03M,EAAS13M,GAAG,GAAK,SAE9J,OADAioC,EAAExnC,KAAK,wBACAwnC,EAAE7+B,KAAK,GACd,CAusgBqByuM,CAAeH,IAE7B5gC,CACP,CAGD,SAASghC,GAAev/K,GACtB,OAAO,IAAIw/K,SAASx/K,EAAMnxB,OAAQmxB,EAAMxY,WAAYwY,EAAMvY,WAC3D,CAID,SAASg4L,GAAM/pM,GACb,MAA6B,oBAAfqmK,aAA6B,IAAIA,aAAczrK,OAAOoF,GAAO0uJ,GAAI4X,GAAUtmK,GAC1F,CAWD,SAASgqM,GAASC,GAChB,IAAIvnK,EAAMunK,EAAI9uF,QAAO,SAASC,EAAK13G,GACjC,OAAO03G,EAAM13G,EAAEzR,MAChB,GAAE,GACCkhE,EAAM,IAAI7yD,WAAWoiC,GACrB++H,EAAM,EAKV,OAJAwoC,EAAIj7M,SAAQ,SAASk7M,GACnB/2I,EAAIj2B,IAAIgtK,EAAIzoC,GACZA,GAAOyoC,EAAGj4M,MACX,IACMkhE,CACR,CAsBD,SAASg3I,GAAe97C,EAAK+7C,GAC3B,IAAIp4M,EAAIo4M,EAAMA,EAAI,GAAK,EACnB3nC,EAAe,IAATpU,EAAIr8J,GACdq4M,EACE,GAAIh8C,EAAIr8J,MAAQ,IAAK,CAEnB,GADAywK,IAAiB,IAATpU,EAAIr8J,KAAa,EACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAER,GADA5nC,IAAiB,IAATpU,EAAIr8J,KAAa,GACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAER,GADA5nC,IAAiB,IAATpU,EAAIr8J,KAAa,GACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAGR,GAFA5nC,IAAiB,IAATpU,EAAIr8J,IAAYnI,KAAKkxB,IAAI,EAAG,MAClC/oB,EACEq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAGR,GAFA5nC,IAAiB,IAATpU,EAAIr8J,IAAYnI,KAAKkxB,IAAI,EAAG,MAClC/oB,EACEq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAGR,GAFA5nC,IAAiB,IAATpU,EAAIr8J,IAAYnI,KAAKkxB,IAAI,EAAG,MAClC/oB,EACEq8J,EAAIr8J,KAAO,IACb,MAAMq4M,CACT,CAGH,OAFID,IACFA,EAAI,GAAKp4M,GACJywK,CACR,CACD,SAAS6nC,GAAetvM,GACtB,IAAIynK,EAAM,IAAIniK,WAAW,GACzBmiK,EAAI,GAAS,IAAJznK,EACT,IAAI24B,EAAI,EACR6jI,EACE,GAAIx8J,EAAI,IAAK,CAIX,GAHAynK,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,GAAK,EAAI,MAChB24B,EACE34B,GAAK,MACP,MAAMw8J,EAIR,GAHAiL,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,GAAK,GAAK,MACjB24B,EACE34B,GAAK,QACP,MAAMw8J,EAIR,GAHAiL,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,GAAK,GAAK,MACjB24B,EACE34B,GAAK,UACP,MAAMw8J,EAIR,GAHAiL,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,EAAI,MAAQ,GAAK,MACxB24B,EACE34B,GAAK,YACP,MAAMw8J,EAIR,GAHAiL,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,EAAI,QAAU,GAAK,MAC1B24B,EACE34B,GAAK,cACP,MAAMw8J,EACRiL,EAAI9uI,EAAI,IAAM,IACd8uI,EAAI9uI,GAAK34B,EAAI,WAAa,GAAK,MAC7B24B,CACH,CACH,OAAO8uI,EAAI/qK,MAAM,EAAGi8B,EACrB,CACD,SAAS42K,GAAcl8C,GACrB,IAAIr8J,EAAI,EAAGw4M,EAAe,IAATn8C,EAAIr8J,GACrBq4M,EACE,GAAIh8C,EAAIr8J,MAAQ,IAAK,CAEnB,GADAw4M,IAAiB,IAATn8C,EAAIr8J,KAAa,EACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAER,GADAG,IAAiB,IAATn8C,EAAIr8J,KAAa,GACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EAER,GADAG,IAAiB,IAATn8C,EAAIr8J,KAAa,GACrBq8J,EAAIr8J,KAAO,IACb,MAAMq4M,EACRG,IAAiB,IAATn8C,EAAIr8J,KAAa,EAC1B,CACH,OAAOw4M,CACR,CACD,SAASC,GAAcp8C,GAErB,IADA,IAAIl7F,EAAM,GAAIi3I,EAAM,CAAC,GACdA,EAAI,GAAK/7C,EAAIp8J,QAAQ,CAC1B,IAKI64C,EALA22H,EAAM2oC,EAAI,GACVM,EAAMP,GAAe97C,EAAK+7C,GAC1Bz6M,EAAa,EAAN+6M,EAEPhoK,EAAM,EAEV,GAAW,IAHXgoK,EAAM7gN,KAAKwO,MAAMqyM,EAAM,IAIrB,MACF,OAAQ/6M,GACN,KAAK,EAGD,IADA,IAAIqC,EAAIo4M,EAAI,GACL/7C,EAAI+7C,EAAI,OAAS,MAExBt/J,EAAMujH,EAAI32J,MAAM1F,EAAGo4M,EAAI,IAEzB,MACF,KAAK,EACH1nK,EAAM,EACNoI,EAAMujH,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK1nK,GACjC0nK,EAAI,IAAM1nK,EACV,MACF,KAAK,EACHA,EAAM,EACNoI,EAAMujH,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK1nK,GACjC0nK,EAAI,IAAM1nK,EACV,MACF,KAAK,EACHA,EAAMynK,GAAe97C,EAAK+7C,GAC1Bt/J,EAAMujH,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK1nK,GACjC0nK,EAAI,IAAM1nK,EACV,MAGF,QACE,MAAM,IAAIvtC,MAAM,WAAWV,OAAO9E,EAAM,eAAe8E,OAAOi2M,EAAK,eAAej2M,OAAOgtK,IAE7F,IAAIzmK,EAAI,CAAE1P,KAAMw/C,EAAKn7C,KAAMA,GACX,MAAZwjE,EAAIu3I,GACNv3I,EAAIu3I,GAAO,CAAC1vM,GAEZm4D,EAAIu3I,GAAKl4M,KAAKwI,EACjB,CACD,OAAOm4D,CACR,CACD,SAASw3I,GAAc94I,GACrB,IAAIsB,EAAM,GAWV,OAVAtB,EAAM7iE,SAAQ,SAASikE,EAAO6+F,GAC5B7+F,EAAMjkE,SAAQ,SAASi8D,GAChBA,EAAK3/D,OAEV6nE,EAAI3gE,KAAK83M,GAAqB,EAANx4C,EAAU7mG,EAAKt7D,OACtB,GAAbs7D,EAAKt7D,MACPwjE,EAAI3gE,KAAK83M,GAAer/I,EAAK3/D,KAAK2G,SACpCkhE,EAAI3gE,KAAKy4D,EAAK3/D,MACf,GACF,IACM0+M,GAAS72I,EACjB,CAMD,SAASy3I,GAAev8C,GAGtB,IAFA,IAAIj4G,EACA+c,EAAM,GAAIi3I,EAAM,CAAC,GACdA,EAAI,GAAK/7C,EAAIp8J,QAAQ,CAC1B,IAAIywC,EAAMynK,GAAe97C,EAAK+7C,GAC1BvnG,EAAK4nG,GAAcp8C,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK1nK,IAClD0nK,EAAI,IAAM1nK,EACV,IAAIoI,EAAM,CACRv0C,GAAIg0M,GAAc1nG,EAAG,GAAG,GAAGv3G,MAC3Bu/M,SAAU,IAEZhoG,EAAG,GAAG7zG,SAAQ,SAAS+R,GACrB,IAAIkjG,EAAKwmG,GAAc1pM,EAAEzV,MACrBm1B,EAAK8pL,GAActmG,EAAG,GAAG,GAAG34G,MAChCw/C,EAAI+/J,SAASr4M,KAAK,CAChBuxF,KAAMkgB,EACN34G,KAAM+iK,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK3pL,KAEnC2pL,EAAI,IAAM3pL,CACX,KACmB,OAAf21B,EAAKysD,EAAG,SAAc,EAASzsD,EAAG,MACrCtL,EAAI9zC,MAAQuzM,GAAc1nG,EAAG,GAAG,GAAGv3G,QAAU,EAAI,GACnD6nE,EAAI3gE,KAAKs4C,EACV,CACD,OAAOqoB,CACR,CACD,SAAS23I,GAAeC,GACtB,IAAIj8C,EAAO,GAoBX,OAnBAi8C,EAAI/7M,SAAQ,SAASwrF,GACnB,IAAIqoB,EAAK,GACTA,EAAG,GAAK,CAAC,CAAEv3G,KAAMg/M,GAAe9vH,EAAGjkF,IAAK5G,KAAM,IAC9CkzG,EAAG,GAAK,GACQ,MAAZroB,EAAGxjF,QACL6rG,EAAG,GAAK,CAAC,CAAEv3G,KAAMg/M,MAAkB9vH,EAAGxjF,OAAQrH,KAAM,KACtD,IAAIq7M,EAAS,GACbxwH,EAAGqwH,SAAS77M,SAAQ,SAASi1G,GAC3B+mG,EAAOx4M,KAAKyxG,EAAG34G,MACf24G,EAAGlgB,KAAK,GAAK,CAAC,CAAEp0F,KAAM,EAAGrE,KAAMg/M,GAAermG,EAAG34G,KAAK2G,UACtD4wG,EAAG,GAAGrwG,KAAK,CAAElH,KAAMq/M,GAAc1mG,EAAGlgB,MAAOp0F,KAAM,GAClD,IACD,IAAIs7M,EAAYN,GAAc9nG,GAC9BisD,EAAKt8J,KAAK83M,GAAeW,EAAUh5M,SACnC68J,EAAKt8J,KAAKy4M,GACVD,EAAOh8M,SAAQ,SAASk8M,GACtB,OAAOp8C,EAAKt8J,KAAK04M,EAClB,GACF,IACMlB,GAASl7C,EACjB,CACD,SAASq8C,GAAmBx7M,EAAM0+J,GAChC,GAAY,GAAR1+J,EACF,MAAM,IAAIwF,MAAM,gCAAgCV,OAAO9E,IAIzD,IAHA,IAAIy6M,EAAM,CAAC,GACP3nC,EAAM0nC,GAAe97C,EAAK+7C,GAC1BgB,EAAS,GACNhB,EAAI,GAAK/7C,EAAIp8J,QAAQ,CAC1B,IAAIkrF,EAAoB,EAAdkxE,EAAI+7C,EAAI,IAClB,GAAW,GAAPjtH,EAAJ,CAqBE,IAAI/3E,EAAS,EAAGnT,EAAS,EAgBzB,GAfW,GAAPkrF,GACFlrF,EAAkC,GAAxBo8J,EAAI+7C,EAAI,KAAO,EAAI,GAC7BhlM,GAA0B,IAAhBipJ,EAAI+7C,EAAI,QAAgB,EAClChlM,GAAUipJ,EAAI+7C,EAAI,QAElBn4M,EAAgC,GAAtBo8J,EAAI+7C,EAAI,OAAS,GAChB,GAAPjtH,GACF/3E,EAASipJ,EAAI+7C,EAAI,IAAM/7C,EAAI+7C,EAAI,GAAK,IAAM,EAC1CA,EAAI,IAAM,IAEVhlM,GAAUipJ,EAAI+7C,EAAI,IAAM/7C,EAAI+7C,EAAI,GAAK,IAAM,EAAI/7C,EAAI+7C,EAAI,GAAK,IAAM,GAAK/7C,EAAI+7C,EAAI,GAAK,IAAM,MAAQ,EAClGA,EAAI,IAAM,IAGdgB,EAAS,CAACpB,GAASoB,IACL,GAAVhmM,EACF,MAAM,IAAIjQ,MAAM,oBAClB,GAAIiQ,EAASgmM,EAAO,GAAGn5M,OACrB,MAAM,IAAIkD,MAAM,gCAClB,GAAIlD,GAAUmT,EAGZ,IAFAgmM,EAAO54M,KAAK44M,EAAO,GAAG1zM,OAAO0N,IAC7BnT,GAAUmT,EACHnT,GAAUm5M,EAAOA,EAAOn5M,OAAS,GAAGA,QACzCm5M,EAAO54M,KAAK44M,EAAOA,EAAOn5M,OAAS,IACnCA,GAAUm5M,EAAOA,EAAOn5M,OAAS,GAAGA,OAGxCm5M,EAAO54M,KAAK44M,EAAO,GAAG1zM,OAAO0N,GAASA,EAASnT,GAChD,KAlDD,CACE,IAAIywC,EAAM2rH,EAAI+7C,EAAI,OAAS,EAC3B,GAAI1nK,EAAM,KACNA,MACC,CACH,IAAI9vC,EAAI8vC,EAAM,GACdA,EAAM2rH,EAAI+7C,EAAI,IACVx3M,EAAI,IACN8vC,GAAO2rH,EAAI+7C,EAAI,GAAK,IAAM,GACxBx3M,EAAI,IACN8vC,GAAO2rH,EAAI+7C,EAAI,GAAK,IAAM,IACxBx3M,EAAI,IACN8vC,GAAO2rH,EAAI+7C,EAAI,GAAK,IAAM,IAC5B1nK,KAAS,EACTA,IACA0nK,EAAI,IAAMx3M,CACX,CACDw4M,EAAO54M,KAAK67J,EAAI32J,MAAM0yM,EAAI,GAAIA,EAAI,GAAK1nK,IACvC0nK,EAAI,IAAM1nK,CAgCX,CACF,CACD,IAAI1I,EAAIgwK,GAASoB,GACjB,GAAIpxK,EAAE/nC,QAAUwwK,EACd,MAAM,IAAIttK,MAAM,sBAAsBV,OAAOulC,EAAE/nC,OAAQ,QAAQwC,OAAOguK,IACxE,OAAOzoI,CACR,CACD,SAASqxK,GAAoBh9C,GAG3B,IAFA,IAAIl7F,EAAM,GACNnhE,EAAI,EACDA,EAAIq8J,EAAIp8J,QAAQ,CACrB,IAAI+R,EAAIqqJ,EAAIr8J,KACR0wC,EAAM2rH,EAAIr8J,GAAKq8J,EAAIr8J,EAAI,IAAM,EAAIq8J,EAAIr8J,EAAI,IAAM,GACnDA,GAAK,EACLmhE,EAAI3gE,KAAK24M,GAAmBnnM,EAAGqqJ,EAAI32J,MAAM1F,EAAGA,EAAI0wC,KAChD1wC,GAAK0wC,CACN,CACD,GAAI1wC,IAAMq8J,EAAIp8J,OACZ,MAAM,IAAIkD,MAAM,sCAClB,OAAO60M,GAAS72I,EACjB,CACD,SAASm4I,GAAkBj9C,GAGzB,IAFA,IAAIl7F,EAAM,GACNnhE,EAAI,EACDA,EAAIq8J,EAAIp8J,QAAQ,CACrB,IAAIW,EAAI/I,KAAKykB,IAAI+/I,EAAIp8J,OAASD,EAAG,WAC7BywI,EAAQ,IAAIniI,WAAW,GAC3B6yD,EAAI3gE,KAAKiwI,GACT,IAAIggC,EAAM6nC,GAAe13M,GACrB+gC,EAAI8uI,EAAIxwK,OACZkhE,EAAI3gE,KAAKiwK,GACL7vK,GAAK,IACP+gC,IACAw/B,EAAI3gE,KAAK,IAAI8N,WAAW,CAAC1N,EAAI,GAAK,MACzBA,GAAK,KACd+gC,GAAK,EACLw/B,EAAI3gE,KAAK,IAAI8N,WAAW,CAAC,IAAK1N,EAAI,EAAI,QAC7BA,GAAK,OACd+gC,GAAK,EACLw/B,EAAI3gE,KAAK,IAAI8N,WAAW,CAAC,IAAK1N,EAAI,EAAI,IAAKA,EAAI,GAAK,EAAI,QAC/CA,GAAK,UACd+gC,GAAK,EACLw/B,EAAI3gE,KAAK,IAAI8N,WAAW,CAAC,IAAK1N,EAAI,EAAI,IAAKA,EAAI,GAAK,EAAI,IAAKA,EAAI,GAAK,GAAK,QAClEA,GAAK,aACd+gC,GAAK,EACLw/B,EAAI3gE,KAAK,IAAI8N,WAAW,CAAC,IAAK1N,EAAI,EAAI,IAAKA,EAAI,GAAK,EAAI,IAAKA,EAAI,GAAK,GAAK,IAAKA,EAAI,IAAM,GAAK,QAEjGugE,EAAI3gE,KAAK67J,EAAI32J,MAAM1F,EAAGA,EAAIY,IAC1B+gC,GAAK/gC,EACL6vI,EAAM,GAAK,EACXA,EAAM,GAAS,IAAJ9uG,EACX8uG,EAAM,GAAK9uG,GAAK,EAAI,IACpB8uG,EAAM,GAAK9uG,GAAK,GAAK,IACrB3hC,GAAKY,CACN,CACD,OAAOo3M,GAAS72I,EACjB,CA6HD,SAASo4I,GAAkBx9B,EAAMmb,GAC/B,IAAI/1H,EAAM,IAAI7yD,WAAW,IAAKkrM,EAAK3B,GAAe12I,GAAMnhE,EAAI,GAAIsqC,EAAQ,EAExE,OADA62B,EAAI,GAAK,EACD46G,EAAK/pK,GACX,IAAK,IACHmvD,EAAI,GAAK,EAtcf,SAA2Bk7F,EAAKjpJ,EAAQhY,GACtC,IAAIq+M,EAAM5hN,KAAKwO,MAAe,GAATjL,EAAa,EAAIvD,KAAKknK,OAASlnK,KAAK4+F,IAAI5+F,KAAKqoB,IAAI9kB,KAAW,KAAO,GACpFs+M,EAAWt+M,EAAQvD,KAAKkxB,IAAI,GAAI0wL,EAAM,MAC1Cp9C,EAAIjpJ,EAAS,KAAOqmM,GAAO,EAC3Bp9C,EAAIjpJ,EAAS,MAAc,IAANqmM,IAAc,EACnC,IAAK,IAAI15M,EAAI,EAAG25M,GAAY,IAAK35M,EAAG25M,GAAY,IAC9Cr9C,EAAIjpJ,EAASrT,GAAgB,IAAX25M,EACpBr9C,EAAIjpJ,EAAS,KAAOhY,GAAS,EAAI,EAAI,GACtC,CA+bKu+M,CAAkBx4I,EAAKnhE,EAAG+7K,EAAK/yK,GAC/BshC,GAAS,EACTtqC,GAAK,GACL,MACF,IAAK,IACHmhE,EAAI,GAAK,EACTq4I,EAAGI,WAAW55M,EAAG+7K,EAAK/yK,EAAI,EAAI,GAAG,GACjCshC,GAAS,EACTtqC,GAAK,EACL,MACF,IAAK,IACH,IAA4B,GAAxBk3L,EAAIn7L,QAAQggL,EAAK/yK,GACnB,MAAM,IAAI7F,MAAM,SAASV,OAAOs5K,EAAK/yK,EAAG,uBAC1Cm4D,EAAI,GAAK,EACTq4I,EAAGK,UAAU75M,EAAGk3L,EAAIn7L,QAAQggL,EAAK/yK,IAAI,GACrCshC,GAAS,EACTtqC,GAAK,EACL,MACF,QACE,KAAM,yBAA2B+7K,EAAK/pK,EAG1C,OADAwnM,EAAGK,UAAU,EAAGvvK,GAAO,GAChB62B,EAAIz7D,MAAM,EAAG1F,EACrB,CACD,SAAS85M,GAAkB/9B,EAAMmb,GAC/B,IAAI/1H,EAAM,IAAI7yD,WAAW,IAAKkrM,EAAK3B,GAAe12I,GAAMnhE,EAAI,GAAIsqC,EAAQ,EAExE,OADA62B,EAAI,GAAK,EACD46G,EAAK/pK,GACX,IAAK,IACHmvD,EAAI,GAAK,EACTq4I,EAAGI,WAAW55M,EAAG+7K,EAAK/yK,GAAG,GACzBshC,GAAS,GACTtqC,GAAK,EACL,MACF,IAAK,IACHmhE,EAAI,GAAK,EACTq4I,EAAGI,WAAW55M,EAAG+7K,EAAK/yK,EAAI,EAAI,GAAG,GACjCshC,GAAS,GACTtqC,GAAK,EACL,MACF,IAAK,IACH,IAA4B,GAAxBk3L,EAAIn7L,QAAQggL,EAAK/yK,GACnB,MAAM,IAAI7F,MAAM,SAASV,OAAOs5K,EAAK/yK,EAAG,uBAC1Cm4D,EAAI,GAAK,EACTq4I,EAAGK,UAAU75M,EAAGk3L,EAAIn7L,QAAQggL,EAAK/yK,IAAI,GACrCshC,GAAS,GACTtqC,GAAK,EACL,MACF,QACE,KAAM,yBAA2B+7K,EAAK/pK,EAG1C,OADAwnM,EAAGK,UAAU,EAAGvvK,GAAO,GAChB62B,EAAIz7D,MAAM,EAAG1F,EACrB,CAcD,SAAS+5M,GAAoB19C,GAE3B,OAAO87C,GADEM,GAAcp8C,GACE,GAAG,GAAG/iK,KAChC,CAuND,SAAS0gN,GAAeC,EAAK3gN,EAAMmqL,GACjC,IAAIr/H,EAAIz/B,EAAIu1L,EAAIz/J,EAChB,KAAuB,OAAhB2J,EAAK61J,EAAI,SAAc,EAAS71J,EAAG,OAA0B,OAAhBz/B,EAAKs1L,EAAI,SAAc,EAASt1L,EAAG,IACrF,KAAM,4CAER,IADqE,OAAhD81B,EAAsB,OAAhBy/J,EAAKD,EAAI,SAAc,EAASC,EAAG,SAAc,EAASz/J,EAAGnhD,OAASi/M,GAAc0B,EAAI,GAAG,GAAG3gN,MAAQ,IAAK,EAEpI,KAAM,sCAIR,IAHA,IAAIowK,EAAM,EACN8vC,EAAK3B,GAAeoC,EAAI,GAAG,GAAG3gN,MAAO6gN,EAAc,EAAGC,EAAe,GACrEC,EAAMxC,GAAeoC,EAAI,GAAG,GAAG3gN,MAAOghN,EAAe,EAAGC,EAAgB,GACnE7pM,EAAI,EAAGA,EAAIpX,EAAK2G,SAAUyQ,EACjC,GAAe,MAAXpX,EAAKoX,GAAT,CAOA,IAAI8pM,EAASC,EACb,OAHAjB,EAAGkB,UAAc,EAAJhqM,EAAOypM,GAAa,GACjCE,EAAIK,UAAc,EAAJhqM,EAAO4pM,GAAc,UAEpBhhN,EAAKoX,IAClB,IAAK,SACH8pM,EAAUjB,GAAkB,CAAEvnM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACpDg3B,EAAWX,GAAkB,CAAE9nM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACrD,MACF,IAAK,SACH+2B,EAAUjB,GAAkB,CAAEvnM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACpDg3B,EAAWX,GAAkB,CAAE9nM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACrD,MACF,IAAK,UACH+2B,EAAUjB,GAAkB,CAAEvnM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACpDg3B,EAAWX,GAAkB,CAAE9nM,EAAG,IAAKhJ,EAAG1P,EAAKoX,IAAM+yK,GACrD,MACF,QACE,MAAM,IAAItgL,MAAM,qBAAuB7J,EAAKoX,IAEhD0pM,EAAa55M,KAAKg6M,GAClBL,GAAeK,EAAQv6M,OACvBs6M,EAAc/5M,KAAKi6M,GACnBH,GAAgBG,EAASx6M,SACvBypK,CAxBD,MAHC8vC,EAAGkB,UAAc,EAAJhqM,EAAO,OAAO,GAC3B2pM,EAAIK,UAAc,EAAJhqM,EAAO,OA6BzB,IADAupM,EAAI,GAAG,GAAG3gN,KAAOg/M,GAAe5uC,GACzBh5J,EAAIupM,EAAI,GAAG,GAAG3gN,KAAK2G,OAAS,IAAKyQ,EACtC8oM,EAAGkB,UAAc,EAAJhqM,EAAO,OAAO,GAC3B2pM,EAAIK,UAAc,EAAJhqM,EAAO,OAAO,GAI9B,OAFAupM,EAAI,GAAG,GAAG3gN,KAAO0+M,GAASoC,GAC1BH,EAAI,GAAG,GAAG3gN,KAAO0+M,GAASuC,GACnB7wC,CACR,CA6QD,SAASixC,GAAcr5M,GACtB,OAAO,SAAkB+L,GACxB,IAAI,IAAItN,EAAI,EAAGA,GAAKuB,EAASrB,SAAUF,EAAG,CACzC,IAAI0R,EAAInQ,EAASvB,QACCjD,IAAfuQ,EAAKoE,EAAE,MAAmBpE,EAAKoE,EAAE,IAAMA,EAAE,IAChC,MAATA,EAAE,KAAYpE,EAAKoE,EAAE,IAAM4kB,OAAOhpB,EAAKoE,EAAE,KAC5C,CACD,CACD,CAyBD,SAASwjM,GAAe5nM,GACxBstM,GAAc,CACb,CAAC,aAAa,GAEd,CAAC,WAAW,GAEZ,CAAC,WAAY,QAEb,CAAC,eAAe,GAEhB,CAAC,OAAO,IATTA,CAUGttM,EACF,CAoSD,SAASq+J,GAAUp5E,EAAiBjlF,GACnC,MAAoB,OAAjBA,EAAKq1K,SAA0B80B,GAAUllH,EAAIjlF,GAC5B,WAAjBA,EAAKq1K,SA/lBT,SAA2BpwF,EAAIjlF,GAC7B,IAAKA,IAASA,EAAKutM,QACjB,MAAM,IAAIz3M,MAAM,oDAClB,IAAI+lD,EAAKopC,EAAGsrF,OAAOtrF,EAAGqrF,WAAW,IAC7BrrF,EAAGqrF,WAAW19K,OAAS,GACzBsN,QAAQzK,MAAM,4DAChB,IAAI6+F,EAAQo7E,GAAa7zH,EAAG,SAC5By4C,EAAM1/E,EAAEglD,EAAI06B,EAAM1/E,EAAErhB,EAAI,EACxB,IAAIi6M,GAAQ,EACRl5G,EAAMx5F,EAAEvH,EAAI,IACdi6M,GAAQ,EACRl5G,EAAMx5F,EAAEvH,EAAI,GAEV+gG,EAAMx5F,EAAE8+D,EAAI,KACd4zI,GAAQ,EACRl5G,EAAMx5F,EAAE8+D,EAAI,IAEV4zI,GACFttM,QAAQzK,MAAM,8CAA8CL,OAAOu6K,GAAar7E,KAClF,IAAIroG,EAAO2yL,GAAc/iI,EAAI,CAAEy4C,MAAOA,EAAO3mB,OAAQ,IACjDyoG,EAAM,CAAC,aACXnqL,EAAK0D,SAAQ,SAASgpK,GACpB,OAAOA,EAAIhpK,SAAQ,SAAS++K,GACP,iBAARA,GACT0H,EAAIjjL,KAAKu7K,EACZ,GACF,IACD,IAAI++B,EAAa,CAAC,EACdC,EAAU,GACVnxC,EAAMxnJ,GAAIvlB,KAAKwQ,EAAKutM,QAAS,CAAEj9M,KAAM,WACzCisK,EAAI1D,UAAUhpJ,KAAI,SAASk0F,EAAI0uD,GAC7B,MAAO,CAAC1uD,EAAIw4D,EAAIzD,UAAUrG,GAC3B,IAAE9iK,SAAQ,SAASgpK,GAClB,IAAI50D,EAAK40D,EAAI,GAAIyE,EAAKzE,EAAI,GACX,GAAX50D,EAAGzzG,MAEFyzG,EAAGrwG,KAAKiJ,MAAM,UAIV4uM,GADES,GADOjoG,EAAGniG,UAGlBjS,SAAQ,SAASg+M,GAClBD,EAAQv6M,KAAKw6M,EAAQz2M,IACrBu2M,EAAWE,EAAQz2M,IAAM,CAAEmuG,KAAM,GAAInnG,SAAUk/J,EAAI9sK,KAAM46M,GAAcyC,EAAQnC,SAAS,GAAG9mH,KAAK,GAAG,GAAGz4F,MACvG,GACF,IACDyhN,EAAQ/oK,MAAK,SAASngC,EAAIopM,GACxB,OAAOppM,EAAKopM,CACb,IACD,IAAIC,EAAiBH,EAAQxrM,QAAO,SAASsC,GAC3C,OAAOA,EAAK,CACb,IAAEqL,KAAI,SAASrL,GACd,MAAO,CAACA,EAAIymM,GAAezmM,GAC5B,IACD+3J,EAAI1D,UAAUhpJ,KAAI,SAASk0F,EAAI0uD,GAC7B,MAAO,CAAC1uD,EAAIw4D,EAAIzD,UAAUrG,GAC3B,IAAE9iK,SAAQ,SAASgpK,GAClB,IAAI50D,EAAK40D,EAAI,GAASA,EAAI,GACrB50D,EAAGrwG,KAAKiJ,MAAM,UAEV4uM,GAAeS,GAAoBjoG,EAAGniG,UAC5CjS,SAAQ,SAASwrF,GAClBA,EAAGqwH,SAAS77M,SAAQ,SAAS0jC,GAC3Bw6K,EAAel+M,SAAQ,SAASm+M,GAC1B3yH,EAAGqwH,SAASpgK,MAAK,SAAS2iK,GAC5B,OAA8C,OAAvC7C,GAAc6C,EAAKrpH,KAAK,GAAG,GAAGz4F,OAz3BjD,SAAoBy8E,EAAM/qE,GACxByoL,EACE,IAAK,IAAI9xJ,EAAI,EAAGA,GAAKo0C,EAAK91E,OAAS+K,EAAO/K,SAAU0hC,EAAG,CACrD,IAAK,IAAI7mB,EAAI,EAAGA,EAAI9P,EAAO/K,SAAU6a,EACnC,GAAIi7D,EAAKp0C,EAAI7mB,IAAM9P,EAAO8P,GACxB,SAAS24K,EACb,OAAO,CACR,CACH,OAAO,CACR,CAg3BkE4nB,CAAWD,EAAK9hN,KAAM6hN,EAAI,GAClF,KACCL,EAAWK,EAAI,IAAIzoG,KAAKlyG,KAAKgoF,EAAGjkF,GAEnC,GACF,GACF,GACF,IAUD,IAHA,IAEI+2M,EAFAxyD,EAAQ1mI,GAAIsvB,KAAKk4H,EAAKkxC,EAAW,GAAGvvM,UACpCmG,EAAIknM,GAAeS,GAAoBvwD,EAAM75I,UAExC0C,EAAK,EAAGA,EAAKD,EAAEzR,SAAU0R,EAAI,CACpC,IAAI4pM,EAAS7pM,EAAEC,GACE,GAAb4pM,EAAOh3M,KACT+2M,EAAUC,EACb,CACD,IAAIC,EAAezB,GAAoBtB,GAAc6C,EAAQzC,SAAS,GAAGv/M,MAAM,GAAG,GAAGA,MAGrF,IADAoY,EAAIknM,GAAeS,IADnBvwD,EAAQ1mI,GAAIsvB,KAAKk4H,EAAKkxC,EAAWU,GAAcjwM,WACF0D,UACxC0C,EAAK,EAAGA,EAAKD,EAAEzR,SAAU0R,GAC5B4pM,EAAS7pM,EAAEC,IACApN,IAAMi3M,IACfF,EAAUC,GAKd,IAHAC,EAAezB,GAAoBtB,GAAc6C,EAAQzC,SAAS,GAAGv/M,MAAM,GAAG,GAAGA,MAEjFoY,EAAIknM,GAAeS,IADnBvwD,EAAQ1mI,GAAIsvB,KAAKk4H,EAAKkxC,EAAWU,GAAcjwM,WACF0D,UACxC0C,EAAK,EAAGA,EAAKD,EAAEzR,SAAU0R,GAC5B4pM,EAAS7pM,EAAEC,IACApN,IAAMi3M,IACfF,EAAUC,GAKd,IAHAC,EAAezB,GAAoBtB,GAAc6C,EAAQzC,SAAS,GAAGv/M,MAAM,GAAG,GAAGA,MAEjFoY,EAAIknM,GAAeS,IADnBvwD,EAAQ1mI,GAAIsvB,KAAKk4H,EAAKkxC,EAAWU,GAAcjwM,WACF0D,UACxC0C,EAAK,EAAGA,EAAKD,EAAEzR,SAAU0R,GAC5B4pM,EAAS7pM,EAAEC,IACApN,IAAMi3M,IACfF,EAAUC,GAEd,IAAIhtH,EAAKkqH,GAAc6C,EAAQzC,SAAS,GAAGv/M,MAEzCi1F,EAAG,GAAG,GAAGj1F,KAAOg/M,GAAe32G,EAAMx5F,EAAE8+D,EAAI,GAC3CsnB,EAAG,GAAG,GAAGj1F,KAAOg/M,GAAe32G,EAAMx5F,EAAEvH,EAAI,GAKzC,IAJF,IAAI66M,EAAY1B,GAAoBxrH,EAAG,IAAI,GAAGj1F,MAC1CoiN,EAAYt5L,GAAIsvB,KAAKk4H,EAAKkxC,EAAWW,GAAWlwM,UAChDowM,EAAK/C,GAAeS,GAAoBqC,EAAUzsM,UAE3C6L,EAAI,EAAGA,EAAI6gM,EAAG17M,QACjB07M,EAAG7gM,GAAGvW,IAAMk3M,IADe3gM,GAIjC,GAAI6gM,EAAG7gM,GAAGvW,IAAMk3M,EACd,KAAM,6BACR,IAAIG,EAASnD,GAAckD,EAAG7gM,GAAG+9L,SAAS,GAAGv/M,MAC7CsiN,EAAO,GAAK,GACZA,EAAO,GAAK,GAAIA,EAAO,GAAK,GAC5B,IAAK,IAAIlrM,EAAI,EAAGA,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,EAAG,CACnC,IAAImrM,EAAO,GACXA,EAAK,GAAKA,EAAK,GAAK,CAAC,CAAEl+M,KAAM,EAAGrE,KAAMg/M,GAAe5nM,EAAI,UACzDkrM,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMq/M,GAAckD,KAC9CD,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMg/M,GAAe5nM,KAC/CkrM,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMg/M,GAAe5nM,IAChD,CACDkrM,EAAO,GAAK,GACZA,EAAO,GAAK,GAAIA,EAAO,GAAK,GAC5B,IAAK,IAAIr6K,EAAI,EAAGA,GAAKogE,EAAMx5F,EAAE8+D,IAAK1lC,GAChCs6K,EAAO,IACF,GAAKA,EAAK,GAAK,CAAC,CAAEl+M,KAAM,EAAGrE,KAAMg/M,GAAe/2K,EAAI,UACzDq6K,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMq/M,GAAckD,KAC9CD,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMg/M,GAAe/2K,KAC/Cq6K,EAAO,GAAGp7M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMg/M,GAAe/2K,KAEjDo6K,EAAG7gM,GAAG+9L,SAAS,GAAGv/M,KAAOq/M,GAAciD,GAEzCF,EAAUzsM,QAAUqqM,GAAkBR,GAAe6C,IACrDD,EAAUjiG,KAAOiiG,EAAUzsM,QAAQhP,cAC5BsuF,EAAG,IACV,IAAIutH,EAAQrD,GAAclqH,EAAG,GAAG,GAAGj1F,MAEjCwiN,EAAM,GAAG,GAAGxiN,KAAOg/M,GAAe32G,EAAMx5F,EAAE8+D,EAAI,GAC9C,IACI80I,EAAiBhC,GADHtB,GAAcqD,EAAM,GAAG,GAAGxiN,MACS,GAAG,GAAGA,MAIzD,IAFFqiN,EAAK/C,GAAeS,IADpBqC,EAAYt5L,GAAIsvB,KAAKk4H,EAAKkxC,EAAWiB,GAAgBxwM,WACH0D,WAEzC,GAAG1K,IAAMw3M,EACd,KAAM,0BACR,IAAIC,EAAcvD,GAAckD,EAAG,GAAG9C,SAAS,GAAGv/M,MAClD,IAAKioC,EAAI,EAAGA,EAAIjoC,EAAK2G,SAAUshC,EAAG,CAChC,IAAI06K,EAAUxD,GAAcuD,EAAY,GAAG,GAAG1iN,MAC9C2iN,EAAQ,GAAG,GAAG3iN,KAAOg/M,GAAe/2K,GACpC06K,EAAQ,GAAG,GAAG3iN,KAAOg/M,GAAeh/M,EAAKioC,GAAGthC,QAC5C+7M,EAAY,GAAGz6K,GAAK,CAAE5jC,KAAMq+M,EAAY,GAAG,GAAGr+M,KAAMrE,KAAMq/M,GAAcsD,GACzE,CACDN,EAAG,GAAG9C,SAAS,GAAGv/M,KAAOq/M,GAAcqD,GAEzCN,EAAUzsM,QAAUqqM,GAAkBR,GAAe6C,IACrDD,EAAUjiG,KAAOiiG,EAAUzsM,QAAQhP,OACnC,IAAIi8M,EAAiBnC,GAAoB+B,EAAM,GAAG,GAAGxiN,MAInD,IAFFqiN,EAAK/C,GAAeS,IADpBqC,EAAYt5L,GAAIsvB,KAAKk4H,EAAKkxC,EAAWoB,GAAgB3wM,WACH0D,WAEzC,GAAG1K,IAAM23M,EACd,KAAM,0BAER,IADAF,EAAcvD,GAAckD,EAAG,GAAG9C,SAAS,GAAGv/M,MACzCoX,EAAI,EAAGA,GAAKixF,EAAMx5F,EAAEvH,IAAK8P,GAC5BurM,EAAUxD,GAAcuD,EAAY,GAAG,GAAG1iN,OAClC,GAAG,GAAGA,KAAOg/M,GAAe5nM,GACpCurM,EAAQ,GAAG,GAAG3iN,KAAOg/M,GAAe32G,EAAMx5F,EAAE8+D,EAAI,GAChD+0I,EAAY,GAAGtrM,GAAK,CAAE/S,KAAMq+M,EAAY,GAAG,GAAGr+M,KAAMrE,KAAMq/M,GAAcsD,IAE1EN,EAAG,GAAG9C,SAAS,GAAGv/M,KAAOq/M,GAAcqD,GAEzCN,EAAUzsM,QAAUqqM,GAAkBR,GAAe6C,IACrDD,EAAUjiG,KAAOiiG,EAAUzsM,QAAQhP,OACnC,IAAIk8M,EAASpC,GAAoB+B,EAAM,GAAG,GAAGxiN,OAC7C,WAIE,IAHA,IAEI8iN,EAFA/hE,EAASj4H,GAAIsvB,KAAKk4H,EAAKkxC,EAAWqB,GAAQ5wM,UAC1CqG,EAAKgnM,GAAeS,GAAoBh/D,EAAOprI,UAE1CotM,EAAM,EAAGA,EAAMzqM,EAAG3R,SAAUo8M,EAAK,CACxC,IAAIrB,EAAUppM,EAAGyqM,GACbrB,EAAQz2M,IAAM43M,IAChBC,EAAUpB,EACb,CACD,IAAIsB,EAAU7D,GAAc2D,EAAQvD,SAAS,GAAGv/M,MAE9CgjN,EAAQ,GAAK,GACb,IAAIC,EAAS,GACb94B,EAAIzmL,SAAQ,SAASgR,EAAKjO,GACxBw8M,EAAO,GAAK,CAAC,CAAE5+M,KAAM,EAAGrE,KAAMg/M,GAAev4M,KAC7Cw8M,EAAO,GAAK,CAAC,CAAE5+M,KAAM,EAAGrE,KAAMg/M,GAAe,KAC7CiE,EAAO,GAAK,CAAC,CAAE5+M,KAAM,EAAGrE,KAAMy+M,GAAM/pM,KACpCsuM,EAAQ,GAAG97M,KAAK,CAAE7C,KAAM,EAAGrE,KAAMq/M,GAAc4D,IAChD,IAEHH,EAAQvD,SAAS,GAAGv/M,KAAOq/M,GAAc2D,GACzC,IACIE,EAAQlD,GADHR,GAAelnM,IAExByoI,EAAOprI,QAAUutM,EACjBniE,EAAO5gC,KAAO4gC,EAAOprI,QAAQhP,MAxB/B,IA0BA,IAAIw8M,EAAOhE,GAAcqD,EAAM,GAAG,GAAGxiN,MAE/B0Y,EAAIyqM,EAAK,GAAG,UACTA,EAAK,GACZ,IAAIz7F,EAAKy3F,GAAczmM,EAAE1Y,MAEnBojN,EAAU3C,GAAoB/4F,EAAG,GAAG,GAAG1nH,OAC3C,WAIE,IAHA,IAEIqjN,EAFAC,EAASx6L,GAAIsvB,KAAKk4H,EAAKkxC,EAAW4B,GAASnxM,UAC3CsxM,EAAKjE,GAAeS,GAAoBuD,EAAO3tM,UAE1CotM,EAAM,EAAGA,EAAMQ,EAAG58M,SAAUo8M,EAAK,CACxC,IAAIrB,EAAU6B,EAAGR,GACbrB,EAAQz2M,IAAMm4M,IAChBC,EAAW3B,EACd,CACD,IAAI8B,EAAWrE,GAAckE,EAAS9D,SAAS,GAAGv/M,aAEzCwjN,EAAS,UACTL,EAAK,GACZ,IAAIM,EAAU,IAAIzuM,WAAWwuM,EAAS,GAAG,GAAGxjN,MAC5CwjN,EAAS,GAAK,GAEd,IADA,IAAIpzC,EAAM,EACDszC,EAAK,EAAGA,GAAMr7G,EAAMx5F,EAAE8+D,IAAK+1I,EAAI,CACtC,IAAIC,EAAUxE,GAAcsE,GAC5BrzC,GAAOswC,GAAeiD,EAAS3jN,EAAK0jN,GAAKv5B,GACzCw5B,EAAQ,GAAG,GAAG3jN,KAAOg/M,GAAe0E,GACpCF,EAAS,GAAGt8M,KAAK,CAAElH,KAAMq/M,GAAcsE,GAAUt/M,KAAM,GACxD,CACDm/M,EAAS,GAAK,CAAC,CAAEn/M,KAAM,EAAGrE,KAAMg/M,GAAe32G,EAAMx5F,EAAEvH,EAAI,KAC3Dk8M,EAAS,GAAK,CAAC,CAAEn/M,KAAM,EAAGrE,KAAMg/M,GAAe32G,EAAMx5F,EAAE8+D,EAAI,KAC3D61I,EAAS,GAAK,CAAC,CAAEn/M,KAAM,EAAGrE,KAAMg/M,GAAe5uC,KAC/CozC,EAAS,GAAK,CAAC,CAAEn/M,KAAM,EAAGrE,KAAMg/M,GAAe32G,EAAMx5F,EAAE8+D,EAAI,KAE7D01I,EAAS9D,SAAS,GAAGv/M,KAAOq/M,GAAcmE,GAC1C,IACIN,EAAQlD,GADHR,GAAe+D,IAExBD,EAAO3tM,QAAUutM,EACjBI,EAAOnjG,KAAOmjG,EAAO3tM,QAAQhP,MA/B/B,IAkCF+R,EAAE1Y,KAAOq/M,GAAc33F,GAEzB86F,EAAM,GAAG,GAAGxiN,KAAOq/M,GAAc8D,GAEnCluH,EAAG,GAAG,GAAGj1F,KAAOq/M,GAAcmD,GAEhCR,EAAQzC,SAAS,GAAGv/M,KAAOq/M,GAAcpqH,GACzC,IACI2uH,EAAO5D,GADHR,GAAepnM,IAIvB,OAFAo3I,EAAM75I,QAAUiuM,EAChBp0D,EAAMrvC,KAAOqvC,EAAM75I,QAAQhP,OACpB2pK,CACR,CAoVsCuzC,CAAkB7qH,EAAIjlF,GACxC,QAAjBA,EAAKq1K,SAQT,SAAyBpwF,EAAiBjlF,GACzCwvL,GAAW,KACRvqG,IAAOA,EAAGymG,MACZzmG,EAAGymG,IAAMxiB,GAAI7Y,KAEXprE,GAAMA,EAAGymG,MACXl1B,KAAYF,GAAerxE,EAAGymG,KAE9B1rL,EAAKy4L,OAAStwB,GAAUljF,EAAGymG,KAAM1rL,EAAKy4L,OAAOxzG,EAAGymG,IAAI,QAAU,EAC9D1rL,EAAK04L,IAAMzzG,EAAGymG,KAEf1rL,EAAKq3K,KAAO,CAAC,EAAGr3K,EAAK+vM,OAAS,CAAC,EAC/B/vM,EAAKk5L,QAAkB,GAAqBl5L,EAAKk5L,QAAQnP,MAAQ,EAAG/pL,EAAKk5L,QAAQjP,OAAS,EACvF8N,GAAiB/3L,EAAKm5L,WAAa,IAAIr2H,KACnC9iE,EAAKm5L,WAAa,CAAC,EAAGn5L,EAAKm5L,WAAW6W,IAAM,UAAWhwM,EAAKm5L,WAAW6W,KAC9E,IAAIC,EAAyB,QAAjBjwM,EAAKq1K,SAAqB,MAAQ,MAC1C66B,EAAS1e,GAAQ9iM,QAAQsR,EAAKq1K,WAAa,EAC3Cj3G,EA92jBI,CACPm2G,UAAU,GAAIlE,OAAO,GAAI0E,OAAO,GAAIC,QAAQ,GAAIC,OAAO,GACvDoC,KAAK,GAAIxC,KAAK,GAAIC,SAAS,GAAIq7B,iBAAiB,GAAIC,MAAM,GAC1DC,UAAU,GAAIC,SAAS,GAAIC,UAAU,GAAIC,OAAO,GAAItuF,OAAO,GAC3DuuF,WAAW,GAAIjO,IAAK,GAAIkO,SAAU,GAAIxnE,SAAU,GAAI0nD,OAAO,GAC3D+f,KAAK,GAAInoD,MAAO,IA02jBjBo/C,GAAe5nM,EAAOA,GAAQ,CAAC,GAC/B,IAAIwpK,EAAMI,KACNjuJ,EAAI,GAAI67J,EAAM,EAElBx3K,EAAK8rL,QAAU,GACf0M,GAAex4L,EAAK8rL,QAAS,CAAC,EAAG,CAAC2M,OAAO,CAAC,QAAU,KAEhDxzG,EAAGizF,QAAOjzF,EAAGizF,MAAQ,CAAC,GAS1B,GANA3O,GAAaC,EADb7tJ,EAAI,oBACiBs8J,GAAiBhzF,EAAGizF,MAAOl4K,IAChDo+D,EAAGiyI,UAAUl9M,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKW,YAG/Bt6J,EAAI,mBACDspE,EAAGizF,OAASjzF,EAAGizF,MAAM5H,iBACnB,GAAIrrF,EAAGy0G,UAAaz0G,EAAGy0G,SAASnpB,OAChC,CAEJ,IADA,IAAIqgC,EAAM,GACFl4L,EAAK,EAAGA,EAAKusE,EAAGqrF,WAAW19K,SAAU8lB,EACF,IAAtCusE,EAAGy0G,SAASnpB,OAAO73J,IAAK,CAAC,GAAG4mL,QAAasR,EAAIz9M,KAAK8xF,EAAGqrF,WAAW53J,IACrEusE,EAAGizF,MAAM5H,WAAasgC,CACtB,MAN4C3rH,EAAGizF,MAAM5H,WAAarrF,EAAGqrF,WAOtErrF,EAAGizF,MAAMO,WAAaxzF,EAAGizF,MAAM5H,WAAW19K,OAC1C22K,GAAaC,EAAK7tJ,EAAG48J,GAAgBtzF,EAAGizF,QACxC95G,EAAGkyI,SAASn9M,KAAKwoB,GACjB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKY,WAE5BjxF,EAAGu7G,YAAcv7G,EAAGizF,OAASt/K,GAAKqsF,EAAGu7G,WAAW,CAAC,GAAG5tM,OAAS,IAE/D22K,GAAaC,EADb7tJ,EAAI,sBACiBg9J,GAAiB1zF,EAAGu7G,YACzCpiI,EAAGmyI,UAAUp9M,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKa,aAGhC,IAAIqB,EAAI,EAAEA,GAAOvyF,EAAGqrF,WAAW19K,SAAU4kL,EAAK,CAC7C,IAAIq5B,EAAS,CAAC,MAAM,CAAC,GACjBh1J,EAAKopC,EAAGsrF,OAAOtrF,EAAGqrF,WAAWkH,EAAI,KACxB37H,GAAM,CAAC,GAAG,SAWvB,GALC0tH,GAAaC,EADb7tJ,EAAI,sBAAwB67J,EAAM,IAAMy4B,EACnB7P,GAAS5oB,EAAI,EAAG77J,EAAG3b,EAAMilF,EAAI4rH,IAClDzyI,EAAGiyG,OAAOl9K,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,mBAAqBv4B,EAAM,IAAMy4B,EAAO36B,GAAKoB,GAAG,IAGxE76H,EAAI,CACN,IAAIi5H,EAAWj5H,EAAG,aACdi1J,GAAW,EACXj6G,EAAK,GACNi+E,GAAYA,EAASliL,OAAS,IAEhC22K,GAAaC,EADb3yE,EAAK,cAAgB2gF,EAAM,IAAMy4B,EACX5P,GAAWvrB,EAAUj+E,EAAI72F,IAC/Co+D,EAAG02G,SAAS3hL,KAAK0jG,GACjB0gF,GAASs5B,GAAS,EAAG,cAAgBr5B,EAAM,IAAMy4B,EAAO36B,GAAKU,MAC7D86B,GAAW,GAETj1J,EAAG,YACFi1J,GAAUvnC,GAAaC,EAAK,yBAA4BgO,EAAO,OAAQiY,GAAmBjY,EAAK37H,EAAG,sBAE/FA,EAAG,oBACHA,EAAG,UACV,CAEEg1J,EAAO,OAAOE,MAAMxnC,GAAaC,EAAK2N,GAAcx7J,GAAIy7J,GAAWy5B,GACtE,CAEkB,MAAhB7wM,EAAKk5L,SAAmBl5L,EAAKk5L,QAAQtmM,OAAS,IAEhD22K,GAAaC,EADb7tJ,EAAI,oBAAsBs0L,EArsM5B,SAAmBhkN,EAAcyH,EAAiBsM,GACjD,OAAyB,SAAjBtM,EAAK2E,OAAO,GAAc+xL,GAAgBR,IAAe39L,EAAM+T,EACvE,CAosMsBgxM,CAAUhxM,EAAKk5L,QAASv9K,EAAG3b,IAChDo+D,EAAGy2G,KAAK1hL,KAAKwoB,GACb47J,GAASv3K,EAAK+vM,QAAS,EAAG,iBAAmBE,EAAO36B,GAAKc,MAI1D7M,GAAaC,EADb7tJ,EAAI,eAAiBs0L,EA5tMtB,SAAkBhrH,EAAIvxF,EAAiBsM,GACtC,OAAyB,SAAjBtM,EAAK2E,OAAO,GAAcunM,GAAeV,IAAcj6G,EAAIjlF,EACnE,CA2tMqBixM,CAAShsH,EAAItpE,EAAG3b,IACrCo+D,EAAGm2G,UAAUphL,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKC,IAK/BhM,GAAaC,EADb7tJ,EAAI,sBACiBkzK,GAAY5pG,EAAG6pG,OAAQ9uL,IAC5Co+D,EAAGoyI,OAAOr9M,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,mBAAoBz6B,GAAKgB,OAKnD/M,GAAaC,EADb7tJ,EAAI,aAAes0L,EA7tMpB,SAAmBhkN,EAAMyH,EAAiBsM,GACzC,OAAyB,SAAjBtM,EAAK2E,OAAO,GAAc81L,GAAgB1C,IAAex/L,EAAM+T,EACvE,CA4tMqBkxM,CAAUjsH,EAAItpE,EAAG3b,IACtCo+D,EAAG8jD,OAAO/uH,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,UAAYE,EAAO36B,GAAKe,KAE/CpxF,EAAGu0G,QAAU0W,IAEf3mC,GAAaC,EADb7tJ,EAAI,oBACiBspE,EAAGu0G,QACxBp7H,EAAGokI,IAAIrvM,KAAKwoB,GACZ47J,GAASv3K,EAAK+vM,QAAS,EAAG,iBAAkBz6B,GAAK4B,MAalD,OATA3N,GAAaC,EADb7tJ,EAAI,eAAiBs0L,EAxtMtB,SAAsBv8M,GACrB,OAAyB,SAAjBA,EAAK2E,OAAO,GAAc22L,GAAmBO,KACrD,CAutMqB4hB,CAAax1L,IAClCyiD,EAAG8qE,SAAS/1I,KAAKwoB,GACjB47J,GAASv3K,EAAK+vM,QAAS,EAAG,YAAcE,EAAO36B,GAAKyB,QAEpDxN,GAAaC,EAAK,sBAAuB0L,GAAS92G,EAAIp+D,IACtDupK,GAAaC,EAAK,cAAe4N,GAAWp3K,EAAKq3K,OACjD9N,GAAaC,EAAK,qBAAuBymC,EAAQ,QAAS74B,GAAWp3K,EAAK+vM,gBAEnE/vM,EAAKy4L,cAAez4L,EAAK04L,IACzBlvB,CACP,CA7ImC4nC,CAAgBnsH,EAAIjlF,GAChDqxM,GAAepsH,EAAIjlF,EAC1B,CA6ID,SAASqxM,GAAepsH,EAAiBjlF,GACxCwvL,GAAW,KACRvqG,IAAOA,EAAGymG,MACZzmG,EAAGymG,IAAMxiB,GAAI7Y,KAEXprE,GAAMA,EAAGymG,MACXl1B,KAAYF,GAAerxE,EAAGymG,KAE9B1rL,EAAKy4L,OAAStwB,GAAUljF,EAAGymG,KAAM1rL,EAAKy4L,OAAOxzG,EAAGymG,IAAI,QAAU,EAC9D1rL,EAAK04L,IAAMzzG,EAAGymG,KAEf1rL,EAAKq3K,KAAO,CAAC,EAAGr3K,EAAK+vM,OAAS,CAAC,EAC/B/vM,EAAKk5L,QAAkB,GAAqBl5L,EAAKk5L,QAAQnP,MAAQ,EAAG/pL,EAAKk5L,QAAQjP,OAAS,EACvF8N,GAAiB/3L,EAAKm5L,WAAa,IAAIr2H,KACnC9iE,EAAKm5L,WAAa,CAAC,EAAGn5L,EAAKm5L,WAAW6W,IAAM,UAAWhwM,EAAKm5L,WAAW6W,KAC9E,IAAIC,EAAQ,MACRC,EAAS1e,GAAQ9iM,QAAQsR,EAAKq1K,WAAa,EAC3Cj3G,EAr/jBI,CACPm2G,UAAU,GAAIlE,OAAO,GAAI0E,OAAO,GAAIC,QAAQ,GAAIC,OAAO,GACvDoC,KAAK,GAAIxC,KAAK,GAAIC,SAAS,GAAIq7B,iBAAiB,GAAIC,MAAM,GAC1DC,UAAU,GAAIC,SAAS,GAAIC,UAAU,GAAIC,OAAO,GAAItuF,OAAO,GAC3DuuF,WAAW,GAAIjO,IAAK,GAAIkO,SAAU,GAAIxnE,SAAU,GAAI0nD,OAAO,GAC3D+f,KAAK,GAAInoD,MAAO,IAi/jBjBo/C,GAAe5nM,EAAOA,GAAQ,CAAC,GAC/B,IAAIwpK,EAAMI,KACNjuJ,EAAI,GAAI67J,EAAM,EAclB,GAZAx3K,EAAK8rL,QAAU,GACf0M,GAAex4L,EAAK8rL,QAAS,CAAC,EAAG,CAAC2M,OAAO,CAAC,QAAU,KAEhDxzG,EAAGizF,QAAOjzF,EAAGizF,MAAQ,CAAC,GAG1B3O,GAAaC,EADb7tJ,EAAI,oBACiBs8J,GAAiBhzF,EAAGizF,MAAOl4K,IAChDo+D,EAAGiyI,UAAUl9M,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKW,YAG/Bt6J,EAAI,mBACDspE,EAAGizF,OAASjzF,EAAGizF,MAAM5H,iBACnB,GAAIrrF,EAAGy0G,UAAaz0G,EAAGy0G,SAASnpB,OAChC,CAEJ,IADA,IAAIqgC,EAAM,GACFl4L,EAAK,EAAGA,EAAKusE,EAAGqrF,WAAW19K,SAAU8lB,EACF,IAAtCusE,EAAGy0G,SAASnpB,OAAO73J,IAAK,CAAC,GAAG4mL,QAAasR,EAAIz9M,KAAK8xF,EAAGqrF,WAAW53J,IACrEusE,EAAGizF,MAAM5H,WAAasgC,CACtB,MAN4C3rH,EAAGizF,MAAM5H,WAAarrF,EAAGqrF,WAOtErrF,EAAGizF,MAAMO,WAAaxzF,EAAGizF,MAAM5H,WAAW19K,OAC1C22K,GAAaC,EAAK7tJ,EAAG48J,GAAgBtzF,EAAGizF,QACxC95G,EAAGkyI,SAASn9M,KAAKwoB,GACjB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKY,WAE5BjxF,EAAGu7G,YAAcv7G,EAAGizF,OAASt/K,GAAKqsF,EAAGu7G,WAAW,CAAC,GAAG5tM,OAAS,IAE/D22K,GAAaC,EADb7tJ,EAAI,sBACiBg9J,GAAiB1zF,EAAGu7G,YACzCpiI,EAAGmyI,UAAUp9M,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKa,aAGhC,IAAIya,EAAS,CAAC,WAGd,IAFA5wL,EAAKgxL,KAAO,EAERxZ,EAAI,EAAEA,GAAOvyF,EAAGqrF,WAAW19K,SAAU4kL,EAAK,CAC7C,IAAIq5B,EAAS,CAAC,MAAM,CAAC,GACjBh1J,EAAKopC,EAAGsrF,OAAOtrF,EAAGqrF,WAAWkH,EAAI,KACxB37H,GAAM,CAAC,GAAG,SAWvB,GALC0tH,GAAaC,EADb7tJ,EAAI,sBAAwB67J,EAAM,IAAMy4B,EACnB7W,GAAa5hB,EAAI,EAAGx3K,EAAMilF,EAAI4rH,IACnDzyI,EAAGiyG,OAAOl9K,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,mBAAqBv4B,EAAM,IAAMy4B,EAAO36B,GAAKoB,GAAG,IAGxE76H,EAAI,CACN,IAAIi5H,EAAWj5H,EAAG,aACdi1J,GAAW,EACXj6G,EAAK,GACT,GAAGi+E,GAAYA,EAASliL,OAAS,EAAG,CACnC,IAAI0+M,GAAS,EACbx8B,EAASnlL,SAAQ,SAASkhM,GACzBA,EAAK,GAAGlhM,SAAQ,SAAS4D,GAAe,GAAPA,EAAEqf,IAAW0+L,GAAS,EAAO,GAC9D,IACEA,IAEF/nC,GAAaC,EADb3yE,EAAK,sCAAwC2gF,EAAM,IAAMy4B,EACnCtf,GAAgB7b,EAAU8b,EAAQ5wL,IACxDo+D,EAAG+xI,iBAAiBh9M,KAAK0jG,GACzB0gF,GAASs5B,GAAS,EAAG,sCAAwCr5B,EAAM,IAAMy4B,EAAO36B,GAAK0B,QAItFzN,GAAaC,EADb3yE,EAAK,cAAgB2gF,EAAM,IAAMy4B,EACX3f,GAAmBxb,IACzC12G,EAAG02G,SAAS3hL,KAAK0jG,GACjB0gF,GAASs5B,GAAS,EAAG,cAAgBr5B,EAAM,IAAMy4B,EAAO36B,GAAKU,MAC7D86B,GAAW,CACX,CACEj1J,EAAG,YACFi1J,GAAUvnC,GAAaC,EAAK,yBAA4BgO,EAAO,OAAQiY,GAAmBjY,EAAK37H,EAAG,sBAE/FA,EAAG,oBACHA,EAAG,UACV,CAEEg1J,EAAO,OAAOE,MAAMxnC,GAAaC,EAAK2N,GAAcx7J,GAAIy7J,GAAWy5B,GACtE,CAoDD,OAlDmB,MAAhB7wM,EAAKk5L,SAAmBl5L,EAAKk5L,QAAQtmM,OAAS,IAEhD22K,GAAaC,EADb7tJ,EAAI,uBACiBiuK,GAAc5pL,EAAKk5L,QAASl5L,IACjDo+D,EAAGy2G,KAAK1hL,KAAKwoB,GACb47J,GAASv3K,EAAK+vM,QAAS,EAAG,oBAA0Bz6B,GAAKc,MAI1D7M,GAAaC,EADb7tJ,EAAI,kBACiBujL,GAAaj6G,IAClC7mB,EAAGm2G,UAAUphL,KAAKwoB,GAClB47J,GAASv3K,EAAKq3K,KAAM,EAAG17J,EAAG25J,GAAKC,IAK/BhM,GAAaC,EADb7tJ,EAAI,sBACiBkzK,GAAY5pG,EAAG6pG,OAAQ9uL,IAC5Co+D,EAAGoyI,OAAOr9M,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,mBAAoBz6B,GAAKgB,OAKnD/M,GAAaC,EADb7tJ,EAAI,gBACiB8vK,GAAcxmG,EAAIjlF,IACvCo+D,EAAG8jD,OAAO/uH,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,aAAmBz6B,GAAKe,KAE/CpxF,EAAGu0G,QAAU0W,IAEf3mC,GAAaC,EADb7tJ,EAAI,oBACiBspE,EAAGu0G,QACxBp7H,EAAGokI,IAAIrvM,KAAKwoB,GACZ47J,GAASv3K,EAAK+vM,QAAS,EAAG,iBAAkBz6B,GAAK4B,MAIlD3N,GAAaC,EADb7tJ,EAAI,kBACiB4zK,MACrBnxH,EAAG8qE,SAAS/1I,KAAKwoB,GACjB47J,GAASv3K,EAAK+vM,QAAS,EAAG,eAAqBz6B,GAAKyB,QAEjD6Z,EAAOh+L,OAAS,IAElB22K,GAAaC,EADb7tJ,EAAI,wBA1gXN,SAA0Bi1K,GACzB,IAAIj2J,EAAI,CAACkvI,GAAYqB,GAAU,aAAc,KAAM,CAClD,MAASE,GACT,UAAWC,GAAW,KACpB7vK,QAAQ,QAAS,MAUpB,OATAo1L,EAAOjhM,SAAQ,SAAS4hN,EAAQ9+C,GAC/B93H,EAAExnC,KAAK+3K,GAAU,SAAU,KAAM,CAChC5hI,YAAaioK,EACbr6M,GAAI,6BAA+B,eAAiBu7J,GAAKp6J,OAAO,IAAM,IACtEm5M,OAAQD,EACRE,WAAY,SAEb,IACD92K,EAAExnC,KAAK,iBACAwnC,EAAE7+B,KAAK,GACd,CA4/WsB41M,CAAiB9gB,IACtCxyH,EAAGwyH,OAAOz9L,KAAKwoB,GACf47J,GAASv3K,EAAK+vM,QAAS,EAAG,qBAAsBz6B,GAAK2B,SAGtD1N,GAAaC,EAAK,sBAAuB0L,GAAS92G,EAAIp+D,IACtDupK,GAAaC,EAAK,cAAe4N,GAAWp3K,EAAKq3K,OACjD9N,GAAaC,EAAK,6BAAwC4N,GAAWp3K,EAAK+vM,gBAEnE/vM,EAAKy4L,cAAez4L,EAAK04L,IACzBlvB,CACP,CAED,SAASkd,GAAU/qK,EAAcgf,GAChC,IAAIt2B,EAAI,GACR,QAAQs2B,GAAG,CAAC,GAAGrqC,MAAQ,UACtB,IAAK,SAGL,IAAK,QAAU,MAAO,CAACqrB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAFnE,IAAK,SAAUtX,EAAIsqJ,GAAchzI,EAAEtjB,MAAM,EAAE,KAAM,MACjD,IAAK,SAAUgM,EAAIsX,EAAG,MAEtB,QAAS,MAAM,IAAI7lB,MAAM,sBAAwB6kC,GAAKA,EAAErqC,MAAQ,cAEjE,MAAO,CAAC+T,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAAIwC,EAAExC,WAAW,GAC5I,CA4GD,SAAS8vM,GAAcp1C,EAAsB5hI,GAC5C,OAAOA,EAAErqC,MACR,IAAK,SAAU,IAAK,SAAU,MAC9B,IAAK,SAAU,IAAK,QAASqqC,EAAErqC,KAAO,GAAI,MAC1C,IAAK,OAAQ,OAAOw2K,GAASnsI,EAAE89H,KAAM1jJ,GAAI9Y,MAAMsgK,EAAK,CAACjsK,KAAKs+J,GAAU,SAAW,MAC/E,IAAK,SAAU,MAAM,IAAI94J,MAAM,qCAAuC6kC,EAAE06I,SAAW,WACnF,QAAS,MAAM,IAAIv/K,MAAM,qBAAuB6kC,EAAErqC,MAEnD,OAAOykB,GAAI9Y,MAAMsgK,EAAK5hI,EACtB,CAaD,SAASi3K,GAAqB/2L,EAAW8f,GACxC,IAAIk3K,EAAQ,CAAC,EACTC,EAAQljD,GAAU,aAAsC,qBAAf3tJ,WAA6B,QAAU,SAEpF,GADG05B,EAAEmjI,cAAa+zC,EAAM/zC,YAAc,WACnCnjI,EAAE3tC,SAAU6kN,EAAMvhN,KAAOwhN,OACvB,OAAOn3K,EAAErqC,MACb,IAAK,SAAUuhN,EAAMvhN,KAAO,SAAU,MACtC,IAAK,SAAUuhN,EAAMvhN,KAAO,SAAU,MACtC,IAAK,SAAU,MAAM,IAAIwF,MAAM,qCAAuC6kC,EAAE06I,SAAW,WACnF,IAAK,SACL,IAAK,OAAQw8B,EAAMvhN,KAAOwhN,EAAO,MACjC,QAAS,MAAM,IAAIh8M,MAAM,qBAAuB6kC,EAAErqC,MAEnD,IAAIwjE,EAAMj5C,EAAEi+I,UAAY/jJ,GAAI9Y,MAAM4e,EAAG,CAACsiJ,SAAS,MAAO7sK,KAAa,CAAC,WAAc,SAAU,OAAU,UAAsBuhN,EAAMvhN,OAASuhN,EAAMvhN,KAAMwtK,cAAenjI,EAAEmjI,cAAgBjjJ,EAAEk3L,SAASF,GACnM,GAAmB,qBAAT9qC,MACQ,iBAAPjzG,EAAiB,CAC1B,GAAa,UAAVn5B,EAAErqC,MAA8B,UAAVqqC,EAAErqC,KAAkB,OAAOwjE,EACpDA,EAAM,IAAI7yD,WAAWquJ,GAAKx7F,GAC1B,CAGF,OAAGn5B,EAAE3tC,UAAqC,qBAAlBglN,cAAsCL,GAAcK,cAAcl+I,EAAKn5B,EAAE3tC,UAAW2tC,GAE9F,SAAXA,EAAErqC,KAAwBw2K,GAASnsI,EAAE89H,KAAM3kG,GAC7B,UAAVn5B,EAAErqC,KAAmBs6K,GAAgB92G,GAAmBA,CAC/D,CAQD,SAASm+I,GAAkBn+I,EAAgB9zD,EAAoBkyM,GAC1DA,IAAKA,EAAM,IACf,IAAIv3K,EAAIu3K,EAAMp+I,EACd,OAAO9zD,EAAK1P,MACX,IAAK,SAAU,OAAO69J,GAAc8Y,GAAUtsI,IAC9C,IAAK,SAAU,OAAOssI,GAAUtsI,GAChC,IAAK,SAAU,OAAOm5B,EACtB,IAAK,OAAQ,OAAOgzG,GAAS9mK,EAAKy4J,KAAM99H,EAAG,QAC3C,IAAK,SACJ,OAAGi0H,GAAgBE,GAAYn0H,EAAG,QACH,qBAAhBqsI,aAAoC,IAAIA,aAAczrK,OAAOo/B,GAChEs3K,GAAkBt3K,EAAG,CAACrqC,KAAK,WAAWiO,MAAM,IAAIsR,KAAI,SAAStc,GAAK,OAAOA,EAAEsO,WAAW,EAAK,IAGzG,MAAM,IAAI/L,MAAM,qBAAuBkK,EAAK1P,KAC5C,CAiBD,SAAS6hN,GAAkBr+I,EAAK9zD,GAC/B,OAAOA,EAAK1P,MACX,IAAK,SACL,IAAK,SACL,IAAK,SAGJ,IAFA,IAAIknK,EAAO,GAEH9kK,EAAI,EAAGA,EAAIohE,EAAIlhE,SAAUF,EAAG8kK,GAAQj1J,OAAO4L,aAAa2lD,EAAIphE,IACpE,MAAoB,UAAbsN,EAAK1P,KAAmB69J,GAAcqJ,GAAqB,UAAbx3J,EAAK1P,KAAmBs6K,GAASpT,GAAQA,EAC/F,IAAK,OAAQ,OAAOsP,GAAS9mK,EAAKy4J,KAAM3kG,GACxC,IAAK,SAAU,OAAOA,EACtB,QAAS,MAAM,IAAIh+D,MAAM,qBAAuBkK,EAAK1P,MAEtD,CAWD,SAAS8hN,GAAUntH,EAAiBjlF,GACnC6tJ,KACAkxC,GAAS95G,GACT,IAAItqD,EAAIuuI,GAAIlpK,GAAM,CAAC,GAEnB,GADG26B,EAAEwiJ,aAAcxiJ,EAAEwrJ,QAAS,EAAMxrJ,EAAEu2I,YAAa,GACtC,SAAVv2I,EAAErqC,KAAiB,CAAEqqC,EAAErqC,KAAO,SAAU,IAAIwjE,EAAkBs+I,GAAUntH,EAAItqD,GAA+B,OAAlBA,EAAErqC,KAAO,QAAgBg/J,GAAKx7F,EAAO,CACjI,IAAI2+F,EAAM,EACV,GAAG93H,EAAEy1I,QAC2B3d,EAAV,iBAAX93H,EAAEy1I,MAAyBz1I,EAAEy1I,MAC5BnrF,EAAGqrF,WAAW5hL,QAAQisC,EAAEy1I,QAC/BnrF,EAAGqrF,WAAW7d,IAAM,MAAM,IAAI38J,MAAM,oBAAsB6kC,EAAEy1I,MAAQ,aAAgBz1I,EAAEy1I,OAE3F,OAAOz1I,EAAE06I,UAAY,QACpB,IAAK,MACL,IAAK,OAAQ,OAAO48B,GAAkBxQ,GAAWx8G,EAAItqD,GAAIA,GACzD,IAAK,MACL,IAAK,OAAQ,OAAOs3K,GAAkB5yB,GAAKX,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACzF,IAAK,MACL,IAAK,OAAQ,OAAOs3K,GAAkB5J,GAAcpjH,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,MAAO,OA1Dd,SAAyBm5B,EAAgB9zD,GACxC,OAAOA,EAAK1P,MACX,IAAK,SAAU,OAAO69J,GAAcr6F,GACpC,IAAK,SACL,IAAK,SAAU,OAAOA,EACtB,IAAK,OAAQ,OAAOgzG,GAAS9mK,EAAKy4J,KAAM3kG,EAAK,UAC7C,IAAK,SACJ,OAAG86F,GAAgBE,GAAYh7F,EAAK,UACxBA,EAAIv1D,MAAM,IAAIsR,KAAI,SAAStc,GAAK,OAAOA,EAAEsO,WAAW,EAAK,IAGvE,MAAM,IAAI/L,MAAM,qBAAuBkK,EAAK1P,KAC5C,CA8CoB+hN,CAAgBC,GAAartH,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACnF,IAAK,MAAO,OAAOs3K,GAAkBM,GAAattH,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,EAAG,UACxF,IAAK,MAAO,OAAOs3K,GAAkB3tB,GAAI5F,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,MAAO,OAAOw3K,GAAkB50B,GAAImB,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,MAAO,OAAOs3K,GAAkB/sB,GAAIxG,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,MAAO,OAAOs3K,GAAkBrnB,GAAIlM,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,MAAO,OAAOs3K,GAAkBptB,GAAInG,WAAWz5F,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACvF,IAAK,OAAQ,OAAOs3K,GAAkB9H,GAAUllH,EAAItqD,GAAIA,GACxD,IAAK,MAAO,OAAOw3K,GAAkBxrB,GAAIwC,aAAalkG,EAAGsrF,OAAOtrF,EAAGqrF,WAAW7d,IAAO93H,GAAIA,GACzF,IAAK,MAAO,OAAOw3K,GAAkBxrB,GAAI6C,YAAYvkG,EAAItqD,GAAIA,GAC7D,IAAK,QAAaA,EAAEk0I,OAAMl0I,EAAEk0I,KAAO,GACnC,IAAK,QAAal0I,EAAEk0I,OAAMl0I,EAAEk0I,KAAO,GACnC,IAAK,QAAiC,OAApBl0I,EAAEk0I,OAAMl0I,EAAEk0I,KAAO,GAAUsjC,GAAkBpQ,GAAe98G,EAAItqD,GAAIA,GACtF,IAAK,QAAaA,EAAEk0I,OAAMl0I,EAAEk0I,KAAO,GACnC,IAAK,QACL,IAAK,MACL,IAAK,MAA+B,OAApBl0I,EAAEk0I,OAAMl0I,EAAEk0I,KAAO,GAjGnC,SAAwB5pF,EAAiBjlF,GACxC,IAAI26B,EAAI36B,GAAM,CAAC,EAEf,OAAO2xM,GADoB9P,GAAa58G,EAAItqD,GAClBA,EAC1B,CA6F4C63K,CAAevtH,EAAItqD,GAC9D,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,MAAO,OA5Id,SAAwBsqD,EAAiBjlF,GACxC,IAAI26B,EAAIuuI,GAAIlpK,GAAM,CAAC,GAEnB,OAAO4xM,GADCvzC,GAAUp5E,EAAItqD,GACSA,EAC/B,CAwIoB83K,CAAextH,EAAItqD,GACtC,QAAS,MAAM,IAAI7kC,MAAO,0BAA4B6kC,EAAE06I,SAAW,KAEpE,CAED,SAASq9B,GAAkB/3K,GAC1B,IAAGA,EAAE06I,SAAL,CACA,IAOInQ,EAAMvqI,EAAE89H,KAAKpgK,MAAMsiC,EAAE89H,KAAK7D,YAAY,MAAM9kK,cAC7Co1K,EAAIvoK,MAAM,gBAAeg+B,EAAE06I,SAAWnQ,EAAI7sK,MAAM,IACnDsiC,EAAE06I,SATQ,CACT,IAAO,QACP,IAAO,OACP,IAAO,OACP,WAAc,MACd,QAAW,OAIK16I,EAAE06I,WAAa16I,EAAE06I,QAVb,CAWrB,CA+BD,SAASs9B,GAAcviC,EAAqBx2G,EAAa1lC,EAAc2qJ,EAAwBlxG,EAAmBysG,EAAoB1J,EAAmB/1I,GACxJ,IAAIymC,EAAK+tG,GAAWj7I,GAChB0+K,EAASj4K,EAAEi4K,OAAQ12C,EAAMvhI,EAAEuhI,MAAQjyK,OAAOoH,UAAU0P,eAAevN,KAAKmnC,EAAG,OAC3Ek4K,GAAU,EACVl6C,EAA0B,IAAXhrF,EAAgB,GAAK,CAAC,EACzC,GAAc,IAAXA,EACF,GAAG1jF,OAAOuM,eAAgB,IAAMvM,OAAOuM,eAAemiK,EAAK,aAAc,CAAC5qK,MAAMmmC,EAAGgI,YAAW,GAA2C,CAAhC,MAAMphC,GAAK69J,EAAIm6C,WAAa5+K,CAAI,MACpIykI,EAAIm6C,WAAa5+K,EAEvB,IAAIw8I,GAASN,EAAMl8I,GAAI,IAAK,IAAI7wB,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAAG,CAC3D,IAAIzT,EAAM8gL,EAAQN,EAAMl8I,GAAG7wB,GAAK+sK,EAAMyO,EAAKx7K,GAAK+9D,GAChD,QAAW3xE,IAARG,QAA+BH,IAAVG,EAAI+U,EAA5B,CAKA,IAAIhJ,EAAI/L,EAAI+L,EACZ,OAAO/L,EAAI+U,GACV,IAAK,IAAK,GAAQ,MAALhJ,EAAW,MAAO,SAC/B,IAAK,IAAKA,EAAU,GAALA,EAAS,UAAO,EAAS,MACxC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACxC,QAAS,MAAM,IAAI7F,MAAM,qBAAuBlG,EAAI+U,GAErD,GAAa,MAAVy1K,EAAI/2K,GAAY,CAClB,GAAQ,MAAL1H,EACF,GAAY,KAAT/L,EAAI+U,GAAkB,OAANhJ,EAAYg9J,EAAIyhB,EAAI/2K,IAAM,UACxC,QAAc5T,IAAXmjN,EAAsBj6C,EAAIyhB,EAAI/2K,IAAMuvM,MACvC,KAAG12C,GAAa,OAANvgK,EACV,SADsBg9J,EAAIyhB,EAAI/2K,IAAM,IAC5B,MAEbs1J,EAAIyhB,EAAI/2K,IAAM64J,IAAkB,MAAVtsK,EAAI+U,GAAwB,MAAV/U,EAAI+U,IAA8B,IAAjBg2B,EAAEo4K,YAAyBp3M,EAAIs0K,GAAYrgL,EAAI+L,EAAEg/B,GAEnG,MAALh/B,IAAWk3M,GAAU,EACxB,CAlBA,KAJD,CACC,QAAcpjN,IAAXmjN,EAAsB,SACZ,MAAVx4B,EAAI/2K,KAAcs1J,EAAIyhB,EAAI/2K,IAAMuvM,EAEnC,CAmBD,CACD,MAAO,CAAEj6C,IAAKA,EAAKk6C,QAASA,EAC5B,CAGD,SAASj0B,GAAcxO,EAAqBpwK,GAC3C,GAAY,MAATowK,GAAkC,MAAjBA,EAAM,QAAiB,MAAO,GAClD,IAAIxgL,EAAM,CAAC+U,EAAE,IAAIhJ,EAAE,GAAIgyE,EAAS,EAAG5nE,EAAS,EAAGq0K,EAAqB,GAAIz+K,EAAE,EAAGq6J,EAAG,GAC5Ep8F,EAAI,CAAChlD,EAAE,CAACglD,EAAE,EAAErmE,EAAE,GAAGuH,EAAE,CAAC8+D,EAAE,EAAErmE,EAAE,IAC1BonC,EAAI36B,GAAQ,CAAC,EACbs0F,EAAmB,MAAX35D,EAAE25D,MAAgB35D,EAAE25D,MAAQ87E,EAAM,QAK9C,OAJgB,IAAbz1I,EAAEgzC,OAAcA,EAAS,EACP,MAAbhzC,EAAEgzC,OAAgBA,EAAS,EAC3Bz4E,MAAMkD,QAAQuiC,EAAEgzC,QAASA,EAAS,EACtB,MAAZhzC,EAAEgzC,SAAgBA,EAAS,UACrB2mB,GACb,IAAK,SAAU16B,EAAIi2G,GAAkBv7E,GAAQ,MAC7C,IAAK,UAAU16B,EAAIi2G,GAAkBO,EAAM,UAAYx7J,EAAEglD,EAAI06B,EAAO,MACpE,QAAS16B,EAAI06B,EAEX3mB,EAAS,IAAG5nE,EAAS,GACxB,IAAIq7D,EAAK+tG,GAAWv1G,EAAEhlD,EAAEglD,GACpBilH,EAAyB,GACzB/qH,EAAqB,GACrBk/I,EAAO,EAAGx9L,EAAU,EACpBk7J,EAAQx7K,MAAMkD,QAAQg4K,GACtBl8I,EAAI0lC,EAAEhlD,EAAEglD,EAAGv2D,EAAI,EACf4vM,EAAa,CAAC,EACfviC,IAAUN,EAAMl8I,KAAIk8I,EAAMl8I,GAAK,IAClC,IAAIkuJ,EAA6BznJ,EAAEu4K,YAAc9iC,EAAM,UAAY,GAC/D+R,EAA6BxnJ,EAAEu4K,YAAc9iC,EAAM,UAAY,GACnE,IAAI/sK,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAC5B,KAAK++K,EAAQ/+K,IAAI,CAAC,GAAG6/K,OAGrB,OAFArE,EAAKx7K,GAAK+rK,GAAW/rK,GACrBzT,EAAM8gL,EAAQN,EAAMl8I,GAAG7wB,GAAK+sK,EAAMyO,EAAKx7K,GAAK+9D,GACrCuM,GACN,KAAK,EAAGysG,EAAI/2K,GAAKA,EAAIu2D,EAAEhlD,EAAErhB,EAAG,MAC5B,KAAK,EAAG6mL,EAAI/2K,GAAKw7K,EAAKx7K,GAAI,MAC1B,KAAK,EAAG+2K,EAAI/2K,GAAKs3B,EAAEgzC,OAAOtqE,EAAIu2D,EAAEhlD,EAAErhB,GAAI,MACtC,QAIC,GAHU,MAAP3D,IAAaA,EAAM,CAAC2kC,EAAG,UAAW5vB,EAAG,MACxCqxJ,EAAKr6J,EAAIs0K,GAAYrgL,EAAK,KAAM+qC,GAChCnlB,EAAUy9L,EAAWt3M,IAAM,EAEtB,CACJ,GAAKq6J,EAAKr6J,EAAI,IAAO6Z,UAAoBy9L,EAAWj9C,IAAMi9C,EAAWt3M,GAAK6Z,EAC1Ey9L,EAAWj9C,GAAM,CACjB,MAJYi9C,EAAWt3M,GAAK,EAK7By+K,EAAI/2K,GAAK2yJ,EAGZ,IAAK9hI,EAAI0lC,EAAEhlD,EAAEglD,EAAI7zD,EAAQmuB,GAAK0lC,EAAE9+D,EAAE8+D,IAAK1lC,EACtC,KAAKiuJ,EAAQjuJ,IAAI,CAAC,GAAGgvJ,OAArB,CACA,IAAIvqB,EAAMg6C,GAAcviC,EAAOx2G,EAAG1lC,EAAG2qJ,EAAMlxG,EAAQysG,EAAK1J,EAAO/1I,KAC3C,IAAhBg+H,EAAIk6C,UAAkC,IAAXllI,GAA+B,IAAhBhzC,EAAEw4K,UAAwBx4K,EAAEw4K,cAAYr/I,EAAIk/I,KAAUr6C,EAAIA,IAFnE,CAKtC,OADA7kG,EAAIlhE,OAASogN,EACNl/I,CACP,CAED,IAAIs/I,GAAO,KACX,SAASC,GAAajjC,EAAqBx2G,EAAa1lC,EAAc2qJ,EAAwBpnB,EAAe67C,EAAe7tB,EAAe9qJ,GAG1I,IAFA,IAAIk4K,GAAU,EACVl6C,EAAwB,GAAI46C,EAAM,GAAInyI,EAAK+tG,GAAWj7I,GAClD7wB,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAChC,GAAKw7K,EAAKx7K,GAAV,CACA,IAAIzT,EAAM+qC,EAAE+1I,OAASN,EAAMl8I,IAAI,IAAI7wB,GAAI+sK,EAAMyO,EAAKx7K,GAAK+9D,GACvD,GAAU,MAAPxxE,EAAa2jN,EAAM,QACjB,GAAY,MAAT3jN,EAAI+L,EAAW,CACtBk3M,GAAU,EACVU,EAAM,IAAI54K,EAAEo4K,YAAuB,KAATnjN,EAAI+U,EAAW/U,EAAI+L,EAAIs0K,GAAYrgL,EAAK,KAAM+qC,IACxE,IAAI,IAAIjoC,EAAI,EAAGm1F,EAAK,EAAGn1F,IAAM6gN,EAAI3gN,SAAUF,EAAG,IAAIm1F,EAAK0rH,EAAI1xM,WAAWnP,MAAQ+kK,GAAM5vE,IAAOyrH,GAAa,KAAPzrH,GAAaltD,EAAE64K,YAAa,CAACD,EAAM,IAAOA,EAAI/3M,QAAQ43M,GAAM,MAAQ,IAAM,KAAQ,CACzK,MAAPG,IAAaA,EAAM,OACtB,MAAkB,MAAT3jN,EAAI+rB,GAAc/rB,EAAI8c,EAGzB6mM,EAAM,IAFZV,GAAU,GACVU,EAAM,IAAM3jN,EAAI+rB,GAAUjtB,QAAQ,MAAQ,IAAG6kN,EAAM,IAAMA,EAAI/3M,QAAQ43M,GAAM,MAAQ,MAGpFz6C,EAAIxlK,KAAKogN,EAba,CAevB,OAAmB,IAAhB54K,EAAEw4K,WAAuBN,EAAgB,KACrCl6C,EAAI78J,KAAK2pL,EAChB,CAED,SAAS8sB,GAAaniC,EAAqBpwK,GAC1C,IAAI8zD,EAAwB,GACxBn5B,EAAY,MAAR36B,EAAe,CAAC,EAAIA,EAC5B,GAAY,MAATowK,GAAkC,MAAjBA,EAAM,QAAiB,MAAO,GAClD,IAAIx2G,EAAIi2G,GAAkBO,EAAM,SAC5BqV,OAAch2L,IAATkrC,EAAE8qJ,GAAmB9qJ,EAAE8qJ,GAAK,IAAKhuB,EAAKguB,EAAG5jL,WAAW,GACzDgiL,OAAcp0L,IAATkrC,EAAEkpJ,GAAmBlpJ,EAAEkpJ,GAAK,KAAMyvB,EAAKzvB,EAAGhiL,WAAW,GAC1D4xM,EAAW,IAAI72M,QAAY,KAAJ6oL,EAAU,MAAQA,GAAI,MAC7C9sB,EAAM,GAAIkmB,EAAyB,GACvClkJ,EAAE+1I,MAAQx7K,MAAMkD,QAAQg4K,GAGxB,IAFA,IAAIgS,EAA6BznJ,EAAEu4K,YAAc9iC,EAAM,UAAY,GAC/D+R,EAA6BxnJ,EAAEu4K,YAAc9iC,EAAM,UAAY,GAC3D/sK,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,GAAU++K,EAAQ/+K,IAAI,CAAC,GAAG6/K,SAASrE,EAAKx7K,GAAK+rK,GAAW/rK,IAEzF,IADA,IAAIkxB,EAAI,EACAL,EAAI0lC,EAAEhlD,EAAEglD,EAAG1lC,GAAK0lC,EAAE9+D,EAAE8+D,IAAK1lC,GAC3BiuJ,EAAQjuJ,IAAI,CAAC,GAAGgvJ,QAEX,OADVvqB,EAAM06C,GAAajjC,EAAOx2G,EAAG1lC,EAAG2qJ,EAAMpnB,EAAI67C,EAAI7tB,EAAI9qJ,MAE/CA,EAAE+4K,QAAO/6C,EAAMA,EAAIn9J,QAAQi4M,EAAS,MACpC96C,IAAwB,IAAhBh+H,EAAEw4K,YAAsBr/I,EAAI3gE,MAAMohC,IAAMsvJ,EAAK,IAAMlrB,IAG/D,cADOh+H,EAAE+1I,MACF58G,EAAIh4D,KAAK,GAChB,CAED,SAASw2M,GAAaliC,EAAqBpwK,GACtCA,IAAMA,EAAO,CAAC,GAAGA,EAAKylL,GAAK,KAAMzlL,EAAK6jL,GAAK,KAC/C,IAAIjvK,EAAI29L,GAAaniC,EAAOpwK,GAC5B,GAAsB,oBAAZ+tJ,IAAwC,UAAb/tJ,EAAK1P,KAAkB,OAAOskB,EACnE,IAAI+lB,EAAIozH,GAAShjK,MAAMwQ,OAAO,KAAMqZ,EAAG,OACvC,OAAOrS,OAAO4L,aAAa,KAAO5L,OAAO4L,aAAa,KAAOwsB,CAC7D,CAoCD,SAASg5K,GAAeljC,EAAoBmjC,EAAmB5zM,GAC9D,IAWI0uK,EAXA/zI,EAAI36B,GAAQ,CAAC,EACb+F,IAAW40B,EAAEk5K,WACbh4J,EAAmB40H,GAAQ,CAAC,EAC5BE,EAAK,EAAGt5J,EAAK,EACjB,GAAGwkC,GAAkB,MAAZlhB,EAAEi2I,OACV,GAAsB,iBAAZj2I,EAAEi2I,OAAoBD,EAAKh2I,EAAEi2I,WAClC,CACJ,IAAIC,EAA6C,iBAAZl2I,EAAEi2I,OAAqBnB,GAAY90I,EAAEi2I,QAAUj2I,EAAEi2I,OACtFD,EAAKE,EAAQj3G,EAAGviD,EAAKw5J,EAAQt9K,CAC7B,CAGF,IAAI+gG,EAAmB,CAAC1/E,EAAG,CAACrhB,EAAE,EAAGqmE,EAAE,GAAI9+D,EAAG,CAACvH,EAAE8jB,EAAIuiD,EAAE+2G,EAAKijC,EAAGhhN,OAAS,EAAImT,IACxE,GAAG81C,EAAG,QAAS,CACd,IAAIi1H,EAASjB,GAAkBh0H,EAAG,SAClCy4C,EAAMx5F,EAAEvH,EAAI/I,KAAKukB,IAAIulF,EAAMx5F,EAAEvH,EAAGu9K,EAAOh2K,EAAEvH,GACzC+gG,EAAMx5F,EAAE8+D,EAAIpvE,KAAKukB,IAAIulF,EAAMx5F,EAAE8+D,EAAGk3G,EAAOh2K,EAAE8+D,IAC/B,GAAP+2G,IAAYA,EAAKG,EAAOh2K,EAAE8+D,EAAI,EAAG06B,EAAMx5F,EAAE8+D,EAAI+2G,EAAKijC,EAAGhhN,OAAS,EAAImT,EACrE,MACU,GAAP4qK,IAAYA,EAAK,EAAGr8E,EAAMx5F,EAAE8+D,EAAIg6I,EAAGhhN,OAAS,EAAImT,GAEpD,IAAIq0K,EAAwBz/I,EAAEgzC,QAAU,GAAItqE,EAAI,EAEhDuwM,EAAGjkN,SAAQ,SAAUmkN,EAAI5/K,GACxBt7B,GAAKk7M,GAAInkN,SAAQ,SAAS4lC,IACC,IAAtBlyB,EAAE+2K,EAAI1rL,QAAQ6mC,MAAW6kJ,EAAI/2K,EAAE+2K,EAAIxnL,QAAU2iC,GACjD,IAAI55B,EAAIm4M,EAAGv+K,GACP5wB,EAAI,IACJkW,EAAI,GACJypD,EAAM0qG,GAAY,CAACz7K,EAAE8jB,EAAKhU,EAAEu2D,EAAE+2G,EAAKz8I,EAAInuB,IAC3C2oK,EAAOqlC,GAAiBl4J,EAAIyoB,IACzB3oE,GAAkB,kBAANA,GAAoBA,aAAaa,MAGhC,iBAALb,EAAegJ,EAAI,IACT,kBAALhJ,EAAgBgJ,EAAI,IACf,iBAALhJ,EAAegJ,EAAI,IAC1BhJ,aAAaa,MACpBmI,EAAI,IACAg2B,EAAEw2I,YAAaxsK,EAAI,IAAKhJ,EAAI0sK,GAAQ1sK,IACxCkf,EAAK8f,EAAE66H,QAAUnF,GAAU,KAEd,OAAN10J,GAAcg/B,EAAEs2I,YAAatsK,EAAI,IAAKhJ,EAAI,GAC9C+yK,GAEHA,EAAK/pK,EAAIA,EAAG+pK,EAAK/yK,EAAIA,SACd+yK,EAAKn6I,SAAUm6I,EAAKx6I,EACxBrZ,IAAG6zJ,EAAK7zJ,EAAIA,IAJNghC,EAAGyoB,GAAOoqG,EAAQ,CAAC/pK,EAAEA,EAAGhJ,EAAEA,GAMjCkf,IAAG6zJ,EAAK7zJ,EAAIA,IAjBfghC,EAAGyoB,GAAO3oE,CAmBX,GACD,IACD24F,EAAMx5F,EAAEvH,EAAI/I,KAAKukB,IAAIulF,EAAMx5F,EAAEvH,EAAG8jB,EAAK+iK,EAAIxnL,OAAS,GAClD,IAAIm+K,EAAM5B,GAAWwB,GACrB,GAAG5qK,EAAQ,IAAI1C,EAAI,EAAGA,EAAI+2K,EAAIxnL,SAAUyQ,EAAGw4C,EAAGuzH,GAAW/rK,EAAIgU,GAAM05J,GAAO,CAACpsK,EAAE,IAAKhJ,EAAEy+K,EAAI/2K,IAExF,OADAw4C,EAAG,QAAU8zH,GAAar7E,GACnBz4C,CACP,CAID,SAASk4J,GAAiBl4J,EAAkB3nB,EAAG7wB,GAE9C,GAAe,iBAAL6wB,EAAe,CAExB,GAAGh/B,MAAMkD,QAAQyjD,GAAK,CACrB,IAAIm4J,EAAKvkC,GAAYv7I,GAErB,OADI2nB,EAAGm4J,EAAGp6I,KAAI/d,EAAGm4J,EAAGp6I,GAAK,IAClB/d,EAAGm4J,EAAGp6I,GAAGo6I,EAAGzgN,KAAOsoD,EAAGm4J,EAAGp6I,GAAGo6I,EAAGzgN,GAAK,CAACoR,EAAE,KAC9C,CACD,OAAOk3C,EAAG3nB,KAAO2nB,EAAG3nB,GAAK,CAACvvB,EAAE,KAC5B,CAED,OAAgCovM,GAAiBl4J,EAAImzH,GAAtC,iBAAL96I,EAAuDA,EAEzB,CAAC0lC,EAAE1lC,EAAE3gC,EAAE8P,GAAG,IAClD,CAeD,SAAS4wM,KACR,MAAO,CAAE3jC,WAAY,GAAIC,OAAQ,CAAC,EAClC,CAGD,SAAS2jC,GAAkBjvH,EAAiBppC,EAAkBnoD,EAAkBygN,GAC/E,IAAIzhN,EAAI,EACR,IAAIgB,EAAM,KAAMhB,GAAK,QAAgF,GAA9CuyF,EAAGqrF,WAAW5hL,QAAQgF,EAAO,QAAUhB,KAA/DA,EAAGgB,OAAOjE,GACzC,IAAIiE,GAAQuxF,EAAGqrF,WAAW19K,QAAU,MAAQ,MAAM,IAAIkD,MAAM,uBAC5D,GAAGq+M,GAAQlvH,EAAGqrF,WAAW5hL,QAAQgF,IAAS,EAAG,CAC5C,IAAI2/B,EAAI3/B,EAAKiJ,MAAM,gBACnBjK,EAAI2gC,IAAMA,EAAE,IAAM,EAClB,IAAIpwB,EAAOowB,GAAKA,EAAE,IAAM3/B,EACxB,MAAMhB,EAAGA,GAAK,QAA2D,GAA3CuyF,EAAGqrF,WAAW5hL,QAAQgF,EAAOuP,EAAOvQ,KAA1CA,GACxB,CAED,GADAksM,GAAclrM,GACXuxF,EAAGqrF,WAAW5hL,QAAQgF,IAAS,EAAG,MAAM,IAAIoC,MAAM,wBAA0BpC,EAAO,qBAItF,OAFAuxF,EAAGqrF,WAAWn9K,KAAKO,GACnBuxF,EAAGsrF,OAAO78K,GAAQmoD,EACXnoD,CACP,CA0BD,SAAS0gN,GAAmB1lC,EAAex2K,EAAmBi1J,GAO7D,OANIj1J,GAGHw2K,EAAK/7K,EAAK,CAAEilL,OAAQ1/K,GACjBi1J,IAASuhB,EAAK/7K,EAAEsqL,QAAU9vB,WAHtBuhB,EAAK/7K,EAKN+7K,CACP,CA0BD,IAAI3jL,GAAgB,CACnBqkL,WAAYA,GACZD,WAAYA,GACZH,YAAaA,GACbW,aAAcA,GACdJ,WAAYA,GACZF,WAAYA,GACZglC,WAjxnBD,SAAoBh3C,GAAqC,OAAOA,EAAK7hK,QAAQ,sBAAsB,SAAS+C,MAAM,IAAO,EAkxnBxHkxK,YAAaA,GACbC,aAAcA,GACdO,YAAaA,GACbO,cAAeA,GACfmjC,eAAgBA,GAChBrL,cAAeA,GACfj3B,aAAcA,GACdijC,cAjID,SAAuBV,EAAmB5zM,GAAsB,OAAO2zM,GAAe,KAAMC,EAAI5zM,EAAQ,EAkIvGu0M,eAAgBtL,GAChBuL,cAvvGD,SAAuB/+C,EAAuBz1J,GAC7C,OAAOmwK,GAAkB84B,GAAgBxzC,EAAOz1J,GAAOA,EACvD,EAsvGAuyM,aAAcA,GACdD,aAAcA,GACd1zB,cAAeA,GACfypB,cAAeA,GACfoM,kBAtOD,SAA2BrkC,GAC1B,IAAY/rK,EAARuW,EAAI,GAAOhrB,EAAI,GACnB,GAAY,MAATwgL,GAAkC,MAAjBA,EAAM,QAAiB,MAAO,GAClD,IAAgF/sK,EAA5Eu2D,EAAIi2G,GAAkBO,EAAM,SAAUhvG,EAAK,GAAIy9G,EAAyB,GACxE61B,EAAyB,GACzBhkC,EAAQx7K,MAAMkD,QAAQg4K,GAC1B,IAAI/sK,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAAGw7K,EAAKx7K,GAAK+rK,GAAW/rK,GACrD,IAAI,IAAI6wB,EAAI0lC,EAAEhlD,EAAEglD,EAAG1lC,GAAK0lC,EAAE9+D,EAAE8+D,IAAK1lC,EAEhC,IADAktC,EAAK+tG,GAAWj7I,GACZ7wB,EAAIu2D,EAAEhlD,EAAErhB,EAAG8P,GAAKu2D,EAAE9+D,EAAEvH,IAAK8P,EAI5B,GAHAuX,EAAIikK,EAAKx7K,GAAK+9D,EAEdxxE,EAAM,QACGH,KAFT4U,EAAIqsK,GAASN,EAAMl8I,IAAI,IAAI7wB,GAAK+sK,EAAMx1J,IAEtC,CACK,GAAU,MAAPvW,EAAEqI,EAAW,CAEpB,GADAkO,EAAIvW,EAAEqI,GACFrI,EAAEsX,EAAG,SACT/rB,EAAMyU,EAAEsX,GACc,GAAnBf,EAAElsB,QAAQ,OAAYksB,EAAIA,EAAI,IAAMA,EACvC,CACD,GAAU,MAAPvW,EAAEsX,EAAW/rB,EAAMyU,EAAEsX,MACnB,IAAU,KAAPtX,EAAEM,EAAU,SACf,GAAU,KAAPN,EAAEM,GAAmB,MAAPN,EAAE1I,EAAW/L,EAAM,GAAKyU,EAAE1I,OAC3C,GAAU,KAAP0I,EAAEM,EAAU/U,EAAMyU,EAAE1I,EAAI,OAAS,aACpC,QAAWlM,IAAR4U,EAAEkwB,EAAiB3kC,EAAM,IAAMyU,EAAEkwB,MACpC,SAAW9kC,IAAR4U,EAAE1I,EAAiB,SACP/L,EAAL,KAAPyU,EAAEM,EAAgB,IAAMN,EAAE1I,EACvB,GAAG0I,EAAE1I,CAAX,EACL+4M,EAAKA,EAAK9hN,QAAUgoB,EAAI,IAAMhrB,CAT7B,CAYH,OAAO8kN,CACP,EAuMAC,0BAA2B/1B,GAC3Bg2B,eAAgBb,GAChBE,SAAUA,GACVC,kBAAmBA,GACnBW,0BApFD,SAAmC5vH,EAAiB8b,EAAsB+zG,GACrE7vH,EAAGy0G,WAAUz0G,EAAGy0G,SAAW,CAAC,GAC5Bz0G,EAAGy0G,SAASnpB,SAAQtrF,EAAGy0G,SAASnpB,OAAS,IAE7C,IAAI9d,EAxCL,SAAsBxtE,EAAiB8b,GACtC,GAAgB,iBAANA,EAAgB,CACzB,GAAGA,GAAM,GAAK9b,EAAGqrF,WAAW19K,OAASmuG,EAAI,OAAOA,EAChD,MAAM,IAAIjrG,MAAM,uBAAyBirG,EACzC,CAAM,GAAgB,iBAANA,EAAgB,CAChC,IAAI0xD,EAAMxtE,EAAGqrF,WAAW5hL,QAAQqyG,GAChC,GAAG0xD,GAAO,EAAG,OAAOA,EACpB,MAAM,IAAI38J,MAAM,2BAA6BirG,EAAK,IAClD,CAAM,MAAM,IAAIjrG,MAAM,sBAAwBirG,EAAK,IACpD,CA+BUg0G,CAAa9vH,EAAI8b,GAI3B,OAFI9b,EAAGy0G,SAASnpB,OAAO9d,KAAMxtE,EAAGy0G,SAASnpB,OAAO9d,GAAO,CAAC,GAEjDqiD,GACN,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,MACxB,QAAS,MAAM,IAAIh/M,MAAM,gCAAkCg/M,GAG5D7vH,EAAGy0G,SAASnpB,OAAO9d,GAAK6sC,OAASwV,CACjC,EAuEAE,uBApED,SAAgCtmC,EAAevc,GAE9C,OADAuc,EAAK7zJ,EAAIs3I,EACFuc,CACP,EAkEA0lC,mBAAoBA,GACpBa,uBAvDD,SAAgCvmC,EAAep6E,EAAkB64D,GAAuB,OAAOinD,GAAmB1lC,EAAM,IAAMp6E,EAAO64D,EAAW,EAwD/I+nD,iBArDD,SAA0BxmC,EAAel6E,EAAiB2gH,GACrDzmC,EAAKn7K,IAAGm7K,EAAKn7K,EAAI,IACrBm7K,EAAKn7K,EAAEJ,KAAK,CAACwR,EAAE6vF,EAAM/yF,EAAE0zM,GAAQ,WAC/B,EAmDAC,wBAhDD,SAAiCv5J,EAAkBy4C,EAAOuuF,EAAoBwyB,GAG7E,IAFA,IAAIC,EAAsB,iBAAThhH,EAAoBA,EAAQu7E,GAAkBv7E,GAC3DihH,EAAyB,iBAATjhH,EAAoBA,EAAQq7E,GAAar7E,GACrDpgE,EAAIohL,EAAI1gM,EAAEglD,EAAG1lC,GAAKohL,EAAIx6M,EAAE8+D,IAAK1lC,EAAG,IAAI,IAAI7wB,EAAIiyM,EAAI1gM,EAAErhB,EAAG8P,GAAKiyM,EAAIx6M,EAAEvH,IAAK8P,EAAG,CAC/E,IAAIqrK,EAAOqlC,GAAiBl4J,EAAI3nB,EAAG7wB,GACnCqrK,EAAK/pK,EAAI,IACT+pK,EAAKhiK,EAAI6oM,SACF7mC,EAAK/yK,EACTu4B,GAAKohL,EAAI1gM,EAAEglD,GAAKv2D,GAAKiyM,EAAI1gM,EAAErhB,IAC7Bm7K,EAAK/yJ,EAAIknK,EACNwyB,IAAS3mC,EAAK/5I,GAAI,GAEtB,CACD,OAAOknB,CACP,EAmCAijH,OAAQ,CACP02C,cAAe,EACfC,aAAc,EACdC,kBAAmB,IAoIEroD,GAAKztJ,QAN5B,ICx/vBa+1M,GAAgB,SAAC,GAAoB,IAAlBC,EAAiB,EAAjBA,WAGxBC,EAAc,SAACC,EAAS5/M,ID+8uBhC,SAAuB+uF,EAAiBo+C,EAAqBrjI,GAC5D,IAAI26B,EAAI36B,GAAM,CAAC,EAAG26B,EAAErqC,KAAO,OAC3BqqC,EAAE89H,KAAOp1B,EACTqvE,GAAkB/3K,GACXy3K,GAAUntH,EAAItqD,EACrB,CCj9uBG0yH,CADW,CAAEkjB,OAAQ,CAAEtkL,KADZohK,GAAAA,cAAyByoD,IACDxlC,WAAY,CAAC,SAChD,UAAsBp6K,GAAsB,MAA5C,YAAqDsG,KAAKpS,OAA1D,OALoB,SAMrB,EAEK2rN,EAAe,+BAAG,gGAClBC,EAAW,GACXJ,EAAWthH,MAAMvtB,WAAa6uI,EAAWthH,MAAMttB,UACjDgvI,EAAQ,UAAMJ,EAAWthH,MAAMvtB,UAAvB,YAAoC6uI,EAAWthH,MAAMttB,UAHzC,SAKCokF,GAAAA,cAA2B4qD,GAL5B,iBAKd/pN,EALc,EAKdA,MAECA,KACP4pN,EAAY5pN,EAAKA,KAAM2pN,EAAW9pD,MAElCmqD,MAAK,OAAChqN,QAAD,IAACA,OAAD,EAACA,EAAM8G,SAVQ,2CAAH,qDAcrB,OACE,qBAAQuwE,UAAU,iBAAiBhzE,KAAK,SAASizE,QAASwyI,EAA1D,WAA2E,iBAAKlnG,IAAKqnG,GAASnvD,IAAI,QAAQ7/H,MAAO,KAAjH,WAEH,ECuZD,OA3aA,WAAiB,IAAD,EACd,EAA8B2/H,GAAAA,eAAtBR,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,MACpB,KAAgCr/C,EAAAA,EAAAA,WAAS,GAAzC,GAAOkvG,EAAP,KAAiBC,EAAjB,KACA,KAAoCnvG,EAAAA,EAAAA,UAAS,CAAC,GAA9C,GAAOovG,EAAP,KAAmBC,EAAnB,KACA,KAAoDrvG,EAAAA,EAAAA,UAAS,CAAC,GAA9D,GAAOsvG,EAAP,KAA2BC,EAA3B,KACA,KAA0CvvG,EAAAA,EAAAA,UAAS,CAAC,GAApD,GAAOwvG,EAAP,KAAsBC,EAAtB,KACA,KAA0DzvG,EAAAA,EAAAA,UAAS,CAAC,GAApE,GAAO0vG,EAAP,KAA8BC,EAA9B,KACA,KAAoC3vG,EAAAA,EAAAA,UAAS,IAA7C,GAAO4vG,EAAP,KAAmBC,EAAnB,KACA,KAAoD7vG,EAAAA,EAAAA,UAAS,IAA7D,GAAO8vG,EAAP,KAA2BC,EAA3B,KACA,KAAkD/vG,EAAAA,EAAAA,UAAS,CACzDgwG,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,EACfC,YAAa,EACbC,gBAAiB,EACjBC,cAAe,EACfC,kBAAmB,EACnBC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,EACfC,OAAQ,EACRC,iBAAkB,IAZpB,GAAOC,EAAP,KAA0BC,EAA1B,KAcA,KAAoC7wG,EAAAA,EAAAA,UAAS,CAC3C4kD,MAAO,mBACPC,KAAM,MACNx3D,MAAO,CAAC,IAHV,GAAO3yB,EAAP,KAAmBo2I,EAAnB,KAMMnyD,EAAcjrJ,KAAKC,MAAMwkJ,GAAeU,KAExCk4D,GAAqBxxG,EAAAA,EAAAA,cAAY,SAACyxG,EAAc1uL,GACpD,MACO,WADC0uL,EAEA9B,GAAY5sL,EAAQ,IACf,GAEF,GAEH4sL,GAAY5sL,EAAQ,IACf,GAEF,EAEZ,GAAE,CAAC4sL,KAEJzvG,EAAAA,EAAAA,YAAU,WAAM,oCACd,wGACE2/C,GAAW,GADb,SAEkC+E,GAAAA,oBAAiC9E,GAFnE,OAEQ4xD,EAFR,OAGExB,EAAgB,OAACwB,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBksN,WAC1CvB,EAAwB,OAACsB,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBksN,WAElD7B,EAAa,OAAC4B,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBmsN,SACvC5B,EAAqB,OAAC0B,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBmsN,SAE/CtB,GAA+B,OAAjBoB,QAAiB,IAAjBA,GAAA,UAAAA,EAAmBjsN,YAAnB,eAAyB0rN,SAAU,IACjDX,GAAuC,OAAjBkB,QAAiB,IAAjBA,GAAA,UAAAA,EAAmBjsN,YAAnB,eAAyB0rN,SAAU,IACzDtxD,GAAW,GAXb,6CADc,uBAAC,WAAD,wBAedgF,EACD,GAAE,CAAChF,KA2CJ3/C,EAAAA,EAAAA,YAAW,WACQ,OAAb+vG,QAAa,IAAbA,GAAAA,EAAe4B,WAAf,OAA4B5B,QAA5B,IAA4BA,GAAAA,EAAe4B,UAAUzlN,QACvDwjN,GAAY,EAEf,GAAE,CAACK,EAAeL,KAEnB1vG,EAAAA,EAAAA,YAAU,WACR,IAAI4xG,EAAmB,EACnBC,EAAoB,EAClBC,EAA0B,GAC1BC,EAAwB,GAE9B,GAAIlC,GAAsBA,EAAmBmC,MAAO,CAClD,IADkD,EAC5CxB,EAAkBX,EAAmBmC,MAAMx2M,QAAO,SAAA0pD,GACtD,MAAuB,WAAhBA,EAAK/9D,MACb,IAAE+E,OAEGukN,EAAgBZ,EAAmBmC,MAAMx2M,QAAO,SAAA0pD,GACpD,MAAuB,SAAhBA,EAAK/9D,MACb,IAAE+E,OAP+C,KAShC2jN,EAAmBmC,OATa,IASlD,2BAA4C,CAAC,IAApC3qN,EAAmC,QAC1C,GAAqB,WAAjBA,EAAMF,OAAqB,CAC7B,IAAIw5B,EAAO,IAAI7qB,KAAKzO,EAAMs5B,MACtBkC,EAAQwiI,KAAO1kI,GAAMsiC,SAAS,EAAG,SAASuC,QAAQ,SAASjhD,OAAO,YAClEutM,EAAwBjvL,GAC1BivL,EAAwBrlN,KAAK,CAC3B+8B,OAAQsoL,EAAwBjvL,GAASx7B,EAAMmiC,SAGjDsoL,EAAwBrlN,KAAK,CAC3B+8B,OAAQniC,EAAMmiC,QAGnB,CACF,CAvBiD,0CAyBhCqmL,EAAmBmC,OAzBa,IAyBlD,2BAA4C,CAAC,IAApC3qN,EAAmC,QACtCs5B,EAAO,IAAI7qB,KAAKzO,EAAMs5B,MACtBkC,EAAQwiI,KAAO1kI,GAAMsiC,SAAS,EAAG,SAASuC,QAAQ,SAASjhD,OAAO,YAClEwtM,EAAsBlvL,GACxBkvL,EAAsBtlN,KAAK,CACzB+8B,OAAQuoL,EAAsBlvL,GAASx7B,EAAMmiC,SAG/CuoL,EAAsBtlN,KAAK,CACzB+8B,OAAQniC,EAAMmiC,QAGnB,CArCiD,+BAuClD,GAAIsoL,EAAwB5lN,OAAS,EACnC,IAAK,IAAIF,EAAI,EAAGA,EAAI8lN,EAAwB5lN,OAAQF,IAAK,CACvD,IAAMimN,EAAUX,EAAmBzB,EAAmBqC,cAAeJ,EAAwB9lN,GAAGw9B,QAChGqoL,GAAsBC,EAAwB9lN,GAAGw9B,OAASyoL,EAAU,GACrE,CAGH,GAAIF,EAAsB7lN,OAAS,EACjC,IAAK,IAAIF,EAAI,EAAGA,EAAI+lN,EAAsB7lN,OAAQF,IAAK,CACrD,IAAMimN,EAAUX,EAAmBzB,EAAmBqC,cAAeH,EAAsB/lN,GAAGw9B,QAC9FooL,GAAqBG,EAAsB/lN,GAAGw9B,OAASyoL,EAAU,GAClE,CAGHb,GAAqB,SAAA76L,GAAK,gBACrBA,GADqB,IAExBi6L,gBAAAA,EACAC,cAAAA,EACAO,cAAea,EACfd,aAAca,GALU,GAO3B,CAEF,GAAE,CAAC/B,EAAoByB,KAExBtxG,EAAAA,EAAAA,YAAU,WACR,IAAImyG,EAA2B,GAC3BzB,EAAc,EACdC,EAAkB,EAClBC,EAAgB,EAChBC,EAAoB,EACpBC,EAAmB,EACnBI,EAAmB,EAEvB,GAAIjB,GAAyBA,EAAsB1qN,KAAM,CAAC,IAAD,OACrC0qN,EAAsB1qN,MADe,IACvD,2BAA8C,CAAC,IAAtC8B,EAAqC,QAK5C,IAJ2B,IAAvBA,EAAM+qN,cAA8C,eAArB/qN,EAAMgrN,YACvC3B,IAGuB,eAArBrpN,EAAMgrN,YAAoD,aAArBhrN,EAAMgrN,WAA2B,CACxE1B,GAAmBtpN,EAAMirN,YAEzB,IAAI3xL,EAAO,IAAI7qB,KAAKzO,EAAMkrN,aACtB1vL,EAAQwiI,KAAO1kI,GAAMsiC,SAAS,EAAG,SAASuC,QAAQ,SAASjhD,OAAO,YAClE4tM,EAAyBtvL,GAC3BsvL,EAAyB1lN,KAAK,CAC5B+8B,OAAQ2oL,EAAyBtvL,GAASx7B,EAAMirN,cAGlDH,EAAyB1lN,KAAK,CAC5B+8B,OAAQniC,EAAMirN,aAGnB,CAED,GAAyB,eAArBjrN,EAAMgrN,aACRzB,GAAiBvpN,EAAMirN,YACvBpB,IACIiB,EAAyBjmN,OAAS,GACpC,IAAK,IAAIF,EAAI,EAAGA,EAAImmN,EAAyBjmN,OAAQF,IAAK,CACxD,IAAMimN,EAAUX,EAAmBrB,EAAsBiC,cAAeC,EAAyBnmN,GAAGw9B,QACpGsnL,GAAqBqB,EAAyBnmN,GAAGw9B,OAASyoL,EAAU,GACrE,CAGN,CAhCsD,+BAkCvD,GAAIE,EAAyBjmN,OAAS,EACpC,IAAK,IAAIF,EAAI,EAAGA,EAAImmN,EAAyBjmN,OAAQF,IAAK,CACxD,IAAMimN,EAAUX,EAAmBrB,EAAsBiC,cAAeC,EAAyBnmN,GAAGw9B,QACpGqnL,GAAsBsB,EAAyBnmN,GAAGw9B,OAASyoL,EAAU,GACtE,CAEJ,CAEDb,GAAqB,SAAA76L,GAAK,sBACrBA,GADqB,IAExBg6L,eAAiBzsN,KAAK+b,MAAO6wM,GAAW,OAAGT,QAAH,IAAGA,GAAH,UAAGA,EAAuB1qN,YAA1B,aAAG,EAA6B2G,QAAU,KAAO,GAAK,IAAO,EACrGykN,gBAAAA,EACAC,cAAAA,EACAC,kBAAAA,EACAC,iBAAAA,EACAI,iBAAAA,GAPwB,GAS3B,GAAE,CAACjB,EAAuBqB,IAE3B,IAAMkB,EAAkB,SAACztD,EAAW0tD,GAClC,IAAIC,GAAa,EACX/xL,EAAO0kI,KAAOotD,GAAWtqJ,OAO/B,OANI48F,EAAU1kF,YACZqyI,EAAaA,GAAe3tD,EAAU1kF,WAAa1/C,GAEjDokI,EAAUzkF,UACZoyI,EAAaA,GAAe3tD,EAAUzkF,SAAW3/C,GAE5C+xL,CACR,EAED,OACE,kBAAK91I,UAAU,4BAAf,WACE,iBAAKA,UAAU,uDAAf,UACE,kBAAKA,UAAU,4BAAf,WACE,UAAC,GAAD,CACE0oF,aApMqB,SAACqtD,GAC9B,IAAIC,EAAkB,GAClBC,EAAqB,GACrBC,EAAkB,GAGtB,GAFAzB,EAAcsB,GAES,QAAnBA,EAAUvtD,KAAgB,CAC5B,IAAML,EAAY,CAChB1kF,UAAWsyI,EAAU/kH,MAAMvtB,UAC3BC,QAASqyI,EAAU/kH,MAAMttB,SAG3BsyI,EAAe,OAAGjD,QAAH,IAAGA,OAAH,EAAGA,EAAYqC,MAAMx2M,QAAO,SAAAy2J,GACzC,OAAOugD,EAAgBztD,EAAWkN,EAAI8gD,WACvC,IAEDF,EAAkB,OAAG9C,QAAH,IAAGA,OAAH,EAAGA,EAAexqN,KAAKiW,QAAO,SAAAy2J,GAC9C,OAAOugD,EAAgBztD,EAAWkN,EAAItxI,KACvC,IAEGwvL,EAAWjkN,OAAS,IACtB4mN,EAAkB3C,EAAW30M,QAAO,SAAAy2J,GAClC,OAAOugD,EAAgBztD,EAAWkN,EAAItxI,KACvC,KAEHmvL,GAAsB,SAAAv5L,GAAK,gBACtBA,GADsB,IAEzBy7L,MAAOY,GAFkB,IAI3B1C,GAAyB,SAAA35L,GAAK,gBACzBA,GADyB,IAE5BhxB,KAAMstN,GAFsB,IAI9BvC,EAAsBwC,EACvB,MACChD,EAAsBH,GACtBO,EAAyBH,GACzBO,EAAsBH,EAEzB,KA+JO,UAAClB,GAAD,CACEC,WAAYj0I,EACZzrE,SAAUyrE,EAAWmqF,aAK3B,oBAEA,iBAAIxoF,UAAU,kBAAd,0BAA2CsiF,EAAYqB,aAAvD,QAEA,sBAAS3jF,UAAU,eAAnB,WACE,gBAAIA,UAAU,sBAAd,kDACA,iBAAKA,UAAU,qBAAf,UACE,kBAAKA,UAAU,MAAf,WACE,iBAAKA,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,+BACNmb,KAAMuiH,EAAqBA,EAAmBnkN,OAAS,EACvD6xF,KAAK,UACL0oE,QAAQ,wIAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,sCACNmb,MAAwB,OAAlB+hH,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBmC,aAApB,eAA2B9lN,SAAU,EAC3C6xF,KAAK,aACL0oE,QAAQ,2IAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,uDACNmb,KAAMqjH,EAAkBD,iBACxBnzH,KAAK,sBACL0oE,QAAQ,uJAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,UACT5zE,MAAM,4CACNmb,KAAMqjH,EAAkBZ,eAAiB,KACzCxyH,KAAK,IACL0oE,QAAQ,yLAOlB,sBAAS7pF,UAAU,eAAnB,WACE,gBAAIA,UAAU,sBAAd,2CACA,iBAAKA,UAAU,qBAAf,UACE,kBAAKA,UAAU,MAAf,WACE,iBAAKA,UAAU,oBAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,8BACNmb,KAAMqjH,EAAkBR,gBAAgBqC,iBAAmB,UAC3DvsD,QAAQ,6MAIZ,iBAAK7pF,UAAU,oBAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,8BACNmb,KAAMqjH,EAAkBP,cAAcoC,iBAAmB,UACzDvsD,QAAQ,0HAIZ,iBAAK7pF,UAAU,oBAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,kCACNmb,KAAMqjH,EAAkBN,kBAAkBmC,iBAAmB,UAC7DvsD,QAAQ,gMAIZ,iBAAK7pF,UAAU,oBAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,kCACNmb,KAAMqjH,EAAkBL,iBAAiBkC,iBAAmB,UAC5DvsD,QAAQ,mIAOlB,sBAAS7pF,UAAU,eAAnB,WACE,gBAAIA,UAAU,sBAAd,4BACA,iBAAKA,UAAU,qBAAf,UACE,kBAAKA,UAAU,MAAf,WACE,iBAAKA,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,mEACNmb,KAAMqjH,EAAkBX,gBACxB/pD,QAAQ,gIAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,oEACNmb,KAAMqjH,EAAkBV,cACxBhqD,QAAQ,iIAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,iEACNmb,KAAMqjH,EAAkBV,cAAgBU,EAAkBX,gBAC1D/pD,QAAQ,gLAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,wCACNmb,KAAMqjH,EAAkBL,iBAAiBkC,iBAAmB,UAC5DvsD,QAAQ,+IAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,yCACNmb,KAAMqjH,EAAkBJ,aAAaiC,iBAAmB,UACxDvsD,QAAQ,gJAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,0BACNmb,MAAOqjH,EAAkBJ,aAAeI,EAAkBH,eAAegC,iBAAmB,UAC5FvsD,QAAQ,6LAQvB,ECjbKhC,GAAM,2BAENwuD,GAAe,CACnBC,aAAa,WAAD,oBAAE,WAAOtzD,GAAP,iGAAcgF,EAAd,+BAA4B,YAClCf,EAAeC,MACfv+J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,SAAU8rJ,GACtBr/J,EAAKuT,OAAO,eAAgB+qJ,GAAgBjE,GALhC,SAMWmE,GAAAA,KAAiBU,GAAKl/J,GANjC,cAMN0B,EANM,yBAOLA,GAPK,4CAAF,mDAAC,IAWf,MCKA,OApBA,YAA2C,IAAnBksN,EAAkB,EAAlBA,eAMtB,OACE,iCACE,qBACEr2I,SAPgB,SAACixB,GACrBolH,EAAeplH,EAAMv8F,OAAOnK,MAC7B,EAMKu1E,UAAU,sBAFZ,WAIE,oBAAQv1E,MAAM,GAAd,+BACA,oBAAQA,MAAM,UAAd,+BACA,oBAAQA,MAAM,OAAd,2CAIP,ECiED,OA/EA,WACE,MAA4B84J,GAAAA,eAArBR,EAAP,EAAOA,WAAYC,EAAnB,EAAmBA,MACnB,KAAkCr/C,EAAAA,EAAAA,UAAS,IAA3C,GAAO6yG,EAAP,KAAkBC,EAAlB,KACA,KAAkD9yG,EAAAA,EAAAA,UAAS,IAA3D,GAAO+yG,EAAP,KAA0BC,EAA1B,KA0BA,OAxBAvzG,EAAAA,EAAAA,YAAW,WAAM,oCACf,4FACE2/C,GAAW,GADb,SAEyBszD,GAAAA,aAA0BrzD,GAFnD,OAEQ34J,EAFR,OAGEosN,EAAapsN,EAAS1B,KAAK6tN,WAAa,IACxCG,EAAqBtsN,EAAS1B,KAAK6tN,WAAa,IAChDzzD,GAAW,GALb,4CADe,uBAAC,WAAD,wBASf6zD,EACD,GAAE,CAAC7zD,KAeF,kBAAK/iF,UAAU,iCAAf,WACE,kBAAKA,UAAU,yDAAf,WACE,kEACA,UAAC,GAAD,CAAcu2I,eAhBU,SAAChsN,GAC7B,IAAImsN,EAAoB,GAEtBA,EADa,YAAXnsN,EACkBisN,EAAU53M,QAAO,SAAA0pD,GAAI,OAAIA,EAAK/9D,MAAT,IACrB,SAAXA,EACWisN,EAAU53M,QAAO,SAAA0pD,GAAI,OAAKA,EAAK/9D,MAAV,IAErBisN,EAEtBG,EAAqBD,EACtB,QASG,gBAAI12I,UAAU,UAEd,iBAAKA,UAAU,kBAAf,UACE,+BACE,6BACE,4BACE,0DACA,sDACA,iDACA,oEACA,qFACA,kFACA,kDACA,oEAGJ,8BACI02I,EAAkBpnN,OAAS,GAC3BonN,EAAkBnqM,KAAI,SAAA+7C,GAAI,OACxB,4BACE,yBAAMA,EAAKuuJ,WACX,yBAAMvuJ,EAAKwuJ,iBACX,yBAAMxuJ,EAAK/9D,OAAS,mBAAe,+BACnC,yBAAM+9D,EAAKotJ,YAAYU,oBACvB,yBAAM9tJ,EAAKyuJ,YAAYX,oBACvB,yBAAM9tJ,EAAK0uJ,cACX,yBAAM1uJ,EAAKvkC,QACX,yBAAMukC,EAAK2uJ,sBARJ3uJ,EAAKuuJ,QADU,IAaG,IAA7BH,EAAkBpnN,SAClB,0BACE,gBAAI0wE,UAAU,6BAA6Bk3I,QAAS,EAApD,2DAQf,EChFKrvD,GAAM,2BAENsvD,GAAU,CACdC,QAAQ,WAAD,oBAAE,WAAOp0D,GAAP,iGAAcgF,EAAd,+BAA4B,OAC7Bf,EAAeC,MACfv+J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,SAAU8rJ,GACtBr/J,EAAKuT,OAAO,eAAgB+qJ,GAAgBjE,GALrC,SAMgBmE,GAAAA,KAAiBU,GAAKl/J,GANtC,cAMD0B,EANC,yBAOAA,GAPA,4CAAF,mDAAC,IAWV,MCuGA,OAlHA,WACE,IAAM48J,EAAeC,KACrB,EAA4B3D,GAAAA,eAArBR,EAAP,EAAOA,WAAYC,EAAnB,EAAmBA,MACnB,KAAsBr/C,EAAAA,EAAAA,UAAS,IAA/B,GAAO15G,EAAP,KAAYotN,EAAZ,KACA,KAAgC1zG,EAAAA,EAAAA,UAAS,IAAzC,GAAO2zG,EAAP,KAAiBC,EAAjB,KACA,KAAsB5zG,EAAAA,EAAAA,UAAS15G,EAAM,QAAUg9J,GAA/C,GAAK9lE,EAAL,KAAWq2H,EAAX,MAEAp0G,EAAAA,EAAAA,YAAU,WAAM,oCACd,4FACE2/C,GAAW,GADb,SAE6Bo0D,GAAAA,QAAgBn0D,GAF7C,OAEQy0D,EAFR,OAGEJ,EAAOI,EAAa9uN,KAAK+uN,MACzB30D,GAAW,GAJb,4CADc,uBAAC,WAAD,wBAOdq0D,EACD,GAAE,CAACr0D,KAEJ3/C,EAAAA,EAAAA,YAAU,WACgB,KAApBk0G,EAAS//M,OACXigN,EAAQvtN,EAAM,aAAeqtN,EAAW,QAAUrwD,GAElDuwD,EAAQvtN,EAAM,QAAUg9J,EAE3B,GAAE,CAACqwD,EAAUrtN,EAAKg9J,IAEnB,IAUM0wD,EAAQ,+BAAG,WAAOngN,GAAP,iFACX2pF,EAAO/nF,SAASw+M,uBAAuB,QAD5B,SAET/9M,UAAUg+M,UAAUC,WAAU,UAAA32H,EAAK3pF,EAAE5C,OAAO4wM,aAAa,iBAA3B,eAAsC1oH,cAAe,IAF1E,OAGftlF,EAAE5C,OAAOwoF,UAAY,SAHN,2CAAH,sDAMd,OACE,kBAAKpd,UAAU,+BAAf,WACE,iBAAKA,UAAU,SAAf,UACE,yDAED/1E,GAAe,SAARA,IACN,kBAAK+1E,UAAU,OAAf,WACE,kBAAKA,UAAU,eAAf,WACE,kBAAKA,UAAU,oBAAf,WACE,gBAAIA,UAAU,QAAd,wCACA,eAAGA,UAAU,uBAAb,gJAEF,iBAAKA,UAAU,qBAAf,UACE,iBAAKA,UAAU,MAAf,UACE,kBAAKA,UAAU,eAAf,WACE,kBAAKA,UAAU,YAAf,WACE,iBAAKA,UAAU,gBAAgBmgE,KAAK,OAAOqkB,QAAQ,YAAYkB,OAAO,eAAtE,UACE,kBAAMpB,cAAc,QAAQC,eAAe,QAAQhkE,YAAY,IAAIz/E,EAAE,0IACvE,kBAAMk/D,UAAU,uBAAhB,8DAEF,kBAAMA,UAAU,YAAYlwE,MAAM,IAAImwE,QAAS03I,EAA/C,kCAMR,iBAAK33I,UAAU,gBAEf,kBAAKA,UAAU,eAAf,WACE,kBAAKA,UAAU,oBAAf,WACE,gBAAIA,UAAU,QAAd,iEACA,eAAGA,UAAU,uBAAb,6IAEF,iBAAKA,UAAU,qBAAf,UACE,kBAAKA,UAAU,MAAf,WACE,kBAAKA,UAAU,OAAf,WACE,gBAAIA,UAAU,aAAd,yEACA,2BACE,mBAAOhzE,KAAK,OAAOgzE,UAAU,oBAAoBE,SAtDjD,SAAC1oE,GACa,KAA1BA,EAAE5C,OAAOnK,MAAM8M,QACjB8/M,EAAO7/M,EAAE5C,OAAOnK,MAEnB,EAkDuFA,MAAOR,UAGjF,kBAAK+1E,UAAU,OAAf,WACE,gBAAIA,UAAU,QAAd,0CACA,eAAGA,UAAU,uBAAb,wHACA,2BACE,mBAAOhzE,KAAK,OAAOgzE,UAAU,oBAAoBE,SAvD5C,SAAC1oE,GACtB+/M,EAAY//M,EAAE5C,OAAOnK,MACtB,EAqD4FA,MAAO6sN,UAGtF,kBAAKt3I,UAAU,OAAf,WACE,gBAAIA,UAAU,QAAd,qEACA,eAAGA,UAAU,uBAAb,8GACA,kBAAKA,UAAU,eAAf,WACE,kBAAKA,UAAU,YAAf,WACE,iBAAKA,UAAU,gBAAgBmgE,KAAK,OAAOqkB,QAAQ,YAAYkB,OAAO,eAAtE,UACE,kBAAMpB,cAAc,QAAQC,eAAe,QAAQhkE,YAAY,IAAIz/E,EAAE,0IACvE,kBAAMk/D,UAAU,YAAhB,SAA6BmhB,QAE/B,kBAAMnhB,UAAU,YAAYlwE,MAAM,IAAImwE,QAAS03I,EAA/C,wCASL,SAAR1tN,IACC,gBAAI+1E,UAAU,mBAAd,sKAIP,ECnHK6nF,GAAM,2BAENkwD,GAAa,CACjBC,WAAW,WAAD,oBAAE,WAAOh1D,GAAP,iGAAcgF,EAAd,+BAA4B,UAChCf,EAAeC,MACfv+J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,SAAU8rJ,GACtBr/J,EAAKuT,OAAO,eAAgB+qJ,GAAgBjE,GALlC,SAMamE,GAAAA,KAAiBU,GAAKl/J,GANnC,cAMJ0B,EANI,yBAOHA,GAPG,4CAAF,mDAAC,IAWb,MC0EA,OArFA,WACE,MAA4Bk5J,GAAAA,eAArBR,EAAP,EAAOA,WAAYC,EAAnB,EAAmBA,MACnB,KAAoCr/C,EAAAA,EAAAA,UAAS,IAA7C,GAAOovG,EAAP,KAAmBC,EAAnB,KACA,KAAoDrvG,EAAAA,EAAAA,UAAS,IAA7D,GAAOsvG,EAAP,KAA2BC,EAA3B,MAEA9vG,EAAAA,EAAAA,YAAU,WAAM,oCACd,gGACE2/C,GAAW,GADb,SAEkCg1D,GAAAA,WAAsB/0D,GAFxD,OAEQ4xD,EAFR,OAGE5B,EAAa,OAAC4B,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBmsN,SACvC5B,EAAqB,OAAC0B,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBmsN,SAC/C/xD,GAAW,GALb,4CADc,uBAAC,WAAD,wBASdk1D,EACD,GAAE,CAACl1D,IAEJ,IAiBM6yD,EAAkB,SAACztD,EAAW0tD,GAClC,IAAIC,GAAa,EACX/xL,EAAO0kI,KAAOotD,GAAWtqJ,OAO/B,OANI48F,EAAU1kF,YACZqyI,EAAaA,GAAe3tD,EAAU1kF,WAAa1/C,GAEjDokI,EAAUzkF,UACZoyI,EAAaA,GAAe3tD,EAAUzkF,SAAW3/C,GAE5C+xL,CACR,EAED,OACE,kBAAK91I,UAAU,4BAAf,WACE,kBAAKA,UAAU,2DAAf,WACE,4CACA,UAAC,GAAD,CAAY0oF,aAjCW,SAACqtD,GAC5B,IAAIC,EAAkB,GAEtB,GAAuB,QAAnBD,EAAUvtD,KAAgB,CAC5B,IAAML,EAAY,CAChB1kF,UAAWsyI,EAAU/kH,MAAMvtB,UAC3BC,QAASqyI,EAAU/kH,MAAMttB,SAE3BsyI,EAAkBjD,EAAWn0M,QAAO,SAAAy2J,GAClC,OAAOugD,EAAgBztD,EAAWkN,EAAI8gD,WACvC,IACDjD,EAAsB8C,EACvB,MACC9C,EAAsBH,EAEzB,QAqBG,gBAAI/yI,UAAU,UAEd,iBAAKA,UAAU,kBAAf,UACE,+BACE,6BACE,4BACE,kDACA,oEACA,8DACA,sDAGJ,6BACsB,OAAlBizI,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB3jN,QAAS,GAC7B2jN,EAAmB1mM,KAAI,SAAC+7C,EAAMx4D,GAAP,OACrB,4BACE,yBAAK24J,KAAOngG,EAAK6tJ,YAAYxuM,OAAO,iBACpC,yBAAK2gD,EAAK17B,OAAS07B,EAAK17B,OAAOwpL,iBAAmB,MAClD,yBAAK9tJ,EAAK4vJ,iBACV,0BAAI,kBAAMl4I,UACQ,SAAhB1X,EAAK/9D,OAAoB,sBAAyC,WAAhB+9D,EAAK/9D,OAAsB,qBAAuB,GADlG,SAED+9D,EAAK/9D,aANDuF,EADY,aAgBpC,ECtFK+3J,GAAM,2BAENswD,GAAY,CAChBC,UAAU,WAAD,oBAAE,WAAOp1D,GAAP,mGAAcq1D,EAAd,+BAAqB,EAAGrwD,EAAxB,+BAAsC,SACzCf,EAAeC,MACfv+J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,SAAU8rJ,GACtBr/J,EAAKuT,OAAO,OAAQm8M,GACpB1vN,EAAKuT,OAAO,eAAgB+qJ,GAAgBjE,GANnC,UAOcmE,GAAAA,KAAiBU,GAAKl/J,GAPpC,eAOH0B,EAPG,yBAQFA,GARE,4CAAF,mDAAC,IAYZ,MCgGA,OA3GA,WAAkB,IAAD,EACf,KAA4Bs5G,EAAAA,EAAAA,UAAS,IAArC,GAAO0wG,EAAP,KAAeiE,EAAf,KACA,EAA8B/0D,GAAAA,eAAtBR,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,MACpB,KAAkCr/C,EAAAA,EAAAA,UAAS,GAA3C,GAAO40G,EAAP,KAAkBC,EAAlB,KACA,KAAsC70G,EAAAA,EAAAA,UAAS,GAA/C,GAAO80G,EAAP,KAAoBC,EAApB,KACA,KAAwC/0G,EAAAA,EAAAA,WAAS,GAAjD,GAAOg1G,EAAP,KAAqBC,EAArB,MAEAx1G,EAAAA,EAAAA,YAAU,WAAM,oCACd,kGACE2/C,GAAW,GADb,SAE+Bo1D,GAAAA,UAAoBn1D,GAFnD,OAEQ61D,EAFR,OAGEP,EAAS,UAACO,EAAelwN,YAAhB,aAAC,EAAqB0rN,QAC/BmE,EAAY,UAACK,EAAelwN,YAAhB,aAAC,EAAqBmrE,OAClC4kJ,EAAc,UAACG,EAAelwN,YAAhB,aAAC,EAAqB0vN,MACpCt1D,GAAW,GANb,4CADc,uBAAC,WAAD,wBAUdq1D,EACD,GAAE,CAACr1D,IAuCJ,IArCA,IAAM+1D,EAAmB,SAAC33H,GACxB,GAAa,KAATA,EACF,MAAO,GAGT,IAAM43H,EAAa53H,EAAKlmF,MAAM,KAC9B,MAAO,OAAS89M,EAAWA,EAAWzpN,OAAS,GAAK,GACrD,EAEK0pN,EAAqB,+BAAG,WAAOlpN,GAAP,iFAC5B8oN,GAAgB,GAChBF,EAAe5oN,GAFa,SAGCqoN,GAAAA,UAAoBn1D,EAAOlzJ,GAH5B,OAGtB+oN,EAHsB,OAI5BP,EAAS,UAACO,EAAelwN,YAAhB,aAAC,EAAqB0rN,QAC/BuE,GAAgB,GALY,2CAAH,sDAQrBK,EAAU,+BAAG,0FACbR,IAAgBF,EADH,wDAEjBK,GAAgB,GAChBF,EAAeD,EAAc,GAHZ,SAIYN,GAAAA,UAAoBn1D,EAAOy1D,EAAc,GAJrD,OAIXI,EAJW,OAKjBP,EAAS,UAACO,EAAelwN,YAAhB,aAAC,EAAqB0rN,QAC/BuE,GAAgB,GANC,2CAAH,qDASVM,EAAU,+BAAG,0FACG,IAAhBT,EADa,wDAEjBG,GAAgB,GAChBF,EAAeD,EAAc,GAHZ,SAIYN,GAAAA,UAAoBn1D,EAAOy1D,EAAc,GAJrD,OAIXI,EAJW,OAKjBP,EAAS,UAACO,EAAelwN,YAAhB,aAAC,EAAqB0rN,QAC/BuE,GAAgB,GANC,2CAAH,qDASVO,EAAa,GAvDJ,WAyDN/pN,GACP+pN,EAAWtpN,MAAK,gBAAImwE,UAAS,oBAAe5wE,IAAMqpN,EAAc,SAAW,IAA3D,UAAiE,oBAAQz4I,UAAU,YAAYC,QAAS,kBAAM+4I,EAAsB5pN,EAA5B,EAAvC,SAAwEA,MA1D5I,EAyDNA,EAAI,EAAGA,GAAKmpN,EAAWnpN,IAAM,EAA7BA,GAIT,OACE,kBAAK4wE,UAAU,8BAAf,WACE,gBAAIA,UAAU,OAAd,4CACA,oBAAOA,UAAU,kBAAjB,WACE,6BACE,4BACE,mCACA,wDACA,yDAGJ,+BACI24I,GAAgBtE,GAAUA,EAAO/kN,OAAS,GAC1C+kN,EAAO9nM,KAAI,SAAAq3H,GAAK,OACd,4BACE,0BAAI,eAAG1pI,KAAM0pI,EAAM35I,IAAK2K,OAAO,SAAS+vL,IAAI,aAAxC,SAAsDm0B,EAAiBl1E,EAAM35I,UACjF,yBAAK25I,EAAMw1E,UAAY,oBACvB,yBAAK3wD,KAAO7kB,EAAM7/G,MAAMk0B,IAAI,EAAG,SAAStwC,OAAO,sBAHxCi8H,EAAMy1E,SADD,IAQQ,OAAnB,OAANhF,QAAM,IAANA,GAAA,UAAAA,EAAQ1rN,YAAR,eAAc4B,UACb,0BACE,gBAAIy1E,UAAU,6BAA6Bk3I,QAAS,EAApD,iDAGHyB,IACC,0BACE,gBAAI34I,UAAU,6BAA6Bk3I,QAAS,EAApD,UAAuD,UAAC,GAAD,CAASpmH,MAAM,mBAK7EynH,EAAY,IACX,iBAAKe,UAAU,kBAAf,UACE,iBAAIt5I,UAAU,yCAAd,WACE,gBAAIA,UAAU,YAAd,UAA0B,oBAAQA,UAAU,YAAYC,QAASi5I,EAAvC,iBACzBC,GACD,gBAAIn5I,UAAU,YAAd,UAA0B,oBAAQA,UAAU,YAAYC,QAASg5I,EAAvC,wBAMrC,EC9GKpxD,GAAM,2BAEN0xD,GAAe,CACnBC,aAAa,WAAD,oBAAE,4GAAOxxD,EAAP,+BAAqB,aAC3Br/J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,SAAU8rJ,GACtBr/J,EAAKuT,OAAO,eAAgB,IAJhB,SAKWirJ,GAAAA,KAAiBU,GAAKl/J,GALjC,cAKN0B,EALM,yBAMLA,GANK,2CAAF,kDAAC,IAUf,MCYA,OAvBA,YAAqD,IAA7BovN,EAA4B,EAA5BA,SAAUC,EAAkB,EAAlBA,OAAQC,EAAU,EAAVA,OAClC1yD,EAAeC,KACf30J,EAAI,mBAAeknN,EAASxvN,IAAxB,gBAAmCg9J,EAAnC,sBAA6DwyD,EAASG,MAAtE,kBAAqFH,EAASrpN,KAA9F,YAEV,OACE,kBAAK4vE,UAAU,gBAAf,WACE,iBAAKA,UAAU,eAAf,UACE,iBAAKurC,IAAG,OAAEkuG,QAAF,IAAEA,OAAF,EAAEA,EAAUG,MAAOn2D,IAAG,OAAEg2D,QAAF,IAAEA,OAAF,EAAEA,EAAUrpN,UAE5C,kBAAK4vE,UAAU,cAAf,WACE,qBAAQhzE,KAAK,SAASgzE,UAAU,YAAYC,QAAS05I,EAArD,WACE,UAAC,GAAD,CAAQvpN,KAAK,QADf,UAIA,qBAAQpD,KAAK,SAASgzE,UAAU,YAAYC,QAAS,SAACzoE,GAAD,OAAOkiN,EAAOliN,EAAGjF,EAAjB,EAArD,WACE,UAAC,GAAD,CAAQnC,KAAK,SADf,eAOP,ECUD,OAjCA,YAAoD,IAA3BqpN,EAA0B,EAA1BA,SAAUI,EAAgB,EAAhBA,aAC3B5yD,EAAeC,KAErB,OACE,iBAAKlnF,UAAU,QAAQwB,MAAO,CAACypC,QAAS,SAAxC,UACE,iBAAKjrC,UAAU,eAAf,UACE,kBAAKA,UAAU,gBAAf,WACE,kBAAKA,UAAU,eAAf,WACE,gBAAIA,UAAU,cAAd,SAA6By5I,EAASrpN,QACtC,oBAAQpD,KAAK,SAASgzE,UAAU,QAAQC,QAAS45I,EAAjD,UACE,kBAAM,cAAY,OAAlB,wBAGJ,kBAAK75I,UAAU,aAAf,WACE,iBAAKA,UAAU,cAAc0c,wBAAyB,CAACiZ,OAAQ8jH,EAAS/mN,gBACxE,kBAAKstE,UAAU,iBAAf,WACE,gBAAIA,UAAU,YAAd,sBACA,oBAAQA,UAAU,YAAlB,UAA8B,iBAAKA,UAAU,YAAYurC,IAAKkuG,EAASG,MAAOn2D,IAAKg2D,EAASrpN,aAE9F,gBAAI4vE,UAAU,YAAd,mBACA,iBAAKA,UAAU,yBAAf,UACE,2BAAK,8CAAmBy5I,EAASxvN,IAA5B,gBAAuCg9J,EAAvC,sBAAiEwyD,EAASG,MAA1E,kBAAyFH,EAASrpN,KAAlG,sBAGT,iBAAK4vE,UAAU,eAAf,UACE,oBAAQhzE,KAAK,SAASgzE,UAAU,oBAAoBC,QAAS45I,EAA7D,kCAMX,EC+BD,OAzDA,WACE,IAAO92D,EAAcQ,GAAAA,eAAdR,WACP,KAAkCp/C,EAAAA,EAAAA,UAAS,IAA3C,GAAOm2G,EAAP,KAAkBC,EAAlB,KACA,KAA4Cp2G,EAAAA,EAAAA,UAAS,IAArD,GAAOq2G,EAAP,KAAuBC,EAAvB,KACA,KAAkCt2G,EAAAA,EAAAA,WAAS,GAA3C,GAAOu2G,EAAP,KAAkBC,EAAlB,KA0BA,OAxBA/2G,EAAAA,EAAAA,YAAU,WAAM,oCACd,8FACE2/C,GAAW,GADb,SAEkCw2D,GAAAA,eAFlC,OAEQa,EAFR,OAGEL,GAAa,UAAAK,EAAkBzxN,YAAlB,eAAwBmxN,YAAa,IAClD/2D,GAAW,GAJb,4CADc,uBAAC,WAAD,wBAQdy2D,EACD,GAAE,CAACz2D,KAgBF,kBAAK/iF,UAAU,iCAAf,WACE,oEACA,iBAAKA,UAAU,MAAf,SACG85I,EAAUxqN,OAAS,GAClBwqN,EAAUvtM,KAAI,SAAA+7C,GAAI,OAChB,iBAAK0X,UAAU,WAAf,UACE,UAAC,GAAD,CACEy5I,SAAUnxJ,EACVoxJ,OAAQ,SAACliN,GAAD,OAhBF,SAACA,EAAGjF,GACtBsH,UAAUg+M,UAAUC,UAAUvlN,GAC9BlH,YAAW,WACTmM,EAAE5C,OAAOylN,UAAY,QACtB,GAAE,IACJ,CAW4BC,CAAY9iN,EAAnB,EACRmiN,OAAQ,kBAvBF,SAACY,GACnB,IAAMd,EAAWK,EAAUl7M,QAAO,SAAA0pD,GAAI,OAAIA,EAAKiyJ,cAAgBA,CAAzB,IACtCN,EAAkBR,EAAS,IAC3BU,GAAa,EACd,CAmB2BK,CAAYlyJ,EAAKiyJ,YAAvB,KAJmBjyJ,EAAKiyJ,YADpB,MAYrBL,IACC,UAAC,GAAD,CACET,SAAUO,EACVH,aAAc,kBAAMM,GAAa,EAAnB,MAKvB,wBC9DD,SAASM,KAA2Q,OAA9PA,GAAW9zN,OAAO4M,QAAU,SAAUqB,GAAU,IAAK,IAAIxF,EAAI,EAAGA,EAAI4I,UAAU1I,OAAQF,IAAK,CAAE,IAAIY,EAASgI,UAAU5I,GAAI,IAAK,IAAI7C,KAAOyD,EAAcrJ,OAAOoH,UAAU0P,eAAevN,KAAKF,EAAQzD,KAAQqI,EAAOrI,GAAOyD,EAAOzD,GAAW,CAAC,OAAOqI,CAAS,EAAS6lN,GAAS5oN,MAAM9C,KAAMiJ,UAAa,CAI7T,SAASsgC,GAAuB3vB,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI4vB,eAAe,6DAAgE,OAAO5vB,CAAO,CAOtK,IAAI+xM,GAEJ,SAAUC,GAPV,IAAwB3jL,EAAUC,EAUhC,SAASyjL,IACP,IAAIhhL,EAOJ,OALAA,EAAQihL,EAAiBzqN,KAAKnB,OAASA,MACjC6rN,cAAgBlhL,EAAMkhL,cAAcrtN,KAAK+qC,GAAuBoB,IACtEA,EAAMmhL,cAAgBnhL,EAAMmhL,cAActtN,KAAK+qC,GAAuBoB,IACtEA,EAAM+7C,aAAe/7C,EAAM+7C,aAAaloF,KAAK+qC,GAAuBoB,IACpEA,EAAMohL,mBAAqBphL,EAAMohL,mBAAmBvtN,KAAK+qC,GAAuBoB,IACzEA,CACR,CAnB+BzC,EAQN0jL,GARJ3jL,EAQP0jL,GARwC3sN,UAAYpH,OAAOsH,OAAOgpC,EAAWlpC,WAAYipC,EAASjpC,UAAU6P,YAAco5B,EAAUA,EAASO,UAAYN,EAqBxK,IAAImgF,EAASsjG,EAAU3sN,UAkKvB,OAhKAqpH,EAAOh8B,SAAW,WAChB,OAAIrsF,KAAK0P,MAAMs8M,iBAAiC5uN,IAAnB4C,KAAKisN,UACzBjsN,KAAK0P,MAAMs8M,WAAWE,YAAYlsN,KAAKisN,WAGzC,IACR,EAED5jG,EAAO8jG,YAAc,WACnB,OAAInsN,KAAK0P,MAAMs8M,iBAAiC5uN,IAAnB4C,KAAKisN,UACzBjsN,KAAKisN,UAGP,IACR,EAED5jG,EAAO9uG,QAAU,WACf,IAAIyyM,EAAahsN,KAAK0P,MAAMs8M,WAE5B,GAAIA,QAAiC5uN,IAAnB4C,KAAKisN,UACrB,OAAOD,EAAWzyM,QAAQvZ,KAAKisN,WAE/BjsN,KAAKosN,mBAAoB,CAE5B,EAED/jG,EAAOgkG,aAAe,WACpB,IAAIrhL,EAAShrC,KAEb,OAAO,IAAIzG,SAAQ,SAAUC,EAASC,GACpCuxC,EAAOshL,iBAAmB9yN,EAC1BwxC,EAAOuhL,gBAAkB9yN,EAEzBuxC,EAAOzxB,SACR,GACF,EAED8uG,EAAO3yG,MAAQ,WACT1V,KAAK0P,MAAMs8M,iBAAiC5uN,IAAnB4C,KAAKisN,WAChCjsN,KAAK0P,MAAMs8M,WAAWt2M,MAAM1V,KAAKisN,UAEpC,EAED5jG,EAAOwjG,cAAgB,WACjB7rN,KAAK0P,MAAM88M,UACbxsN,KAAK0P,MAAM88M,YAEXxsN,KAAK0mF,aAAa,KAErB,EAED2hC,EAAOyjG,cAAgB,WACjB9rN,KAAK0P,MAAM+8M,WACbzsN,KAAK0P,MAAM+8M,YAGTzsN,KAAKusN,kBACPvsN,KAAKusN,yBACEvsN,KAAKssN,wBACLtsN,KAAKusN,gBAEf,EAEDlkG,EAAO3hC,aAAe,SAAsBxmF,GACtCF,KAAK0P,MAAMyhE,UACbnxE,KAAK0P,MAAMyhE,SAASjxE,GAGlBF,KAAKssN,mBACPtsN,KAAKssN,iBAAiBpsN,UACfF,KAAKusN,uBACLvsN,KAAKssN,iBAEf,EAEDjkG,EAAOqkG,eAAiB,WACtB,GAAI1sN,KAAK0P,MAAMs8M,YAAchsN,KAAK0P,MAAMs8M,WAAW9zK,aAA6B96C,IAAnB4C,KAAKisN,UAAyB,CACzF,IAAIU,EAAUtiN,SAASY,cAAc,OACrCjL,KAAKisN,UAAYjsN,KAAK0P,MAAMs8M,WAAW9zK,OAAOy0K,EAAS,CACrDC,QAAS5sN,KAAK0P,MAAMk9M,QACpBtgN,SAAUtM,KAAK0mF,aACf66F,MAAOvhL,KAAK0P,MAAM6xK,MAClBtjL,KAAM+B,KAAK0P,MAAMzR,KACjB4uN,SAAU7sN,KAAK0P,MAAMm9M,SACrB,mBAAoB7sN,KAAK6rN,cACzB,iBAAkB7rN,KAAK8rN,cACvB/xG,KAAM/5G,KAAK0P,MAAMqqG,KACjB+yG,OAAQ9sN,KAAK0P,MAAMo9M,OACnBnlM,GAAI3nB,KAAK0P,MAAMiY,GACfolM,MAAO/sN,KAAK0P,MAAMq9M,QAEpB/sN,KAAKgtN,QAAQjrI,YAAY4qI,EAC1B,CAEG3sN,KAAKosN,mBAAqBpsN,KAAK0P,MAAMs8M,iBAAiC5uN,IAAnB4C,KAAKisN,YAC1DjsN,KAAKosN,mBAAoB,EACzBpsN,KAAKuZ,UAER,EAED8uG,EAAO5Z,kBAAoB,WACzBzuG,KAAK0sN,gBACN,EAEDrkG,EAAO5Q,mBAAqB,WAC1Bz3G,KAAK0sN,gBACN,EAEDrkG,EAAO5M,qBAAuB,gBACLr+G,IAAnB4C,KAAKisN,YACPjsN,KAAKitN,+BACLjtN,KAAK0V,QAER,EAED2yG,EAAO4kG,6BAA+B,WACpC,IAAIC,EAAgB7iN,SAASY,cAAc,OAI3C,IAHAZ,SAASgsE,KAAK0L,YAAYmrI,GAC1BA,EAAcz6I,MAAMypC,QAAU,OAEvBl8G,KAAKgtN,QAAQ1+H,YAClB4+H,EAAcnrI,YAAY/hF,KAAKgtN,QAAQ1+H,YAIzChyF,YAAW,WACT+N,SAASgsE,KAAK2L,YAAYkrI,EAC3B,GAAE,IACJ,EAED7kG,EAAO0jG,mBAAqB,SAA4BjhF,GACtD9qI,KAAKgtN,QAAUliF,CAChB,EAEDziB,EAAOnwE,OAAS,WAId,IAAIowE,EAActoH,KAAK0P,MAanBy9M,GAZU7kG,EAAYskG,QACXtkG,EAAYn3C,SACfm3C,EAAYi5D,MACbj5D,EAAYrqH,KACRqqH,EAAYukG,SACXvkG,EAAYkkG,UACZlkG,EAAYmkG,UACjBnkG,EAAYvO,KACVuO,EAAYwkG,OACRxkG,EAAY0jG,WACjB1jG,EAAYykG,MACfzkG,EAAY3gG,GAjLzB,SAAuC1mB,EAAQsnH,GAAY,GAAc,MAAVtnH,EAAgB,MAAO,CAAC,EAAG,IAA2DzD,EAAK6C,EAA5DwF,EAAS,CAAC,EAAO2iH,EAAa5wH,OAAO2O,KAAKtF,GAAqB,IAAKZ,EAAI,EAAGA,EAAImoH,EAAWjoH,OAAQF,IAAO7C,EAAMgrH,EAAWnoH,GAAQkoH,EAASlsH,QAAQmB,IAAQ,IAAaqI,EAAOrI,GAAOyD,EAAOzD,IAAQ,OAAOqI,CAAS,CAkL9R4iH,CAA8BH,EAAa,CAAC,UAAW,WAAY,QAAS,OAAQ,WAAY,YAAa,YAAa,OAAQ,SAAU,aAAc,QAAS,QAIpL,OAAOO,EAAAA,cAAoB,MAAO6iG,GAAS,CAAC,EAAGyB,EAAY,CACzDl7I,IAAKjyE,KAAK+rN,qBAEb,EAEMJ,CACR,CAjLD,CAiLE9iG,EAAAA,WAGF8iG,GAAU10K,YAAc,YACxB00K,GAAUr0K,UAAY,CACpBs1K,QAAStlJ,KAAAA,OAAAA,WACT6J,SAAU7J,KAAAA,KACV0kJ,WAAY1kJ,KAAAA,OACZi6G,MAAOj6G,KAAAA,MAAgB,CAAC,OAAQ,UAChCrpE,KAAMqpE,KAAAA,MAAgB,CAAC,QAAS,UAChCulJ,SAAUvlJ,KAAAA,OACVklJ,UAAWllJ,KAAAA,KACXmlJ,UAAWnlJ,KAAAA,KACXyyC,KAAMzyC,KAAAA,MAAgB,CAAC,UAAW,SAAU,cAC5CwlJ,OAAQxlJ,KAAAA,OACR3/C,GAAI2/C,KAAAA,OACJylJ,MAAOzlJ,KAAAA,MAAgB,CAAC,cAAe,aAAc,YAEvDqkJ,GAAU30K,aAAe,CACvBm6B,SAAU,WAAsB,EAChCowG,MAAO,QACPtjL,KAAM,QACN4uN,SAAU,EACV9yG,KAAM,SACNgzG,MAAO,yCCtNT,SAASrB,KAA2Q,OAA9PA,GAAW9zN,OAAO4M,QAAU,SAAUqB,GAAU,IAAK,IAAIxF,EAAI,EAAGA,EAAI4I,UAAU1I,OAAQF,IAAK,CAAE,IAAIY,EAASgI,UAAU5I,GAAI,IAAK,IAAI7C,KAAOyD,EAAcrJ,OAAOoH,UAAU0P,eAAevN,KAAKF,EAAQzD,KAAQqI,EAAOrI,GAAOyD,EAAOzD,GAAW,CAAC,OAAOqI,CAAS,EAAS6lN,GAAS5oN,MAAM9C,KAAMiJ,UAAa,CAS7T,IAAImkN,GAAa,CAAC,EAEdC,GAAU,ECTd,IAAIC,GAAe,iBAanB,IDHwCC,GAAc5oN,GCGtD,IDHwC4oN,GCHxC,WAGE,MAAO,aANkB,qBAAX3hN,QAA0BA,OAAO4hN,kBAAoB,CAAC,GAKtCC,gBAAkB,gBAAkB,kBACnC,4BAA8BH,GAAe,kBAC7E,EDAC3oN,IADoDA,GCGT,CAC3C2oN,aAAcA,GACdI,WAde,gBDUM,CAAC,EACf,SAA6B7mG,GAClC,IAAI8mG,EAAuB9mG,EAAiB5vE,aAAe4vE,EAAiBxlH,MAAQ,YAEhFusN,EAEJ,SAAU5mG,GAfd,IAAwB/+E,EAAUC,EAkB5B,SAAS0lL,EAAkBl+M,EAAO5Q,GAChC,IAAI6rC,EAKJ,OAHAA,EAAQq8E,EAAW7lH,KAAKnB,KAAM0P,EAAO5Q,IAAYkB,MAC3C4qB,MAAQ,CAAC,EACf+f,EAAMkjL,YAAc,GACbljL,CACR,CAzB2BzC,EAgBM8+E,GAhBhB/+E,EAgBH2lL,GAhBoC5uN,UAAYpH,OAAOsH,OAAOgpC,EAAWlpC,WAAYipC,EAASjpC,UAAU6P,YAAco5B,EAAUA,EAASO,UAAYN,EA2BpK,IAAImgF,EAASulG,EAAkB5uN,UAmM/B,OAjMAqpH,EAAOylG,mCAAqC,WAK1C,OAJK9tN,KAAK+tN,mBACR/tN,KAAK+tN,iBAAmB,uBAAyBV,MAG5CrtN,KAAK+tN,gBACb,EAED1lG,EAAO2lG,eAAiB,WAEtB,OADAhuN,KAAK6tN,YAAsC,oBAAjBN,GAA8BA,KAAiBA,GAClEvtN,KAAK6tN,WACb,EAEDxlG,EAAO4lG,4BAA8B,SAAqCrjM,GACxE,IAAIogB,EAAShrC,KAGbA,KAAKuxE,SAAS3mD,GAAO,WACnB,OAAOogB,EAAOt7B,MAAMw+M,mBAAqBljL,EAAOt7B,MAAMw+M,kBAAkBljL,EAAOpgB,MAChF,GACF,EAEDy9F,EAAO8lG,uCAAyC,WAC9C,IAAIC,EAAWhB,GAAWptN,KAAK6tN,aAE/B,IAAKO,IAAaA,EAASxsF,OACzB,MAAM,IAAIn+H,MAAM,yBAGlB,IAAK,IAAI4qN,KAAUD,EAASE,UAC1BF,EAASE,UAAUD,GAAQD,UAGtBxiN,OAAOjH,GAAQ2oN,aACvB,EAEDjlG,EAAO5Z,kBAAoB,WACzB,IAAI8/G,EAASvuN,KAETwuN,EAAYxuN,KAAKguN,iBACjBxwN,EAAMwC,KAAK8tN,qCACX/3L,EAAWpxB,GACX+oN,EAAa33L,EAAS23L,WACtBJ,EAAev3L,EAASu3L,aACxBmB,EAAW14L,EAAS04L,SAUxB,GARIf,GAA4C,qBAAvB9hN,OAAO8hN,KAC9BN,GAAWoB,GAAa,CACtB5sF,QAAQ,EACR0sF,UAAW,CAAC,IAKZlB,GAAWoB,GAAY,CACzB,IAAIplE,EAAQgkE,GAAWoB,GAEvB,OAAIplE,IAAUA,EAAMxnB,QAAUwnB,EAAM9Q,cAClCt4I,KAAKiuN,4BAA4B7kE,QAKnCA,EAAMklE,UAAU9wN,GAAO,SAAU4rJ,GAC/B,OAAOmlE,EAAON,4BAA4B7kE,EAC3C,EAGF,CAQD,IAAIklE,EAAY,CAAC,EAEjBA,EAAU9wN,GAAO,SAAU4rJ,GACzB,OAAOmlE,EAAON,4BAA4B7kE,EAC3C,EAEDgkE,GAAWoB,GAAa,CACtB5sF,QAAQ,EACR0sF,UAAWA,GAEb,IAAII,EAASrkN,SAASY,cAAc,UAIpC,IAAK,IAAIgwH,KAHTyzF,EAAOlyG,IAAMgyG,EACbE,EAAOn9D,OAAQ,EAEO5sJ,GAAQirH,WAC5B8+F,EAAOtjN,aAAa6vH,EAAWt2H,GAAQirH,WAAWqL,IAGhDwzF,IACFC,EAAO7pN,GAAK4pN,GAGd,IAAIE,EAAoC,SAA2ClwK,GACjF,GAAI2uK,GAAWoB,GAAY,CACzB,IACII,EADWxB,GAAWoB,GACEF,UAE5B,IAAK,IAAID,KAAUO,EACbnwK,EAAKmwK,EAAaP,YACbO,EAAaP,EAGzB,CACF,EAEGf,GAAkC,qBAAX1hN,SACzBA,OAAO0hN,GAAgB,WACrB,OAAOiB,EAAOJ,wCACf,GAGHO,EAAOG,OAAS,WACd,IAAIT,EAAWhB,GAAWoB,GAEtBJ,IACFA,EAASxsF,QAAS,EAClB+sF,GAAkC,SAAUG,GAC1C,OAAIxB,IAIJwB,EAASV,IACF,EACR,IAEJ,EAEDM,EAAOjyN,QAAU,WACf,IAAI2xN,EAAWhB,GAAWoB,GAEtBJ,IACFA,EAAS91E,SAAU,EACnBq2E,GAAkC,SAAUG,GAE1C,OADAA,EAASV,IACF,CACR,IAEJ,EAED/jN,SAASgsE,KAAK0L,YAAY2sI,EAC3B,EAEDrmG,EAAO5M,qBAAuB,WAE5B,IAAI+yG,EAAYxuN,KAAK6tN,YAErB,IAAgC,IAA5BlpN,GAAQoqN,gBAGV,IAFA,IAAIC,EAAa3kN,SAAS+rM,qBAAqB,UAEtC/1M,EAAI,EAAGA,EAAI2uN,EAAWzuN,OAAQF,GAAK,EACtC2uN,EAAW3uN,GAAGm8G,IAAIngH,QAAQmyN,IAAc,GACtCQ,EAAW3uN,GAAG2yF,YAChBg8H,EAAW3uN,GAAG2yF,WAAWhR,YAAYgtI,EAAW3uN,IAOxD,IAAI+tN,EAAWhB,GAAWoB,GAEtBJ,WACKA,EAASE,UAAUtuN,KAAK8tN,uCAEC,IAA5BnpN,GAAQoqN,wBACH3B,GAAWoB,GAGvB,EAEDnmG,EAAOnwE,OAAS,WACd,IAAIw1K,EAAa/oN,GAAQ+oN,WAErBplG,EAActoH,KAAK0P,MAEnBu/M,GADoB3mG,EAAY4lG,kBACjB5lG,EAAY2mG,cAC3B9B,EArNZ,SAAuClsN,EAAQsnH,GAAY,GAAc,MAAVtnH,EAAgB,MAAO,CAAC,EAAG,IAA2DzD,EAAK6C,EAA5DwF,EAAS,CAAC,EAAO2iH,EAAa5wH,OAAO2O,KAAKtF,GAAqB,IAAKZ,EAAI,EAAGA,EAAImoH,EAAWjoH,OAAQF,IAAO7C,EAAMgrH,EAAWnoH,GAAQkoH,EAASlsH,QAAQmB,IAAQ,IAAaqI,EAAOrI,GAAOyD,EAAOzD,IAAQ,OAAOqI,CAAS,CAqN1R4iH,CAA8BH,EAAa,CAAC,oBAAqB,iBAQlF,OALIolG,GAAgC,qBAAX9hN,SACvBuhN,EAAWO,GAA4C,qBAAvB9hN,OAAO8hN,GAA8B9hN,OAAO8hN,QAActwN,GAG5F+vN,EAAWl7I,IAAMg9I,GACVhkN,EAAAA,EAAAA,eAAc47G,EAAkBsmG,EACxC,EAEMS,CACR,CAhND,CAgNEz7I,EAAAA,WAKE+8I,GAAqBrvF,EAAAA,EAAAA,aAAW,SAAUnwH,EAAOuiE,GACnD,OAAOhnE,EAAAA,EAAAA,eAAc2iN,EAAmBlC,GAAS,CAAC,EAAGh8M,EAAO,CAC1Du/M,aAAch9I,IAEjB,IAKD,OAJAi9I,EAAmBj4K,YAAc,qBAAuB02K,EAAuB,IAC/EuB,EAAmB53K,UAAY,CAC7B42K,kBAAmB5mJ,KAAAA,MAEd6nJ,KAAaD,EAAoBroG,EACzC,GChOA8kG,IChBH,MCCMyD,GAAW,CACfC,MAAM,WAAD,oBAAE,WAAO7iN,GAAP,8EACO,2BADP,SAEkB4rJ,GAAAA,KADX,2BACiC5rJ,GAFxC,cAEClR,EAFD,yBAGEA,GAHF,2CAAF,mDAAC,GAMNg0N,WAAW,WAAD,oBAAE,WAAO11N,GAAP,8EACE,2BADF,SAEaw+J,GAAAA,KADX,2BACiCx+J,GAFnC,cAEJ0B,EAFI,yBAGHA,GAHG,2CAAF,mDAAC,GAMXi0N,qBAAqB,WAAD,oBAAE,WAAOC,GAAP,iFACdl2N,EAAS0O,KADK,SAEGowJ,GAAAA,IAAA,gDAAyDo3D,GAAU,CACxF11N,QAAS,CACPgB,cAAe,SAAW8Q,OAAO7Q,KAAP,UAAezB,EAAO27J,mBAAtB,YAA4C37J,EAAO47J,oBAJ7D,cAEd55J,EAFc,yBAObA,GAPa,2CAAF,mDAAC,IAWvB,oEC6GA,OA5HA,WAEE,MAAmCk5J,GAAAA,eAA3BnB,EAAR,EAAQA,aAAca,EAAtB,EAAsBA,SAChBu7D,GAAe79I,EAAAA,EAAAA,aACrB,KAA0CgjC,EAAAA,EAAAA,UAAS,IAAnD,GAAO86G,EAAP,KAAsBC,EAAtB,KACA,KAA0C/6G,EAAAA,EAAAA,UAAS,IAAnD,GAAOg7G,EAAP,KAAsBC,EAAtB,KACA,KAAoCj7G,EAAAA,EAAAA,WAAS,GAA7C,GAAOk7G,EAAP,KAAmBC,EAAnB,KACA,KAA0Bn7G,EAAAA,EAAAA,UAAS,MAAnC,GAAOxxG,EAAP,KAAc4sN,EAAd,KACA,KAAkCp7G,EAAAA,EAAAA,WAAS,GAA3C,GAAOq7G,EAAP,KAAkBC,EAAlB,KACM52N,EAAS0O,KAETmoN,EAAW,+BAAG,WAAO1nN,GAAP,uGAClBA,EAAE2rE,iBACIx6E,EAAO,IAAIqO,SAFC,SAGMwnN,EAAa59I,QAAQw6I,eAH3B,UAGZ+D,EAHY,OAIlBX,EAAa59I,QAAQn8D,QACrB9b,EAAKuT,OAAO,WAAYuiN,GACxB91N,EAAKuT,OAAO,WAAYyiN,GACxBh2N,EAAKuT,OAAO,cAAeijN,GAC3Bx2N,EAAKuT,OAAO,SAAU,mBARJ,WAUZuiN,EAAclnN,SAAUonN,EAAcpnN,OAV1B,wBAWd0nN,GAAa,GAXC,UAYSd,GAAAA,MAAex1N,GAZxB,aAYR0B,EAZQ,QAaD1B,KAbC,wBAcNo7B,EAAO,IAAI7qB,KACXkmN,EAAe/nN,KAAKC,MAAMjN,EAAS1B,OACnC02N,EAAe,IAAIroN,UACZkF,OAAO,WAAYuiN,GAChCY,EAAanjN,OAAO,SAAU,eAlBlB,UAmBWiiN,GAAAA,WAAoBkB,GAnB/B,eAmBNC,EAnBM,iBAoBSA,EAAS32N,KAAK42N,QApBvB,eAoBNhB,EApBM,OAqBNiB,EAAe,CACnB97D,WAAY47D,EAAS32N,KAAK+6J,WAC1BC,aAAc27D,EAAS32N,KAAKg7J,cAvBlB,UAyBWw6D,GAAAA,qBAA8BI,GAzBzC,kBAyBJ51N,EAzBI,EAyBJA,MACC2G,QAAUivN,IACbM,GACF5iE,GAAeQ,GAAe,WAEhCwG,EAASt6J,EAAK,GAAGs+J,aAAajxJ,YACxBypN,EAAuB3/M,KAAAA,IAAAA,QAAqBnX,EAAK,GAAGs+J,aAAajxJ,WAAY3N,EAAO47J,gBAAgBjuJ,WAC1GosJ,EACEg9D,EAAaM,UACb,IAAIxmN,KAAK6qB,EAAK8I,QAAQ9I,EAAKqF,UAAY,IACvCq2L,EACApoN,KAAKI,UAAU+nN,GACf72N,EAAK,GAAG4B,SArCA,gCA0Cdw0N,EAAS,CACPp2N,KAAM,CACJg3N,kBAAmB,8CA5CT,4DAgDRt1N,EAhDQ,KAgDRA,WAEN00N,EAAS1nN,KAAKC,MAAL,OAAWjN,QAAX,IAAWA,OAAX,EAAWA,EAAU1B,OAEhCi2N,EAAiB,IApDD,QAsDlBK,GAAa,GAtDK,2DAAH,sDAyDjB,OACE,iBAAKj/I,UAAU,aAAf,UACE,kBAAKA,UAAU,kBAAf,WACE,kBAAKA,UAAU,aAAf,WACE,iBAAKA,UAAU,YAAf,UACE,iBAAKurC,IAAKq0G,GAAUn8D,IAAI,gBAE1B,gBAAIzjF,UAAU,cAAd,wGACA,eAAGA,UAAU,mBAAb,kFAGA,mBAAM2gC,OAAO,IAAIk/G,SAAUX,EAA3B,WACE,kBAAKl/I,UAAU,aAAf,WACE,mBAAO8/I,QAAQ,WAAf,8CACA,mBAAO9yN,KAAK,OAAO2+E,YAAY,kCAAgBv7E,KAAK,WAAW3F,MAAOg0N,EAAev+I,SAAU,SAAC1oE,GAC9FknN,EAAiBlnN,EAAE5C,OAAOnK,OAC1Bs0N,EAAS,KACV,QAEH,kBAAK/+I,UAAU,aAAf,WACE,mBAAO8/I,QAAQ,WAAf,iCACA,mBAAO9yN,KAAK,WAAW2+E,YAAY,qBAAWv7E,KAAK,WAAW3F,MAAOk0N,EAAez+I,SAAU,SAAC1oE,GAC7FonN,EAAiBpnN,EAAE5C,OAAOnK,OAC1Bs0N,EAAS,KACV,OAED5sN,IACA,eAAG6tE,UAAU,cAAb,gBAA4B7tE,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAOwtN,qBAEnCxtN,IACA,eAAG6tE,UAAU,cAAb,4EAEF,2BAAG,mBAAOhzE,KAAK,WAAWoD,KAAK,aAAaurF,eAAgBkjI,EAAY3+I,SAAU,kBAAM4+I,GAAeD,EAArB,EAAkCjrN,GAAG,eAAvH,KAAuI,mBAAOksN,QAAQ,aAAf,8BACvI,UAAC,GAAD,CACE9+I,IAAKw9I,EACL11G,KAAK,YACL6yG,QAAStzN,EAAO67J,kBAElB,yBAAG,oBAAQlkF,WAAYg/I,EAAY,cAAgB,IAAM,aAAc9tI,SAAU8tI,EAAWhyN,KAAK,SAA9F,yCACH,yBAAG,eAAGkN,KAAI,UAAK7R,EAAOy7J,OAAZ,qCAAP,iDAGP,kBAAK9jF,UAAU,mBAAf,WACE,qBACA,kBAAKA,UAAU,UAAf,WACE,iBAAKurC,IAAKw0G,GAAct8D,IAAI,MAC5B,eAAGzjF,UAAU,QAAb,sFAQX,EC9HD,OANA,WACE,OACE,4CAEH,ECiCD,OAlCA,WACE,IAAM33E,EAAS0O,KAEf,OACE,iBAAKipE,UAAU,aAAf,UACE,kBAAKA,UAAU,kBAAf,WACE,kBAAKA,UAAU,aAAf,WACE,iBAAKA,UAAU,YAAf,UACE,iBAAKurC,IAAKq0G,GAAUn8D,IAAI,gBAE1B,gBAAIzjF,UAAU,cAAd,wGACA,iBAAKA,UAAU,eAAf,UACE,kBAAKA,UAAU,eAAf,WACE,iBAAKA,UAAU,kCAAkCsG,KAAK,QAAtD,gHACA,gBAAGtG,UAAU,cAAb,WACE,eAAG9lE,KAAM7R,EAAOy7J,OAAQ9jF,UAAU,aAAlC,0CADF,eAC6E,UAACg4D,EAAD,CAAMxtF,GAAG,SAAT,sCAD7E,kDAMN,kBAAKw1B,UAAU,mBAAf,WACE,qBACA,kBAAKA,UAAU,UAAf,WACE,iBAAKurC,IAAKw0G,GAAct8D,IAAI,MAC5B,eAAGzjF,UAAU,QAAb,sFAQX,EChCK6nF,GAAM,2BACNZ,GAAeC,KAEf84D,GAAa,CACjBC,YAAY,WAAD,oBAAE,WAAO9qD,GAAP,+FAAanS,EAAb,+BAAqBiE,IAC1Bt+J,EAAO,IAAIqO,UACZkF,OAAO,SAAU,eACtBvT,EAAKuT,OAAO,eAAgB+qJ,IAAgBjE,GAC5Cr6J,EAAKuT,OAAO,OAAQi5J,GAJT,SAKYhO,GAAAA,KAAiBU,GAAKl/J,GALlC,cAKL0B,EALK,yBAMJA,GANI,2CAAF,mDAAC,GAQZ61N,iBAAiB,WAAD,oBAAE,4GAAOl9D,EAAP,+BAAeiE,GACzB5+J,EAAS0O,KADC,SAEOrJ,KAAAA,IAAA,UAAarF,EAAO07J,UAApB,mCAAwDkD,IAAgBjE,IAF/E,cAEV34J,EAFU,yBAGTA,GAHS,2CAAF,kDAAC,GAKjB81N,uBAAuB,WAAD,oBAAE,WAAOj7E,GAAP,iGAAgB8d,EAAhB,+BAAwBiE,GACxCm5D,EADgB,IAEpBn5D,cAAeA,KAAiBjE,GAC7B9d,IAECv8I,EAAO,IAAIqO,UACZkF,OAAO,SAAU,uBACtBvT,EAAKuT,OAAO,eAAgB+qJ,IAC5Bt+J,EAAKuT,OAAO,UAAW7E,KAAKI,UAAU2oN,IARhB,SASCj5D,GAAAA,KAAiBU,GAAKl/J,GATvB,cAShB0B,EATgB,yBAUfA,GAVe,4CAAF,mDAAC,IAczB,MC7BMg2N,GAAgB,CACpBC,SAAU,GACVC,cAAe,GACfC,gBAAiB,GACjBC,kBAAmB,GACnBC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,YAAa,GACbC,QAAS,GACTC,OAAQ,GACRnxD,MAAO,GACPoxD,QAAS,IAGLC,GAAY,CAChB,CAAE14D,MAAO,yCAA+Bn4J,KAAM,YAC9C,CAAEm4J,MAAO,+CAAgCn4J,KAAM,aAC/C,CAAEm4J,MAAO,4CAAyBn4J,KAAM,UACxC,CAAEm4J,MAAO,+BAAwBn4J,KAAM,MACvC,CAAEm4J,MAAO,iDAAgCn4J,KAAM,cAC/C,CAAEm4J,MAAO,uEAAyCn4J,KAAM,QACxD,CAAEm4J,MAAO,oDAAiCn4J,KAAM,eAChD,CAAEm4J,MAAO,uBAAkBn4J,KAAM,OACjC,CAAEm4J,MAAO,qBAAmBn4J,KAAM,UAClC,CAAEm4J,MAAO,6BAAoBn4J,KAAM,qBACnC,CAAEm4J,MAAO,6BAAoBn4J,KAAM,gBACnC,CAAEm4J,MAAO,wBAAiBn4J,KAAM,cAChC,CAAEm4J,MAAO,oDAA8Bn4J,KAAM,oBAC7C,CAAEm4J,MAAO,+CAA8Bn4J,KAAM,aAC7C,CAAEm4J,MAAO,4BAAkBn4J,KAAM,cACjC,CAAEm4J,MAAO,gCAAsBn4J,KAAM,WACrC,CAAEm4J,MAAO,2BAAoBn4J,KAAM,OACnC,CAAEm4J,MAAO,uBAAqBn4J,KAAM,gBACpC,CAAEm4J,MAAO,mCAAqBn4J,KAAM,eACpC,CAAEm4J,MAAO,mBAAiBn4J,KAAM,cAChC,CAAEm4J,MAAO,wCAAuBn4J,KAAM,OACtC,CAAEm4J,MAAO,gCAAoBn4J,KAAM,MACnC,CAAEm4J,MAAO,4BAAmBn4J,KAAM,OAClC,CAAEm4J,MAAO,2BAAoBn4J,KAAM,OACnC,CAAEm4J,MAAO,wBAAmBn4J,KAAM,OAClC,CAAEm4J,MAAO,iDAA+Bn4J,KAAM,cAC9C,CAAEm4J,MAAO,8CAA4Bn4J,KAAM,OAC3C,CAAEm4J,MAAO,gDAA8Bn4J,KAAM,aAC7C,CAAEm4J,MAAO,wBAAsBn4J,KAAM,UACrC,CAAEm4J,MAAO,yBAAkBn4J,KAAM,aACjC,CAAEm4J,MAAO,mDAAgCn4J,KAAM,UAC/C,CAAEm4J,MAAO,gDAA+Bn4J,KAAM,YAC9C,CAAEm4J,MAAO,6BAAoBn4J,KAAM,sBACnC,CAAEm4J,MAAO,wCAA0Bn4J,KAAM,YACzC,CAAEm4J,MAAO,mEAA4Cn4J,KAAM,UAC3D,CAAEm4J,MAAO,mDAAiCn4J,KAAM,QAChD,CAAEm4J,MAAO,sCAA0Bn4J,KAAM,OACzC,CAAEm4J,MAAO,mBAAoBn4J,KAAM,OACnC,CAAEm4J,MAAO,iCAA0Bn4J,KAAM,OACzC,CAAEm4J,MAAO,yCAA0Bn4J,KAAM,aACzC,CAAEm4J,MAAO,gCAA4Bn4J,KAAM,SAC3C,CAAEm4J,MAAO,uCAAmCn4J,KAAM,SAClD,CAAEm4J,MAAO,iCAA6Bn4J,KAAM,QAC5C,CAAEm4J,MAAO,oCAAgCn4J,KAAM,SAC/C,CAAEm4J,MAAO,+CAA2Cn4J,KAAM,SAC1D,CAAEm4J,MAAO,wCAAoCn4J,KAAM,QACnD,CAAEm4J,MAAO,iCAA6Bn4J,KAAM,QAC5C,CAAEm4J,MAAO,kCAA8Bn4J,KAAM,UAwT/C,OArTA,WACE,IAAQ4yJ,EAAUO,GAAAA,eAAVP,MACR,KAA+Cr/C,EAAAA,EAAAA,WAAS,GAAxD,GAAOu9G,EAAP,KAAwBC,EAAxB,KACA,KAA6Cx9G,EAAAA,EAAAA,WAAS,GAAtD,GAAOy9G,EAAP,KAAuBC,EAAvB,KACA,KAA8B19G,EAAAA,EAAAA,UAAS08G,IAAvC,GAAOn7E,EAAP,KAAgBo8E,EAAhB,KACA,KAAwC39G,EAAAA,EAAAA,WAAS,GAAjD,GAAO49G,EAAP,KAAqBC,EAArB,KACA,KAA4B79G,EAAAA,EAAAA,UAAS,MAArC,GAAOp5G,EAAP,KAAek3N,EAAf,KACMC,GAAeh+G,EAAAA,EAAAA,UACfi+G,GAAcj+G,EAAAA,EAAAA,WAEpBN,EAAAA,EAAAA,YAAU,WAAM,oCACd,uGACyB48G,GAAAA,iBAA4Bh9D,GADrD,iBACUr6J,EADV,EACUA,MAEN24N,EAAW,CACThB,SAAU33N,EAAKi5N,UACfrB,cAAe53N,EAAKk5N,gBACpBrB,gBAAiB73N,EAAKm5N,kBACtBrB,kBAAmB93N,EAAKo5N,oBACxBrB,UAAW/3N,EAAKq5N,WAChBrB,SAAUh4N,EAAKs5N,WACfrB,WAAYj4N,EAAKu5N,YACjBrB,YAAal4N,EAAKw5N,aAClBrB,QAASn4N,EAAKy5N,SACdrB,OAAQp4N,EAAK05N,QACbzyD,MAAOjnK,EAAKinK,MACZoxD,QAASr4N,EAAK25N,kBAGhB3P,MAAM,uCAlBV,4CADc,uBAAC,WAAD,wBAuBd4P,EACD,GAAE,IAEH,IAAMC,EAAY,+BAAG,WAAOhrN,GAAP,qFACb29J,EAAO39J,EAAE5C,OAAOgjK,MAAM,GAEV,gBADZ6qD,EAAYjrN,EAAE5C,OAAO4wM,aAAa,OAEtC2b,GAAoB,GAEpBE,GAAmB,GANF,kBAUMrB,GAAAA,YAAuB7qD,EAAMnS,GAVnC,iBAUTr6J,EAVS,EAUTA,MACC4B,OACW,eAAdk4N,GACFnB,EAAW,SACNp8E,GADK,IAERw7E,UAAW/3N,EAAKA,KAAKsB,OAEvBk3N,GAAoB,KAEpBG,EAAW,SACNp8E,GADK,IAERy7E,SAAUh4N,EAAKA,KAAKsB,OAEtBo3N,GAAmB,KAGrB1O,MAAM,kCAA4BhqN,EAAKA,MACvC6O,EAAE5C,OAAOnK,MAAQ,KACjB02N,GAAoB,GACpBE,GAAmB,IA7BJ,wDAgCjBF,GAAoB,GACpBE,GAAmB,GACnB,KAAEzsN,OAAOnK,MAAQ,KACX,IAAI+H,MAAJ,MAnCW,0DAAH,sDAuCZkwN,EAAY,+BAAG,WAAOvxH,GAAP,iFACnBA,EAAMhuB,kBACUw/I,EAAaxxH,GAFV,wBAIjBqwH,GAAgB,GACV9nN,EAAU,CACd0oN,SAAUl9E,EAAQ47E,QAClBuB,QAASn9E,EAAQ67E,OACjBiB,WAAY98E,EAAQw7E,UACpBuB,WAAY/8E,EAAQy7E,SACpBuB,YAAah9E,EAAQ07E,WACrBuB,aAAcj9E,EAAQ27E,YACtBe,UAAW18E,EAAQo7E,SACnBuB,gBAAiB38E,EAAQq7E,cACzBuB,kBAAmB58E,EAAQs7E,gBAC3BuB,oBAAqB78E,EAAQu7E,kBAC7B7wD,MAAO1qB,EAAQ0qB,MACf0yD,gBAAiBp9E,EAAQ87E,SAjBV,SAmBMhB,GAAAA,uBAAkCtmN,EAASspJ,GAnBjD,gBAoBjB,QADQr6J,EAnBS,EAmBTA,YACR,IAAIA,GAAJ,UAAIA,EAAMu8I,eAAV,OAAI,EAAe+hB,cACjBu6D,GAAgB,GAChBC,EAAU,CACRlvN,KAAM,IACN64C,IAAK,wCAEP//C,YAAW,WACTsP,OAAOC,SAASV,KAAO,2BACxB,GAAE,OAEHunN,EAAU,CACRlvN,KAAM,IACN64C,IAAK,qFAEPo2K,GAAgB,IAlCD,4CAAH,sDAuCZ/rI,EAAe,SAAC0b,GACpB,MAAwBA,EAAMv8F,OAAtBxE,EAAR,EAAQA,KAAM3F,EAAd,EAAcA,MACd62N,EAAW,SACNp8E,GADK,SAEP90I,EAAO3F,KAEVg3N,EAAU,MACVtwH,EAAMv8F,OAAO6wE,UAAUjsE,OAAO,aAC/B,EAEKmpN,EAAe,SAACnrN,GACpB,OAAKorN,EAAe19E,EAAQ47E,SAIhB8B,EAAe19E,EAAQ67E,QAIvB8B,EAAoB39E,EAAQ0qB,UAI5B1qB,EAAQw7E,YAAcx7E,EAAQy7E,YACxChO,MAAM,gDACC,IALPn7M,EAAE5C,OAAOg7J,MAAMnqF,UAAUxtB,IAAI,cAC7BzgD,EAAE5C,OAAOg7J,MAAMjqF,SACR,IANPnuE,EAAE5C,OAAOmsN,OAAOt7I,UAAUxtB,IAAI,cAC9BzgD,EAAE5C,OAAOmsN,OAAOp7I,SACT,IANPnuE,EAAE5C,OAAOksN,QAAQr7I,UAAUxtB,IAAI,cAC/BzgD,EAAE5C,OAAOksN,QAAQn7I,SACV,EAcV,EAEKk9I,EAAsB,SAACjzD,GAE3B,MADY,sBACDn2J,KAAKwF,OAAO2wJ,GAAOpjK,cAC/B,EAEKo2N,EAAiB,SAACjwN,GAEtB,MADY,QACD8G,KAAK9G,EACjB,EAEKmwN,EAAmB,SAACtrN,GACD,KAAnBA,EAAE5C,OAAOnK,QACX+M,EAAE5C,OAAO6wE,UAAUxtB,IAAI,cACvBzgD,EAAE5C,OAAO+wE,QAEZ,EAED,OACE,kBAAK3F,UAAU,oCAAf,WACE,yDACA,eAAGA,UAAU,kBAAb,oJACA,mBAAMpsE,GAAG,iBAAiBmvN,QAAQ,sBAAsBlD,SAAU6C,EAAlE,WACE,kBAAK1iJ,UAAU,MAAf,WACE,iBAAKA,UAAU,WAAf,UACE,gBAAIA,UAAU,cAAd,yDAEF,iBAAKA,UAAU,WAAf,UACE,kBAAKA,UAAU,oBAAf,WACE,kBAAKA,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,UAAU9/I,UAAU,aAAnC,qCACA,qBAAQA,UAAU,eAAev1E,MAAOy6I,EAAQo7E,SAAUlwN,KAAK,WAAW8vE,SAAUuV,EAActpD,UAAQ,EAA1G,WACE,oBAAQ1hC,MAAM,GAAd,sCACCw2N,GAAU10M,KAAI,SAACy2M,EAAMlzN,GAAP,OAAiB,oBAAoBrF,MAAK,UAAKu4N,EAAKz6D,MAAV,cAAqBy6D,EAAK5yN,MAAnD,mBAA+D4yN,EAAKz6D,MAApE,cAA+Ey6D,EAAK5yN,OAAvEN,EAA9B,WAGnB,kBAAKkwE,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,UAAU9/I,UAAU,aAAnC,wCACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQq7E,cAAenwN,KAAK,gBAAgB8vE,SAAUuV,EAAc7B,OAAQkvI,EAAkB32L,UAAQ,KACzJ,iBAAK82L,MAAM,mBAAX,kDAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,oBAAoB9/I,UAAU,aAA7C,gDACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQs7E,gBAAiBpwN,KAAK,kBAAkB8vE,SAAUuV,EAAc7B,OAAQkvI,EAAkB32L,UAAQ,KAC7J,iBAAK82L,MAAM,mBAAX,kDAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,cAAc9/I,UAAU,aAAvC,2CACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQu7E,kBAAmBrwN,KAAK,oBAAoB8vE,SAAUuV,EAAc7B,OAAQkvI,EAAkB32L,UAAQ,KACjK,iBAAK82L,MAAM,mBAAX,0DAKR,oBACA,kBAAKjjJ,UAAU,WAAf,WACE,iBAAKA,UAAU,WAAf,UACE,gBAAIA,UAAU,cAAd,2CAEF,iBAAKA,UAAU,WAAf,UACE,kBAAKA,UAAU,oBAAf,WACE,kBAAKA,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,MAAM9/I,UAAU,aAA/B,sCACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQ47E,QAAS1wN,KAAK,UAAU8vE,SAAUuV,EAAc7B,OAAQ,SAACp8E,GAC7GorN,EAAeprN,EAAE5C,OAAOnK,SAC3B+M,EAAE5C,OAAO6wE,UAAUxtB,IAAI,cACvBzgD,EAAE5C,OAAO+wE,QAEZ,EAAEx5C,UAAQ,KACX,iBAAK82L,MAAM,mBAAX,oEAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,KAAK9/I,UAAU,aAA9B,4BACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQ67E,OAAQ3wN,KAAK,SAAS8vE,SAAUuV,EAAc7B,OAAQ,SAACp8E,GAC3GorN,EAAeprN,EAAE5C,OAAOnK,SAC3B+M,EAAE5C,OAAO6wE,UAAUxtB,IAAI,cACvBzgD,EAAE5C,OAAO+wE,QAEZ,EAAEx5C,UAAQ,KACX,iBAAK82L,MAAM,mBAAX,0DAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,OAAO9/I,UAAU,aAAhC,yDACA,kBAAKA,UAAU,cAAf,WACE,mBAAOhzE,KAAK,OAAOk2N,OAAO,UAAUliJ,IAAK0gJ,EAAc9tN,GAAG,aAAassE,SAAUsiJ,KACjF,mBAAOx1N,KAAK,OAAOk2N,OAAO,UAAUliJ,IAAK2gJ,EAAa/tN,GAAG,YAAYssE,SAAUsiJ,KAC/E,iBAAKxiJ,UAAU,SAAf,UACE,kBAAKA,UAAU,MAAf,WACE,kBAAKA,UAAU,QAAf,WACE,eAAGA,UAAU,kCAAb,uCACEklE,EAAQw7E,YACR,oBAAOZ,QAAQ,aAAa9/I,UAAU,wBAAtC,WACE,kBAAMA,UAAU,cAAcwB,MAAO,CAAEie,QAASyhI,EAAkB,MAAQ,GAA1E,UAA+E,mBAAMlhJ,UAAU,eAAhB,WAA+B,iBAAKA,UAAU,cAAcklF,MAAM,6BAA6BV,QAAQ,YAAxE,UAAoF,kBAAM1jJ,EAAE,6dAA3H,wBAC9EogN,IAAmB,UAAC,GAAD,CAASpwH,MAAM,eAGtCo0C,EAAQw7E,YACP,kBAAK1gJ,UAAU,aAAf,WACE,kBAAMA,UAAU,cAAhB,UAA8B,iBAAKurC,IAAK25B,EAAQw7E,UAAWj9D,IAAI,GAAGzjF,UAAU,gBAC5E,kBAAMA,UAAU,eAAeC,QAAS,WACtCqhJ,EAAW,SAAKp8E,GAAN,IAAew7E,UAAW,MACpCgB,EAAa9gJ,QAAQn2E,MAAQ,EAC9B,EAHD,yBAON,kBAAKu1E,UAAU,QAAf,WACE,eAAGA,UAAU,kCAAb,2BACEklE,EAAQy7E,WACR,oBAAOb,QAAQ,YAAY9/I,UAAU,wBAArC,WACE,kBAAMA,UAAU,cAAcwB,MAAO,CAAEie,QAAS2hI,EAAiB,MAAQ,IAAzE,UAA+E,mBAAMphJ,UAAU,eAAhB,WAA+B,iBAAKA,UAAU,cAAcklF,MAAM,6BAA6BV,QAAQ,YAAxE,UAAoF,kBAAM1jJ,EAAE,6dAA3H,wBAC9EsgN,IAAkB,UAAC,GAAD,CAAStwH,MAAM,eAGrCo0C,EAAQy7E,WACP,kBAAK3gJ,UAAU,aAAf,WACE,kBAAMA,UAAU,cAAhB,UAA8B,iBAAKurC,IAAK25B,EAAQy7E,SAAUl9D,IAAI,GAAGzjF,UAAU,gBAC3E,kBAAMA,UAAU,eAAeC,QAAS,SAACzoE,GACvC8pN,EAAW,SAAKp8E,GAAN,IAAey7E,SAAU,MACnCgB,EAAY/gJ,QAAQn2E,MAAQ,EAC7B,EAHD,iCAUZ,mBAAOuC,KAAK,SAASoD,KAAK,YAAY3F,MAAOy6I,EAAQw7E,UAAWxgJ,SAAUuV,KAC1E,mBAAOzoF,KAAK,SAASoD,KAAK,WAAW3F,MAAOy6I,EAAQy7E,SAAUzgJ,SAAUuV,QAE1E,kBAAKzV,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,OAAO9/I,UAAU,aAAhC,6CACA,mBAAOhzE,KAAK,OAAOoD,KAAK,aAAa3F,MAAOy6I,EAAQ07E,WAAY5gJ,UAAU,sBAAsBE,SAAUuV,EAActpD,UAAQ,QAElI,kBAAK6zC,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,QAAQ9/I,UAAU,aAAjC,gCACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQ27E,YAAazwN,KAAK,cAAc8vE,SAAUuV,EAAc7B,OAAQkvI,EAAkB32L,UAAQ,KACrJ,iBAAK82L,MAAM,mBAAX,kDAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,QAAQ9/I,UAAU,aAAjC,oBACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQ0qB,MAAOx/J,KAAK,QAAQ8vE,SAAUuV,EAAc7B,OAAQ,SAACp8E,GACzGqrN,EAAoBrrN,EAAE5C,OAAOnK,SAChC+M,EAAE5C,OAAO6wE,UAAUxtB,IAAI,cACvBzgD,EAAE5C,OAAO+wE,QAEZ,EAAEx5C,UAAQ,KACX,iBAAK82L,MAAM,mBAAX,8EAEF,kBAAKjjJ,UAAU,OAAf,WACE,mBAAO8/I,QAAQ,UAAU9/I,UAAU,aAAnC,qCACA,mBAAOhzE,KAAK,OAAOgzE,UAAU,eAAev1E,MAAOy6I,EAAQ87E,QAAS5wN,KAAK,UAAU8vE,SAAUuV,EAAc7B,OAAQkvI,EAAkB32L,UAAQ,KAC7I,iBAAK82L,MAAM,mBAAX,0DAKR,kBAAKjjJ,UAAU,cAAf,WACE,oBAAQhzE,KAAK,SAASgzE,UAAU,6CAA6CkR,SAAUqwI,EAAvF,gCACCh3N,IAAU,iBAAKy1E,UAAW,SAA2B,MAAhBz1E,EAAOgI,KAAe,eAAiB,eAAlE,SAAmFhI,EAAO6gD,cAK9G,ECxWD,GApBuB,SAAC28J,GACtB,IAAKA,EACH,MAAO,GAGT,QAAiBA,EAAI/xM,WAAWiF,MAAM,KAAtC,GAAKkoN,EAAL,KAAUpzD,EAAV,KAYA,OAVIA,IACFA,EAAMA,EAAIh7J,MAAM,EAAG,IAGrBouN,EAAMA,EAAIjrN,QAAQ,wBAAyB,KAEvC63J,IACFozD,GAAO,IAAMpzD,GAGRozD,CACR,ECkED,OAhFA,YAAqD,IAA9BC,EAA6B,EAA7BA,cAAeC,EAAc,EAAdA,WACpC,KAAkC1/G,EAAAA,EAAAA,UAAS,CAAC,GAA5C,GAAO2/G,EAAP,KAAkBC,EAAlB,KACA,KAA4C5/G,EAAAA,EAAAA,UAAS,CACnD6/G,UAAW,EACXC,UAAW,EACXvP,iBAAkB,EAClBwP,QAAS,IAJX,GAAOC,EAAP,KAAuBC,EAAvB,KAOMlP,GAAqBxxG,EAAAA,EAAAA,cAAY,SAACyxG,GACtC,MACO,WADCA,EAEG,GAEA,EAEZ,GAAE,IAuCH,OArCAvxG,EAAAA,EAAAA,YAAW,WACT,IAAMm/G,EAAY,+BAAG,gGACbt7D,EAAetgK,OAAO2O,KAAK8tN,GAAe,GAD7B,SAEIpD,GAAAA,kBAA6B/4D,GAFjC,gBAEXt+J,EAFW,EAEXA,KACR46N,EAAa56N,GAHM,2CAAH,qDAKlB45N,GACD,GAAE,CAACa,KAEJhgH,EAAAA,EAAAA,YAAU,WACR,IAAI4wG,EAAgB,EAChB6P,EAAO,EACPC,EAAO,EAEX,GAAIV,EAAe,CAAC,IAAD,IACXW,EAAap9N,OAAO2+B,OAAO89L,GAAe,GAD/B,KAEAW,GAFA,IAEjB,2BAA6B,CAAC,IAArBz7J,EAAoB,SACD,IAAtBA,EAAKktJ,aACPqO,IAEAC,IAGsB,eAApBx7J,EAAKmtJ,aACPzB,GAAiB1rJ,EAAKotJ,YAEzB,CAZgB,+BAajB,IAAML,EAAUX,EAAkB,UAACqP,EAAW,UAAZ,aAAC,EAAezO,eAClDsO,EAAkB,CAChBJ,UAAWK,EACXJ,UAAWK,EACX9P,cAAAA,EACA0P,QAASrO,EAAUrB,EAAgB,KAEtC,CACF,GAAE,CAACoP,EAAe1O,KAGjB,kCACkB,WAAf2O,IACC,4BACE,8CAAYC,QAAZ,IAAYA,OAAZ,EAAYA,EAAWr8D,iBACvB,gCAAKq8D,QAAL,IAAKA,OAAL,EAAKA,EAAWU,aAChB,yBAAKL,EAAeH,aACpB,yBAAKS,GAAeN,EAAe3P,gBAAkB,KACrD,yBAAKiQ,GAAeN,EAAeD,UAAY,OAGnC,SAAfL,IACC,4BACE,8CAAYC,QAAZ,IAAYA,OAAZ,EAAYA,EAAWr8D,iBACvB,gCAAKq8D,QAAL,IAAKA,OAAL,EAAKA,EAAWU,aAChB,yBAAKC,GAAeN,EAAe3P,gBAAkB,KACrD,yBAAK2P,EAAeH,aACpB,yBAAKG,EAAeF,aACpB,yBAAKQ,GAAeN,EAAeD,UAAY,SAKxD,EC3BD,OApDA,YAA8C,IAApBQ,EAAmB,EAAnBA,gBACxB,KAAsBvgH,EAAAA,EAAAA,UAAS,UAA/B,GAAOwsF,EAAP,KAAYg0B,EAAZ,KAEMC,EAAY,SAACh0N,GACjB+zN,EAAO/zN,EACR,EAED,OACE,sBAAS4vE,UAAU,QAAnB,WACE,iBAAIA,UAAU,OAAd,WACE,oBAAQA,UAAmB,WAARmwH,EAAmB,SAAW,GAAIlwH,QAAS,kBAAMmkJ,EAAU,SAAhB,EAA9D,sCACA,oBAAQpkJ,UAAmB,SAARmwH,EAAiB,SAAW,GAAIlwH,QAAS,kBAAMmkJ,EAAU,OAAhB,EAA5D,oCAEF,kBAAKpkJ,UAAU,4BAAf,UACW,WAARmwH,IACC,+BACE,6BACE,4BACE,kCACA,sDACA,4CACA,mEACA,0DAGJ,mCACG+zB,QADH,IACGA,OADH,EACGA,EAAiB33M,KAAI,SAAC+7C,EAAM6mG,GAAP,OAAe,UAAC,GAAD,CAAuBi0D,cAAe96J,EAAM+6J,WAAYlzB,GAAtChhC,EAAjC,SAInB,SAARghC,IACC,+BACE,6BACE,4BACE,kCACA,sDACA,mEACA,mCACA,mCACA,4EAGJ,mCACG+zB,QADH,IACGA,OADH,EACGA,EAAiB33M,KAAI,SAAC+7C,EAAM6mG,GAAP,OAAe,UAAC,GAAD,CAAuBi0D,cAAe96J,EAAM+6J,WAAYlzB,GAAtChhC,EAAjC,cAOnC,EC2MD,OAnPA,WACE,MAA8B5L,GAAAA,eAAtBR,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,MACdV,EAAcjrJ,KAAKC,MAAMwkJ,GAAeU,KAC9C,KAAwC74C,EAAAA,EAAAA,UAAS,CAAC,GAAlD,GAAO0gH,EAAP,KAAqBC,EAArB,KACA,KAAwD3gH,EAAAA,EAAAA,UAAS,CAAC,GAAlE,GAAO4gH,EAAP,KAA6BC,EAA7B,KACA,KAAkC7gH,EAAAA,EAAAA,UAAS,CACzCgwG,eAAgB,EAChBK,cAAe,EACfE,iBAAkB,EAClB2P,KAAM,EACNC,KAAM,EACNW,aAAc,IANhB,GAAOC,EAAP,KAAkBC,EAAlB,KAQA,KAAoChhH,EAAAA,EAAAA,UAAS,CAC3C4kD,MAAO,mBACPC,KAAM,MACNx3D,MAAO,CAAC,IAHV,GAAO3yB,EAAP,KAAmBo2I,EAAnB,KAKA,KAAgC9wG,EAAAA,EAAAA,WAAS,GAAzC,GAAOkvG,EAAP,KAAiBC,EAAjB,KACA,KAA0CnvG,EAAAA,EAAAA,UAAS,IAAnD,GAAOihH,EAAP,KAAsBC,EAAtB,KACM/iE,EAAcoF,KAEdwtD,GAAqBxxG,EAAAA,EAAAA,cAAY,SAACwgH,GACtC,OAAIA,GAAW,IACN,EACEA,EAAU,KAAYA,GAAW,IACnC,EACEA,EAAU,KAAYA,GAAW,IACnC,EAEA,CAEV,GAAE,IAoHH,OAhGAtgH,EAAAA,EAAAA,YAAU,WAAM,oCACd,gGACE2/C,GAAW,GADb,SAEkC+E,GAAAA,oBAAiC9E,GAFnE,OAEQ4xD,EAFR,OAGE0P,EAAe,OAAC1P,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBksN,WACzC2P,EAAuB,OAAC5P,QAAD,IAACA,GAAD,UAACA,EAAmBjsN,YAApB,aAAC,EAAyBksN,WACjD9xD,GAAW,GALb,4CADc,uBAAC,WAAD,wBASdgF,EACD,GAAE,CAAChF,KAqCJ3/C,EAAAA,EAAAA,YAAU,WACR,IAAI0wG,EAAc,EACdE,EAAgB,EAChB6P,EAAO,EAEX,GAAIU,GAAwBA,EAAqBxP,UAAW,CAAC,IAAD,OACxCwP,EAAqBxP,WADmB,IAC1D,2BAAkD,CAAC,IAA1CtqN,EAAyC,SACrB,IAAvBA,EAAM+qN,cACRqO,KAEyB,IAAvBp5N,EAAM+qN,cAA8C,eAArB/qN,EAAMgrN,YACvC3B,IAGuB,eAArBrpN,EAAMgrN,aACRzB,GAAiBvpN,EAAMirN,YAE1B,CAZyD,+BAa1D,IAAML,EAAUX,EAAmBV,GAEnC2Q,GAAa,SAAAhrM,GAAK,wBACbA,GADa,IAEhBg6L,eAAiBzsN,KAAK+b,MAAO6wM,GAAW,OAAGyQ,QAAH,IAAGA,GAAH,UAAGA,EAAsBxP,iBAAzB,aAAG,EAAiCzlN,QAAU,KAAO,GAAK,IAAO,EACzG0kN,cAAAA,EACAE,iBAAkBmB,EAAUrB,EAAgB,IAC5C6P,KAAAA,EACAC,MAA0B,OAApBS,QAAoB,IAApBA,GAAA,UAAAA,EAAsBxP,iBAAtB,eAAiCzlN,QAASu0N,GANhC,GAQnB,CAEF,GAAE,CAACU,EAAsB7P,KAE1BtxG,EAAAA,EAAAA,YAAU,WAAO,IAAD,EACd,UAAImhH,QAAJ,IAAIA,GAAJ,UAAIA,EAAsBxP,iBAA1B,OAAI,EAAiCzlN,OAAQ,CAC3C,IAAMw1N,EAnGM,SAACn9L,GACf,IAAM1qB,EAAM,OAAG0qB,QAAH,IAAGA,OAAH,EAAGA,EAAO6wF,QAAO,SAACC,EAAKnwD,GACjC,GAAIA,EAAK2+F,aAAajxJ,aAAe8rJ,EACnC,OAAOrpC,EAET,IAAQwuC,EAAiB3+F,EAAjB2+F,aACF89D,EAAmBtsG,EAAI13E,MAAK,SAAA9wC,GAAC,OAAIA,EAAEg3J,EAAN,IACnC,GAAI89D,EACFA,EAAiB99D,GAAcp3J,KAAKy4D,OAC/B,CACL,IAAM08J,EAAW,MAAM/9D,EAAe,CAAC3+F,IACvCmwD,EAAI5oH,KAAKm1N,EACV,CACD,OAAOvsG,CACR,GAAE,IACH,OAAOx7G,CACR,CAmFqBgoN,CAAO,OAACV,QAAD,IAACA,OAAD,EAACA,EAAsBxP,WAChD8P,EAAiBC,GACjBH,GAAa,SAAAhrM,GAAK,gBACbA,GADa,IAEhB8qM,aAAY,OAAEK,QAAF,IAAEA,OAAF,EAAEA,EAAWx1N,QAFT,GAInB,CACF,GAAE,CAACi1N,KAEJnhH,EAAAA,EAAAA,YAAW,WACO,OAAZihH,QAAY,IAAZA,GAAAA,EAActP,WAAd,OAA2BsP,QAA3B,IAA2BA,GAAAA,EAActP,UAAUzlN,QACrDwjN,GAAY,EAEf,GAAE,CAACuR,EAAcvR,KAGhB,kBAAK9yI,UAAU,4BAAf,WACE,iBAAKA,UAAU,uDAAf,UACE,kBAAKA,UAAU,4BAAf,WACE,UAAC,GAAD,CACE0oF,aA7EoB,SAACqtD,GAC7B,IAAImP,EAAoB,GAGxB,GAFAzQ,EAAcsB,GAES,QAAnBA,EAAUvtD,KAAgB,CAC5B,IAAML,EAAY,CAChB1kF,UAAWsyI,EAAU/kH,MAAMvtB,UAC3BC,QAASqyI,EAAU/kH,MAAMttB,SAG3BwhJ,EAAiB,OAAGb,QAAH,IAAGA,OAAH,EAAGA,EAActP,UAAUn2M,QAAO,SAAAy2J,GACjD,OAvBkB,SAAClN,EAAW0tD,GAClC,IAAIC,GAAa,EACX/xL,EAAO0kI,KAAOotD,GAAWtqJ,OAO/B,OANI48F,EAAU1kF,YACZqyI,EAAaA,GAAe3tD,EAAU1kF,WAAa1/C,GAEjDokI,EAAUzkF,UACZoyI,EAAaA,GAAe3tD,EAAUzkF,SAAW3/C,GAE5C+xL,CACR,CAaYF,CAAgBztD,EAAWkN,EAAItxI,KACvC,IAEDygM,GAAwB,SAAA7qM,GAAK,gBACxBA,GADwB,IAE3Bo7L,UAAWmQ,GAFgB,GAI9B,MACCV,EAAwBH,EAE3B,EAyDStiJ,UAAW8wI,KAEb,eAAG7yI,UAAU,SAAb,SAAuB3B,EAAWkqF,cAGtC,oBACA,iBAAIvoF,UAAU,kBAAd,0BAA2CsiF,EAAYqB,aAAvD,OAECkvD,IACC,mCACE,sBAAS7yI,UAAU,eAAnB,WACE,gBAAIA,UAAU,sBAAd,6BACA,iBAAKA,UAAU,qBAAf,UACE,kBAAKA,UAAU,MAAf,WACE,iBAAKA,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,kCACNmb,MAAO+yH,GAAeS,EAAU1Q,gBAAkB,GAAK,UACvD7yH,KAAK,IACL0oE,QAAQ,0HAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACT5zE,MAAM,kCACNmb,MAAO+yH,GAAeS,EAAUxQ,mBAAqB,GAAK,UAC1D/yH,KAAK,IACL0oE,QAAQ,2HAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,OACNmb,KAAMwzH,EAAUb,KAChB1iI,KAAK,IACL0oE,QAAQ,8BAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,QACT5zE,MAAM,OACNmb,KAAMwzH,EAAUZ,KAChB3iI,KAAK,IACL0oE,QAAQ,8BAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,OACTC,UAAU,cACVE,SAAS,UACT/zE,MAAM,2BACNmb,KAAMwzH,EAAUD,aAAe,EAAIC,EAAUD,aAAe,EAC5DtjI,KAAK,GACL0oE,QAAQ,gFAIZ,iBAAK7pF,UAAU,WAAf,UACE,UAAC,GAAD,CACE2pF,SAAS,UACT5zE,MAAM,4CACNmb,KAAMwzH,EAAU/Q,eAAiB,IACjCxyH,KAAK,IACL0oE,QAAQ,yLAOlB,UAAC,GAAD,CACEq6D,gBAAiBU,QAIrB/R,IAAY,eAAG7yI,UAAU,aAAb,iEAGnB,EC7MD,OAhCA,WACE,IAAMmlJ,EAAarpE,GAAeO,IAC5BzhJ,EAAW66H,IACXW,EAAWV,IACjB,KAAkC/xB,EAAAA,EAAAA,WAAS,GAA3C,GAAOq7G,EAAP,KAAkBC,EAAlB,KASA,OAPA77G,EAAAA,EAAAA,YAAU,WACJ47G,IACFC,GAAa,GACb7oF,EAASx7H,EAASH,UAErB,GAAE,CAAC27H,EAAU4oF,EAAWpkN,KAGvB,WAACs8H,EAAD,YACE,WAACX,EAAD,CAAO19H,KAAK,IAAI88D,SAAS,UAAC,GAAD,IAAzB,WACE,UAAC4gE,EAAD,CAAOzmI,OAAK,EAAC6lE,SAAS,UAAC,GAAD,OACtB,UAAC4gE,EAAD,CAAO19H,KAAK,UAAU88D,SAAS,UAAC,GAAD,OAC/B,UAAC4gE,EAAD,CAAO19H,KAAK,QAAQ88D,SAAS,UAAC,GAAD,OAC7B,UAAC4gE,EAAD,CAAO19H,KAAK,aAAa88D,SAAS,UAAC,GAAD,OAClC,UAAC4gE,EAAD,CAAO19H,KAAK,WAAW88D,SAAS,UAAC,GAAD,OAChC,UAAC4gE,EAAD,CAAO19H,KAAK,UAAU88D,SAAS,UAAC,GAAD,OAC/B,UAAC4gE,EAAD,CAAO19H,KAAK,aAAa88D,SAAS,UAAC,GAAD,OAClC,UAAC4gE,EAAD,CAAO19H,KAAK,WAAW88D,SAAS,UAAC,GAAD,OAChC,UAAC4gE,EAAD,CAAO19H,KAAK,IAAI88D,SAAS,UAAC,GAAD,UAE3B,UAAC4gE,EAAD,CAAO19H,KAAK,SAAS88D,QAAUwvJ,GAAc,UAAChvF,EAAD,CAAU3rF,GAAG,OAAQ,UAAC,GAAD,OAClE,UAAC+rF,EAAD,CAAO19H,KAAK,WAAW88D,QAAUwvJ,GAAc,UAAChvF,EAAD,CAAU3rF,GAAG,OAAQ,UAAC,GAAD,QAGzE,ECnCD,OARA,WACE,OACE,UAAC,YAAD,WACE,UAAC,GAAD,KAGL,GlKJD,YACA92C,EAAAA,UAAAA,EAAAA,WAAAA,CAAAA,EACAA,EAAAA,UAAAA,IAAAA,EAAAA,UAAAA,KAAAA,CACAtD,KAAAA,0BACAk6I,SAAAA,CACA,CACAl6I,KAAAA,oBACAkM,QAAAA,KAGAA,QAAAA,I+CiFA,gFACA,4BACA5I,EAAAA,oBAAAA,SAEA,gBAEA,uCACAA,EAAAA,QAAAA,oBAIA,0CACAA,EAAAA,QAAAA,GAAAA,eAAAA,UAGA,4BACAA,EAAAA,qBAAAA,QAEA,0BACAA,EAAAA,mBAAAA,GAGA,eACAA,GADA,IAEA00I,YAAAA,GAAAA,EAAAA,aAAAA,IACA9I,aAAAA,GAAAA,GACA8lF,UAAAA,EAAAA,YAAAA,KAAAA,GAAAA,MAGAC,GAAAA,GAAAA,GAEA,uBACAx2E,IAEA,C/CjHAy2E,CAAAA,EACA,CmKbAC,CAAY,CACVjiF,IAAK,oFACLhE,aAAc,CAAC,IAAIimF,IACnBC,iBAAkB,KAGPh5F,EAAAA,WAAoBpzH,SAASw3E,eAAe,SACpD3pC,QACH,UAAC0wF,EAAD,CAAe5F,SAAS,4BAAxB,UACE,UAAC,GAAD","sources":["../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/classnames/index.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.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/en-US/_lib/localize/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/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/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/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/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/addHours/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarWeeks/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/endOfWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/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/format/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/_lib/assign/index.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/parseISO/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subHours/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subYears/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/moment/moment.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-datepicker/dist/react-datepicker.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-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.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/popperOffsets.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/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/warning/warning.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","../node_modules/@sentry/src/version.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument.ts","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/src/eventbuilder.ts","../node_modules/@sentry/src/exports.ts","../node_modules/src/helpers.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/src/requestdata.ts","../node_modules/@sentry-internal/src/node/integrations/utils/node-utils.ts","../node_modules/@sentry-internal/src/node/integrations/express.ts","../node_modules/@sentry-internal/src/node/integrations/postgres.ts","../node_modules/@sentry-internal/src/node/integrations/mysql.ts","../node_modules/@sentry-internal/src/node/integrations/mongo.ts","../node_modules/@sentry-internal/src/node/integrations/prisma.ts","../node_modules/@sentry-internal/src/node/integrations/graphql.ts","../node_modules/@sentry-internal/src/node/integrations/apollo.ts","../node_modules/@sentry/src/tracing/span.ts","../node_modules/@sentry/src/tracing/transaction.ts","../node_modules/@sentry/src/tracing/idletransaction.ts","../node_modules/@sentry/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/src/tracing/utils.ts","../node_modules/@sentry/src/tracing/errors.ts","../node_modules/@sentry/src/tracing/hubextensions.ts","../node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@sentry-internal/src/browser/metrics/utils.ts","../node_modules/@sentry-internal/src/browser/metrics/index.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getFID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry-internal/src/browser/request.ts","../node_modules/@sentry-internal/src/browser/browsertracing.ts","../node_modules/@sentry-internal/src/browser/router.ts","../node_modules/@sentry-internal/src/browser/backgroundtab.ts","utils/local-storage.js","utils/storage-keys.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","hooks/useSession.js","stores/global-store.js","../node_modules/unstated-next/src/unstated-next.tsx","hooks/useComponentVisible.js","assets/images/elsa-logo-black.svg","components/Header/Header.js","components/MyIcon/icon/Home.svg","utils/env.js","components/MyIcon/icon/Link.svg","components/MyIcon/icon/Card.svg","components/MyIcon/icon/Bill.svg","components/MyIcon/icon/Click.svg","components/MyIcon/icon/Coin.svg","components/MyIcon/icon/Creatives.svg","components/MyIcon/icon/Money.svg","components/MyIcon/icon/Balance.svg","components/MyIcon/icon/User.svg","components/MyIcon/icon/Eye.svg","components/MyIcon/icon/Copy.svg","components/MyIcon/icon/User-star.svg","components/MyIcon/icon/Image.svg","components/MyIcon/icon/Profile.svg","components/MyIcon/icon/Docs.svg","components/MyIcon/MyIcon.js","components/Sidebar/Sidebar.js","hoc/withSession.js","apis/axios-client.js","utils/get_affiliate_id.js","apis/affiliate-valid-api.js","components/Loading/Loading.js","components/Footer/Footer.js","pages/Dashboard/Dashboard.js","apis/dashboard-api.js","assets/images/icon-filter.svg","components/FilterDate/CustomInputDate.js","components/FilterDate/FilterDate.js","assets/images/icon-info.svg","components/Tooltip/Tooltip.js","components/Cards/CardHome.js","assets/images/icon-xls.svg","../node_modules/xlsx/xlsx.mjs","components/ExportToExcel/ExportToExcel.js","pages/Home/Home.js","apis/referrals-api.js","components/FilterStatus/FilterStatus.js","pages/Referral/Referral.js","apis/urls-api.js","pages/Url/Url.js","apis/payouts-api.js","pages/Payout/Payout.js","apis/visits-api.js","pages/Visit/Visit.js","apis/creatives-api.js","components/Cards/CardCreative.js","components/Modals/ModalCreative.js","pages/Creative/Creative.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","../node_modules/react-google-recaptcha/lib/esm/index.js","apis/login-api.js","pages/Login/Login.js","pages/NotFound.js","pages/UserPending.js","apis/profile-api.js","pages/Profile/Profile.js","utils/format-currency.js","components/Leader/RevenueItem.js","pages/Home/TeamDataDetail.js","pages/Home/HomeLeader.js","pages/routes.js","App.js","index.js"],"sourcesContent":["/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // @ts-ignore __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n return __SENTRY_SDK_SOURCE__;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","import { dynamicRequire, isNodeEnv } from './node';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\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};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\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\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\n return result;\n};\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};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\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\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\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @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\n return valuesArray[index];\n };\n}","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}; // 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.\n\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};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // 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\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\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;","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\n if (!matchResult) {\n return null;\n }\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}\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\n return undefined;\n}\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\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 defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","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/**\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\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","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\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\n\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\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\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\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 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 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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\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\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 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\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}","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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\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\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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\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}","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\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\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 */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\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\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours 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 hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\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 */\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 addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes 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 minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\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 */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\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\n var dayOfMonth = date.getDate(); // 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\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\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 toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks 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 weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years 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 years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var daysInYear = 365.2425;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // 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\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\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 * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","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}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\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 */\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 var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\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\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\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/*\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 */\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\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\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\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(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\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); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\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\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\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\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\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\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\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\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\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\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\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\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\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\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\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\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\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\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\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\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\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\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\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\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\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\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\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\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\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\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\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\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\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\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};\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\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\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\n return formatTimezone(offset, dirtyDelimiter);\n}\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}\n\nexport default formatters;","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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\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\n\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\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\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\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\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 getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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\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 */\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}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\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 */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n\n return target;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\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\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n\n _defineProperty(this, \"subPriority\", 0);\n }\n\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n\n var _super = _createSuper(ValueSetter);\n\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n\n _classCallCheck(this, ValueSetter);\n\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n\n return _this;\n }\n\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n\n function DateToSystemTimezoneSetter() {\n var _this2;\n\n _classCallCheck(this, DateToSystemTimezoneSetter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n\n return _this2;\n }\n\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n\n return DateToSystemTimezoneSetter;\n}(Setter);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\n\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n\n return Parser;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n\n var _super = _createSuper(EraParser);\n\n function EraParser() {\n var _this;\n\n _classCallCheck(this, EraParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n\n return _this;\n }\n\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\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 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n\n var _super = _createSuper(YearParser);\n\n function YearParser() {\n var _this;\n\n _classCallCheck(this, YearParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return YearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n\n var _super = _createSuper(LocalWeekYearParser);\n\n function LocalWeekYearParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekYearParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n\n return LocalWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\n\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n\n var _super = _createSuper(ISOWeekYearParser);\n\n function ISOWeekYearParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekYearParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n\n return ISOWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n\n var _super = _createSuper(ExtendedYearParser);\n\n function ExtendedYearParser() {\n var _this;\n\n _classCallCheck(this, ExtendedYearParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ExtendedYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n\n var _super = _createSuper(QuarterParser);\n\n function QuarterParser() {\n var _this;\n\n _classCallCheck(this, QuarterParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return QuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n\n var _super = _createSuper(StandAloneQuarterParser);\n\n function StandAloneQuarterParser() {\n var _this;\n\n _classCallCheck(this, StandAloneQuarterParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneQuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n\n var _super = _createSuper(MonthParser);\n\n function MonthParser() {\n var _this;\n\n _classCallCheck(this, MonthParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n return _this;\n }\n\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return MonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n\n var _super = _createSuper(StandAloneMonthParser);\n\n function StandAloneMonthParser() {\n var _this;\n\n _classCallCheck(this, StandAloneMonthParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneMonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\n\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n\n var _super = _createSuper(LocalWeekParser);\n\n function LocalWeekParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\n\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n\n var _super = _createSuper(ISOWeekParser);\n\n function ISOWeekParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Day of the month\n\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n\n var _super = _createSuper(DateParser);\n\n function DateParser() {\n var _this;\n\n _classCallCheck(this, DateParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DateParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n\n var _super = _createSuper(DayOfYearParser);\n\n function DayOfYearParser() {\n var _this;\n\n _classCallCheck(this, DayOfYearParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayOfYearParser;\n}(Parser);","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 setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(2, 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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\n\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n\n var _super = _createSuper(DayParser);\n\n function DayParser() {\n var _this;\n\n _classCallCheck(this, DayParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\n\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n\n var _super = _createSuper(LocalDayParser);\n\n function LocalDayParser() {\n var _this;\n\n _classCallCheck(this, LocalDayParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return LocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\n\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n\n var _super = _createSuper(StandAloneLocalDayParser);\n\n function StandAloneLocalDayParser() {\n var _this;\n\n _classCallCheck(this, StandAloneLocalDayParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneLocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\n\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n\n var _super = _createSuper(ISODayParser);\n\n function ISODayParser() {\n var _this;\n\n _classCallCheck(this, ISODayParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n\n var _super = _createSuper(AMPMParser);\n\n function AMPMParser() {\n var _this;\n\n _classCallCheck(this, AMPMParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n\n var _super = _createSuper(AMPMMidnightParser);\n\n function AMPMMidnightParser() {\n var _this;\n\n _classCallCheck(this, AMPMMidnightParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMMidnightParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\n\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n\n var _super = _createSuper(DayPeriodParser);\n\n function DayPeriodParser() {\n var _this;\n\n _classCallCheck(this, DayPeriodParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return DayPeriodParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n\n var _super = _createSuper(Hour1to12Parser);\n\n function Hour1to12Parser() {\n var _this;\n\n _classCallCheck(this, Hour1to12Parser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour1to12Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n\n var _super = _createSuper(Hour0to23Parser);\n\n function Hour0to23Parser() {\n var _this;\n\n _classCallCheck(this, Hour0to23Parser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour0to23Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n\n var _super = _createSuper(Hour0To11Parser);\n\n function Hour0To11Parser() {\n var _this;\n\n _classCallCheck(this, Hour0To11Parser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour0To11Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n\n var _super = _createSuper(Hour1To24Parser);\n\n function Hour1To24Parser() {\n var _this;\n\n _classCallCheck(this, Hour1To24Parser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour1To24Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n\n var _super = _createSuper(MinuteParser);\n\n function MinuteParser() {\n var _this;\n\n _classCallCheck(this, MinuteParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n\n return MinuteParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n\n var _super = _createSuper(SecondParser);\n\n function SecondParser() {\n var _this;\n\n _classCallCheck(this, SecondParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n\n return SecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n\n var _super = _createSuper(FractionOfSecondParser);\n\n function FractionOfSecondParser() {\n var _this;\n\n _classCallCheck(this, FractionOfSecondParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n\n return FractionOfSecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\n\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneWithZParser);\n\n function ISOTimezoneWithZParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneWithZParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n\n return _this;\n }\n\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneWithZParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\n\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneParser);\n\n function ISOTimezoneParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n\n return _this;\n }\n\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n\n var _super = _createSuper(TimestampSecondsParser);\n\n function TimestampSecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampSecondsParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\n\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampSecondsParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n\n var _super = _createSuper(TimestampMillisecondsParser);\n\n function TimestampMillisecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampMillisecondsParser);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\n\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\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 | | P | |\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 `parse` 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 */\n\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; 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 _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/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 { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\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 in the format string 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 *\n * Format of the format 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 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\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) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\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 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\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) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\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 | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | 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) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\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) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\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 | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | 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] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | 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) | 10 | 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 * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\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 * In `format` function, they will produce different result:\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 * `parse` will try to match both formatting and stand-alone units interchangably.\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:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. 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` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\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 [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. 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 * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `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 * 7. `D` and `DD` tokens represent days of the year but they are ofthen 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 * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\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 {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\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 {Date} the parsed date\n * @throws {TypeError} 3 arguments required\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} `options.locale` must contain `match` property\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 * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, 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\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\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\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n\n try {\n var _loop = function _loop() {\n var token = _step.value;\n\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n } // Check if the remaining input contains something other than whitespace\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, subFnOptions); // Result is tuple (date, flags)\n\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return utcDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\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 setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\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 setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\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 * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","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 */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours 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 hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(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 */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes 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 minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\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 */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks 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 weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years 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 years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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\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 */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\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\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\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","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\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","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addYears\"),require(\"date-fns/subMinutes\"),require(\"date-fns/subHours\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarWeeks\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addYears\",\"date-fns/subMinutes\",\"date-fns/subHours\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarWeeks\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addYears,null,null,e.subDays,e.subWeeks,e.subMonths,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,null,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,null,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper)}(this,(function(e,t,r,a,n,o,s,i,p,l,d,c,u,f,h,m,y,D,v,w,g,k,b,S,C,_,M,P,E,N,x,O,Y,I,T,L,R,F,A,q,W,B,K,H,j,Q,V,U,$,z,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe){\"use strict\";function le(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=le(t),ce=le(a),ue=le(n),fe=le(o),he=le(s),me=le(i),ye=le(p),De=le(l),ve=le(d),we=le(c),ge=le(u),ke=le(m),be=le(y),Se=le(D),Ce=le(v),_e=le(w),Me=le(g),Pe=le(k),Ee=le(b),Ne=le(S),xe=le(C),Oe=le(_),Ye=le(M),Ie=le(P),Te=le(E),Le=le(N),Re=le(x),Fe=le(O),Ae=le(Y),qe=le(I),We=le(T),Be=le(L),Ke=le(R),He=le(F),je=le(A),Qe=le(W),Ve=le(B),Ue=le(K),$e=le(H),ze=le(j),Ge=le(Q),Je=le(V),Xe=le(z),Ze=le(G),et=le(J),tt=le(X),rt=le(Z),at=le(ee),nt=le(te),ot=le(re),st=le(ae),it=le(ne),pt=le(oe),lt=le(se),dt=le(ie);function ct(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function ut(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,a=new Array(t);r0&&(o=it.default(e,t.slice(0,e.length),new Date)),Tt(o)||(o=new Date(e))),Tt(o)&&i?o:null)}function Tt(e,t){return t=t||new Date(\"1/1/1000\"),fe.default(e)&&!nt.default(e,t)}function Lt(e,t,r){if(\"en\"===r)return he.default(e,t,{awareOfUnicodeTokens:!0});var a=Xt(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&Jt()&&Xt(Jt())&&(a=Xt(Jt())),he.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Rt(e,t){var r=t.dateFormat,a=t.locale;return e&&Lt(e,Array.isArray(r)?r[0]:r,a)||\"\"}function Ft(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return Fe.default(Re.default(Le.default(e,i),o),a)}function At(e,t){var r=t&&Xt(t)||Jt()&&Xt(Jt());return xe.default(e,r?{locale:r}:null)}function qt(e,t){return Lt(e,\"ddd\",t)}function Wt(e){return Ve.default(e)}function Bt(e,t,r){var a=Xt(t||Jt());return Ue.default(e,{locale:a,weekStartsOn:r})}function Kt(e){return $e.default(e)}function Ht(e){return Ge.default(e)}function jt(e){return ze.default(e)}function Qt(e,t){return e&&t?tt.default(e,t):!e&&!t}function Vt(e,t){return e&&t?et.default(e,t):!e&&!t}function Ut(e,t){return e&&t?rt.default(e,t):!e&&!t}function $t(e,t){return e&&t?Ze.default(e,t):!e&&!t}function zt(e,t){return e&&t?Xe.default(e,t):!e&&!t}function Gt(e,t,r){var a,n=Ve.default(t),o=Je.default(r);try{a=ot.default(e,{start:n,end:o})}catch(e){a=!1}return a}function Jt(){return(\"undefined\"!=typeof window?window:globalThis).__localeId__}function Xt(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:globalThis;return t.__localeData__?t.__localeData__[e]:null}return e}function Zt(e,t){return Lt(Ae.default(Yt(),e),\"LLLL\",t)}function er(e,t){return Lt(Ae.default(Yt(),e),\"LLL\",t)}function tr(e,t){return Lt(qe.default(Yt(),e),\"QQQ\",t)}function rr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return $t(e,t)}))||o&&o.some((function(t){var r=t.start,a=t.end;return ot.default(e,{start:r,end:a})}))||s&&!s.some((function(t){return $t(e,t)}))||i&&!i.some((function(t){var r=t.start,a=t.end;return ot.default(e,{start:r,end:a})}))||p&&!p(Yt(e))||!1}function ar(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,a=t.excludeDateIntervals;return a&&a.length>0?a.some((function(t){var r=t.start,a=t.end;return ot.default(e,{start:r,end:a})})):r&&r.some((function(t){return $t(e,t)}))||!1}function nr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Vt(e,t)}))||o&&!o.some((function(t){return Vt(e,t)}))||s&&!s(Yt(e))||!1}function or(e,t,r,a){var n=Ie.default(e),o=Oe.default(e),s=Ie.default(t),i=Oe.default(t),p=Ie.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Ut(e,t)}))||o&&!o.some((function(t){return Ut(e,t)}))||s&&!s(Yt(e))||!1}function ir(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=new Date(e,0,1);return lr(n,{minDate:r,maxDate:a})||!1}function pr(e,t,r,a){var n=Ie.default(e),o=Ye.default(e),s=Ie.default(t),i=Ye.default(t),p=Ie.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function lr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&He.default(e,r)<0||a&&He.default(e,a)>0}function dr(e,t){return t.some((function(t){return Pe.default(t)===Pe.default(e)&&Me.default(t)===Me.default(e)}))}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&dr(e,r)||a&&!dr(e,a)||n&&!n(e)||!1}function ur(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=Yt(),s=Fe.default(Re.default(o,Me.default(e)),Pe.default(e)),i=Fe.default(Re.default(o,Me.default(r)),Pe.default(r)),p=Fe.default(Re.default(o,Me.default(a)),Pe.default(a));try{n=!ot.default(s,{start:i,end:p})}catch(e){n=!1}return n}function fr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Se.default(e,1);return r&&je.default(r,n)>0||a&&a.every((function(e){return je.default(e,n)>0}))||!1}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&je.default(n,r)>0||a&&a.every((function(e){return je.default(n,e)>0}))||!1}function mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ce.default(e,1);return r&&Qe.default(r,n)>0||a&&a.every((function(e){return Qe.default(e,n)>0}))||!1}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ge.default(e,1);return r&&Qe.default(n,r)>0||a&&a.every((function(e){return Qe.default(n,e)>0}))||!1}function Dr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)>=0}));return Be.default(a)}return r?Be.default(r):t}function vr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)<=0}));return Ke.default(a)}return r?Ke.default(r):t}function wr(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a1&&void 0!==arguments[1]?arguments[1]:xt,r=Math.ceil(Ie.default(e)/t)*t,a=r-(t-1);return{startPeriod:a,endPeriod:r}}function Sr(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Ie.default(r)<=s),a&&i&&(i=Ie.default(a)>=s),i&&n.push(s)}return n}var Cr=function(e){wt(a,e);var r=Ct(a);function a(e){var n;ht(this,a),Dt(bt(n=r.call(this,e)),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(bt(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=n.props.minDate?Ie.default(n.props.minDate):null,a=n.props.maxDate?Ie.default(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),Dt(bt(n),\"onChange\",(function(e){n.props.onChange(e)})),Dt(bt(n),\"handleClickOutside\",(function(){n.props.onCancel()})),Dt(bt(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),Dt(bt(n),\"incrementYears\",(function(){return n.shiftYears(1)})),Dt(bt(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var o=e.yearDropdownItemNumber,s=e.scrollableYearDropdown,i=o||(s?10:5);return n.state={yearsList:Sr(n.props.year,i,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return yt(a,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;e&&(e.scrollTop=e.scrollHeight/2-e.clientHeight/2)}},{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),a}(de.default.Component),_r=lt.default(Cr),Mr=function(e){wt(r,e);var t=Ct(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(r=!0)),r&&e.dayEl.current.focus({preventScroll:!0})})),Dt(bt(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(Ne.default(e.props.day),e.props.day):Ne.default(e.props.day)})),Dt(bt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()},e.renderDayContents())})),e}return yt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),Lr=function(e){wt(r,e);var t=Ct(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),Dt(bt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Kt(Ae.default(e.props.day,r)),t)})),Dt(bt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),Dt(bt(e),\"onMonthKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onMonthClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,Se.default(e.props.preSelection,1))}})),Dt(bt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(jt(qe.default(e.props.day,r)),t)})),Dt(bt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,d=r.monthClassName,c=d?d(a):void 0;return ce.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),c,{\"react-datepicker__month--disabled\":(i||p)&&nr(Ae.default(a,t),e.props),\"react-datepicker__month--selected\":e.isSelectedMonth(a,t,s),\"react-datepicker__month-text--keyboard-selected\":Oe.default(l)===t,\"react-datepicker__month--in-range\":or(n,o,t,a),\"react-datepicker__month--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(a,t)})})),Dt(bt(e),\"getTabIndex\",(function(t){var r=Oe.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),Dt(bt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.chooseDayAriaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=Ae.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Lt(p,\"MMMM yyyy\"))})),Dt(bt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate;return ce.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter--disabled\":(i||p)&&sr(qe.default(a,t),e.props),\"react-datepicker__quarter--selected\":e.isSelectedQuarter(a,t,s),\"react-datepicker__quarter--in-range\":pr(n,o,t,a),\"react-datepicker__quarter--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter--range-end\":e.isRangeEndQuarter(t)})})),Dt(bt(e),\"renderMonths\",(function(){var t=e.props,r=t.showFullMonthYearPicker,a=t.showTwoColumnMonthYearPicker,n=t.showFourColumnMonthYearPicker,o=t.locale,s=t.day,i=t.selected;return(n?[[0,1,2,3],[4,5,6,7],[8,9,10,11]]:a?[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]]).map((function(t,a){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:a},t.map((function(t,a){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:a,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(s,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(s,t,i)},r?Zt(t,o):er(t,o))})))}))})),Dt(bt(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,a=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return de.default.createElement(\"div\",{key:n,role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,a)},tr(t,e.props.locale))})))})),Dt(bt(e),\"getClassNames\",(function(){var t=e.props;t.day;var r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ce.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return yt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Lt(a,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),Ar=function(e){wt(r,e);var t=Ct(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Kr.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),Dt(bt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=Dr(a.props),s=vr(a.props),i=Yt(),p=n||r||t;return p||(o&&nt.default(i,o)?o:s&&at.default(i,s)?s:i)})),Dt(bt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:Se.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),Dt(bt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),Dt(bt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&a.props.onYearChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleMonthChange\",(function(e){a.props.onMonthChange&&a.props.onMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),Dt(bt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:Ae.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(Ae.default(r,Oe.default(e)),Ie.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),Dt(bt(a),\"header\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=Bt(e,a.props.locale,a.props.calendarStartDay),r=[];return a.props.showWeekNumbers&&r.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),r.concat([0,1,2,3,4,5,6].map((function(e){var r=De.default(t,e),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:e,className:ce.default(\"react-datepicker__day-name\",o)},n)})))})),Dt(bt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Lt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Lt(e,\"EEE\",t)}(e,t):function(e,t){return Lt(e,\"EEEEEE\",t)}(e,t)})),Dt(bt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Ce.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=mr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?xt:a,o=br(Ht(Ce.default(e,n)),n).endPeriod,s=r&&Ie.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=fr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=a.props,l=p.previousMonthAriaLabel,d=void 0===l?\"string\"==typeof s?s:\"Previous Month\":l,c=p.previousYearAriaLabel,u=void 0===c?\"string\"==typeof i?i:\"Previous Year\":c;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:d},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),Dt(bt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:ge.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=yr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?xt:a,o=br(ge.default(e,n),n).startPeriod,s=r&&Ie.default(r);return s&&s0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Lt(e,a.props.dateFormat,a.props.locale))})),Dt(bt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(Mr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Ie.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),Dt(bt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Nr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Oe.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),Dt(bt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(Ir,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),Dt(bt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.props.onSelect(Ve.default(Yt()),e)}},a.props.todayButton)})),Dt(bt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),Dt(bt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=fr(a.state.date,a.props),o=hr(a.state.date,a.props),s=mr(a.state.date,a.props),i=yr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(ut(ut({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),Dt(bt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=br(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Ie.default(e))})),Dt(bt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),Dt(bt(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var e=[],t=a.props.showPreviousMonths?a.props.monthsShown-1:0,r=Se.default(a.state.date,t),n=0;n0;e.push(de.default.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:s,i:n}),de.default.createElement(Fr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,ariaLabelPrefix:a.props.monthAriaLabelPrefix,onChange:a.changeMonthYear,day:s,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:n,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:p,monthShowsDuplicateDaysStart:l})))}return e}})),Dt(bt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(qr,vt({onDayClick:a.handleDayClick,date:a.state.date},a.props))):void 0})),Dt(bt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(Ar,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),Dt(bt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=Tt(e)&&Boolean(a.props.selected)?\"\".concat(kr(e.getHours()),\":\").concat(kr(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Wr,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null},a}return yt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){this.props.preSelection&&!$t(this.props.preSelection,e.preSelection)?this.setState({date:this.props.preSelection}):this.props.openToDate&&!$t(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate})}},{key:\"render\",value:function(){var e=this.props.container||Br;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ce.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.props.children))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:xt}}}]),r}(de.default.Component),jr=function(e){wt(r,e);var t=Ct(r);function r(e){var a;return ht(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return yt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return dt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),Qr=function(e){return!e.disabled&&-1!==e.tabIndex},Vr=function(e){wt(r,e);var t=Ct(r);function r(e){var a;return ht(this,r),Dt(bt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(Qr)})),Dt(bt(a),\"handleFocusStart\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[t.length-1].focus()})),Dt(bt(a),\"handleFocusEnd\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return yt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),Ur=function(e){wt(r,e);var t=Ct(r);function r(){return ht(this,r),t.apply(this,arguments)}return yt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,d=t.enableTabLoop,c=t.popperOnKeyDown,u=t.portalId,f=t.portalHost;if(!n){var h=ce.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,vt({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(Vr,{enableTabLoop:d},de.default.createElement(\"div\",{ref:t,style:r,className:h,\"data-placement\":a,onKeyDown:c},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(jr,{portalId:u,portalHost:f},e));var m=ce.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:m},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),$r=\"react-datepicker-ignore-onclickoutside\",zr=lt.default(Hr);var Gr=\"Date input not valid.\",Jr=function(e){wt(r,e);var t=Ct(r);function r(e){var a;return ht(this,r),Dt(bt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:Yt()})),Dt(bt(a),\"calcInitialState\",(function(){var e,t=a.getPreSelection(),r=Dr(a.props),n=vr(a.props),o=r&&nt.default(t,Ve.default(r))?r:n&&at.default(t,Je.default(n))?n:t;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==e?e:o,highlightDates:wr(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1}})),Dt(bt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),Dt(bt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),Dt(bt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),Dt(bt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:Zr},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),Dt(bt(a),\"inputOk\",(function(){return ue.default(a.state.preSelection)})),Dt(bt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),Dt(bt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),Dt(bt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),Dt(bt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),Dt(bt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),Dt(bt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),Dt(bt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),Dt(bt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;rb}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&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(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=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(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=zh(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);th(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=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(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,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();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=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;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;Aj(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;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(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=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&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 Jj(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 Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);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(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(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 Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(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:Lg(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=Oj;Oj=!1;return n}\nfunction Qj(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&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(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 Sj(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 Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(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 Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(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 Wj(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(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(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(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(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=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=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)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(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)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(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*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=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()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(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);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();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,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(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:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(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=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(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),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(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(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(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=ch(-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);Sg(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);Sg(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}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(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 al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(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 wh(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 yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(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 qj(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 Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(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 bl(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 cl(a,b,c,d,e,f,g,h,k){a=new bl(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};ah(f);return a}function dl(a,b,c){var d=3 &&` 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 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\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","/** @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","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\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 _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","/**\n * @license React\n * react-jsx-runtime.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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.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'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>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","/**\n * Copyright (c) 2014-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 * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/affiliate-area-dashboard/\";","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n 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}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : 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 return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\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 React Router!\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\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\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 ParamParseSegment extends string\n ? ParamParseSegment\n : string;\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 route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\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: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | 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 matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\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 route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\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({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\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 branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\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 if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\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 * 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/docs/en/v6/api#matchpath\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, paramNames] = 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 = paramNames.reduce>(\n (memo, paramName, 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 memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\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 paramNames: string[] = [];\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(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\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\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\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 let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\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 value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\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\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 let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\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 React Router!\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\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","export const SDK_VERSION = '7.46.0';\n","export default function _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}","import defineProperty from \"./defineProperty.js\";\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\nexport default function _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}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n 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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import type { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\nexport type ConsoleLevel = typeof CONSOLE_LEVELS[number];\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n","import { isRegExp, isString } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","import type { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import type { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","export const DEFAULT_ENVIRONMENT = 'production';\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n arrayify,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n GLOBAL_OBJ,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this._stack = [{ scope }];\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n this.getScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n this.getScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n this.getScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n this.getScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n this.getScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n this.getScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n public shouldSendDefaultPii(): boolean {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import type { Integration, Options } from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\nimport { addGlobalEventProcessor } from './scope';\n\ndeclare module '@sentry/types' {\n interface Integration {\n isDefaultInstance?: boolean;\n }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(integration: Integration, integrationIndex: IntegrationIndex): void {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr: T[], callback: (item: T) => boolean): number {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { node } from './node-stack-trace';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = stack.slice(0, STACKTRACE_FRAME_LIMIT);\n\n const lastFrameFunction = localStack[localStack.length - 1].function;\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (lastFrameFunction && /sentryWrapped/.test(lastFrameFunction)) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n const firstFrameFunction = localStack[localStack.length - 1].function;\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (firstFrameFunction && /captureMessage|captureException/.test(firstFrameFunction)) {\n localStack.pop();\n }\n\n return localStack.map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type {\n HandlerDataFetch,\n HandlerDataXhr,\n SentryWrappedXMLHttpRequest,\n SentryXhrData,\n WrappedFunction,\n} from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const url = args[1];\n const xhrInfo: SentryXhrData = (this.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler: () => void = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this.__sentry_xhr__;\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args: args as [string, string],\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: this,\n } as HandlerDataXhr);\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { ConsoleLevel } from './logger';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nexport function dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n let overriddenDepth = depth;\n\n if (typeof (value as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number') {\n overriddenDepth = (value as ObjOrArray)['__sentry_override_normalization_depth__'] as number;\n }\n\n // We're also done if we've reached the max depth\n if (overriddenDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, overriddenDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, overriddenDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${getConstructorName(value)}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","import type {\n Attachment,\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n DataCategory,\n DsnComponents,\n Envelope,\n EnvelopeItemType,\n Event,\n EventEnvelopeHeaders,\n SdkInfo,\n SdkMetadata,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\nexport interface TextDecoderInternal {\n decode(input?: Uint8Array): string;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(\n env: string | Uint8Array,\n textEncoder: TextEncoderInternal,\n textDecoder: TextDecoderInternal,\n): Envelope {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { ClientOptions, Event, EventHint, StackParser } from '@sentry/types';\nimport { dateTimestampInSeconds, GLOBAL_OBJ, normalize, resolvedSyncPromise, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { Scope } from '../scope';\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n applyDebugMetadata(prepared, options.stackParser);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n //\n // We need to check for the existence of `finalScope.getAttachments`\n // because `getAttachments` can be undefined if users are using an older version\n // of `@sentry/core` that does not have the `getAttachments` method.\n // See: https://github.com/getsentry/sentry-javascript/issues/5229\n if (finalScope) {\n // Collect attachments from the hint and scope\n if (finalScope.getAttachments) {\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\n/**\n * Applies debug metadata images to the event in order to apply source maps by looking up their debug ID.\n */\nexport function applyDebugMetadata(event: Event, stackParser: StackParser): void {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce>((acc, debugIdStackTrace) => {\n const parsedStack = stackParser(debugIdStackTrace);\n for (const stackFrame of parsedStack) {\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n // Get a Set of filenames in the stack trace\n const errorFileNames = new Set();\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event!.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.filename) {\n errorFileNames.add(frame.filename);\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n errorFileNames.forEach(filename => {\n if (filenameDebugIdMap[filename]) {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n }\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n DynamicSamplingContext,\n Envelope,\n ErrorEvent,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n SdkMetadata,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionEvent,\n Transport,\n TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public addIntegration(integration: Integration): void {\n setupIntegration(integration, this._integrations);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n void this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, _event?: Event): void {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n\n /** @inheritdoc */\n public on(hook: 'startTransaction' | 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n /** @inheritdoc */\n public on(hook: string, callback: unknown): void {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-ignore We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n public emit(hook: 'startTransaction' | 'finishTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /** @inheritdoc */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n /** @inheritdoc */\n public emit(hook: string, ...rest: unknown[]): void {\n if (this._hooks[hook]) {\n // @ts-ignore we cannot enforce the callback to match the hook\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n return prepareEvent(options, event, hint, scope);\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (__DEBUG_BUILD__) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): PromiseLike | void {\n if (this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n return this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n","import { getCurrentHub } from '@sentry/core';\nimport type { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n","import type {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport type { Hub } from './hub';\nimport { getCurrentHub } from './hub';\nimport type { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n","import { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n GLOBAL_OBJ,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(this: void): void;\n}\n","/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport type { Event as SentryEvent, HandlerDataFetch, HandlerDataXhr, Integration } from '@sentry/types';\nimport type {\n FetchBreadcrumbData,\n FetchBreadcrumbHint,\n XhrBreadcrumbData,\n XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\ntype HandlerData = Record;\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n\n /**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\n public addSentryBreadcrumb(event: SentryEvent): void {\n if (this.options.sentry) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: HandlerData) => void {\n function _innerDomBreadcrumb(handlerData: HandlerData): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event as Event | Node;\n target = _isEvent(event)\n ? htmlTreeAsString(event.target, { keyAttrs, maxStringLength })\n : htmlTreeAsString(event, { keyAttrs, maxStringLength });\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData: HandlerData & { args: unknown[]; level: string }): void {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData: HandlerData & HandlerDataXhr): void {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !handlerData.xhr.__sentry_xhr__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__;\n\n const data: XhrBreadcrumbData = {\n method,\n url,\n status_code,\n };\n\n const hint: XhrBreadcrumbHint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData: HandlerData & HandlerDataFetch & { response?: Response }): void {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data: FetchBreadcrumbData = handlerData.fetchData;\n const hint: FetchBreadcrumbHint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const data: FetchBreadcrumbData = {\n ...handlerData.fetchData,\n status_code: handlerData.response && handlerData.response.status,\n };\n const hint: FetchBreadcrumbHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp,\n endTimestamp,\n };\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData: HandlerData & { from: string; to: string }): void {\n let from: string | undefined = handlerData.from;\n let to: string | undefined = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nfunction _isEvent(event: unknown): event is Event {\n return event && !!(event as Record).target;\n}\n","import type { Scope } from '@sentry/core';\nimport { BaseClient, SDK_VERSION } from '@sentry/core';\nimport type {\n BrowserClientReplayOptions,\n ClientOptions,\n Event,\n EventHint,\n Options,\n Severity,\n SeverityLevel,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport type { BrowserTransportOptions } from './transports/types';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options & BrowserClientReplayOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: `${sdkSource}:@sentry/browser`,\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | undefined;\n // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n // \"Breadcrumbs\" that does not have this function.\n if (breadcrumbIntegration && breadcrumbIntegration.addSentryBreadcrumb) {\n breadcrumbIntegration.addSentryBreadcrumb(event);\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n __DEBUG_BUILD__ && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n __DEBUG_BUILD__ && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n void this._sendEnvelope(envelope);\n }\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport type { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n","import type { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport type { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport type { Event, Integration } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import type { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?(?:async )?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import type { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import type {\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n Event,\n EventDropReason,\n EventItem,\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import type { Hub } from '@sentry/core';\nimport {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","// TODO: Remove this file once equivalent integration is used everywhere\n\n/* eslint-disable complexity */\n/**\n * The functions here, which enrich an event with request data, are mostly for use in Node, but are safe for use in a\n * browser context. They live here in `@sentry/utils` rather than in `@sentry/node` so that they can be used in\n * frameworks (like nextjs), which, because of SSR, run the same code in both Node and browser contexts.\n *\n * TODO (v8 / #5257): Remove the note below\n * Note that for now, the tests for this code have to live in `@sentry/node`, since they test both these functions and\n * the backwards-compatibility-preserving wrappers which still live in `handlers.ts` there.\n */\n\n/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type {\n Event,\n ExtractedNodeRequestData,\n PolymorphicRequest,\n Transaction,\n TransactionSource,\n} from '@sentry/types';\n\nimport { isPlainObject, isString } from './is';\nimport { normalize } from './normalize';\nimport { stripUrlQueryAndFragment } from './url';\n\nconst DEFAULT_INCLUDES = {\n ip: false,\n request: true,\n transaction: true,\n user: true,\n};\nconst DEFAULT_REQUEST_INCLUDES = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\nconst DEFAULT_USER_INCLUDES = ['id', 'username', 'email'];\n\ntype InjectedNodeDeps = {\n cookie: {\n parse: (cookieStr: string) => Record;\n };\n url: {\n parse: (urlStr: string) => {\n query: string | null;\n };\n };\n};\n\n/**\n * Sets parameterized route as transaction name e.g.: `GET /users/:id`\n * Also adds more context data on the transaction from the request\n */\nexport function addRequestDataToTransaction(\n transaction: Transaction | undefined,\n req: PolymorphicRequest,\n deps?: InjectedNodeDeps,\n): void {\n if (!transaction) return;\n if (!transaction.metadata.source || transaction.metadata.source === 'url') {\n // Attempt to grab a parameterized route off of the request\n transaction.setName(...extractPathForTransaction(req, { path: true, method: true }));\n }\n transaction.setData('url', req.originalUrl || req.url);\n if (req.baseUrl) {\n transaction.setData('baseUrl', req.baseUrl);\n }\n transaction.setData('query', extractQueryParams(req, deps));\n}\n\n/**\n * Extracts a complete and parameterized path from the request object and uses it to construct transaction name.\n * If the parameterized transaction name cannot be extracted, we fall back to the raw URL.\n *\n * Additionally, this function determines and returns the transaction name source\n *\n * eg. GET /mountpoint/user/:id\n *\n * @param req A request object\n * @param options What to include in the transaction name (method, path, or a custom route name to be\n * used instead of the request's route)\n *\n * @returns A tuple of the fully constructed transaction name [0] and its source [1] (can be either 'route' or 'url')\n */\nexport function extractPathForTransaction(\n req: PolymorphicRequest,\n options: { path?: boolean; method?: boolean; customRoute?: string } = {},\n): [string, TransactionSource] {\n const method = req.method && req.method.toUpperCase();\n\n let path = '';\n let source: TransactionSource = 'url';\n\n // Check to see if there's a parameterized route we can use (as there is in Express)\n if (options.customRoute || req.route) {\n path = options.customRoute || `${req.baseUrl || ''}${req.route && req.route.path}`;\n source = 'route';\n }\n\n // Otherwise, just take the original URL\n else if (req.originalUrl || req.url) {\n path = stripUrlQueryAndFragment(req.originalUrl || req.url || '');\n }\n\n let name = '';\n if (options.method && method) {\n name += method;\n }\n if (options.method && options.path) {\n name += ' ';\n }\n if (options.path && path) {\n name += path;\n }\n\n return [name, source];\n}\n\ntype TransactionNamingScheme = 'path' | 'methodPath' | 'handler';\n\n/** JSDoc */\nfunction extractTransaction(req: PolymorphicRequest, type: boolean | TransactionNamingScheme): string {\n switch (type) {\n case 'path': {\n return extractPathForTransaction(req, { path: true })[0];\n }\n case 'handler': {\n return (req.route && req.route.stack && req.route.stack[0] && req.route.stack[0].name) || '';\n }\n case 'methodPath':\n default: {\n return extractPathForTransaction(req, { path: true, method: true })[0];\n }\n }\n}\n\n/** JSDoc */\nfunction extractUserData(\n user: {\n [key: string]: any;\n },\n keys: boolean | string[],\n): { [key: string]: any } {\n const extractedUser: { [key: string]: any } = {};\n const attributes = Array.isArray(keys) ? keys : DEFAULT_USER_INCLUDES;\n\n attributes.forEach(key => {\n if (user && key in user) {\n extractedUser[key] = user[key];\n }\n });\n\n return extractedUser;\n}\n\n/**\n * Normalize data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param options.include An optional array of keys to include in the normalized data. Defaults to\n * DEFAULT_REQUEST_INCLUDES if not provided.\n * @param options.deps Injected, platform-specific dependencies\n * @returns An object containing normalized request data\n */\nexport function extractRequestData(\n req: PolymorphicRequest,\n options?: {\n include?: string[];\n deps?: InjectedNodeDeps;\n },\n): ExtractedNodeRequestData {\n const { include = DEFAULT_REQUEST_INCLUDES, deps } = options || {};\n const requestData: { [key: string]: any } = {};\n\n // headers:\n // node, express, koa, nextjs: req.headers\n const headers = (req.headers || {}) as {\n host?: string;\n cookie?: string;\n };\n // method:\n // node, express, koa, nextjs: req.method\n const method = req.method;\n // host:\n // express: req.hostname in > 4 and req.host in < 4\n // koa: req.host\n // node, nextjs: req.headers.host\n const host = req.hostname || req.host || headers.host || '';\n // protocol:\n // node, nextjs: \n // express, koa: req.protocol\n const protocol = req.protocol === 'https' || (req.socket && req.socket.encrypted) ? 'https' : 'http';\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n const originalUrl = req.originalUrl || req.url || '';\n // absolute url\n const absoluteUrl = `${protocol}://${host}${originalUrl}`;\n include.forEach(key => {\n switch (key) {\n case 'headers': {\n requestData.headers = headers;\n break;\n }\n case 'method': {\n requestData.method = method;\n break;\n }\n case 'url': {\n requestData.url = absoluteUrl;\n break;\n }\n case 'cookies': {\n // cookies:\n // node, express, koa: req.headers.cookie\n // vercel, sails.js, express (w/ cookie middleware), nextjs: req.cookies\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.cookies =\n // TODO (v8 / #5257): We're only sending the empty object for backwards compatibility, so the last bit can\n // come off in v8\n req.cookies || (headers.cookie && deps && deps.cookie && deps.cookie.parse(headers.cookie)) || {};\n break;\n }\n case 'query_string': {\n // query string:\n // node: req.url (raw)\n // express, koa, nextjs: req.query\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.query_string = extractQueryParams(req, deps);\n break;\n }\n case 'data': {\n if (method === 'GET' || method === 'HEAD') {\n break;\n }\n // body data:\n // express, koa, nextjs: req.body\n //\n // when using node by itself, you have to read the incoming stream(see\n // https://nodejs.dev/learn/get-http-request-body-data-using-nodejs); if a user is doing that, we can't know\n // where they're going to store the final result, so they'll have to capture this data themselves\n if (req.body !== undefined) {\n requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n }\n break;\n }\n default: {\n if ({}.hasOwnProperty.call(req, key)) {\n requestData[key] = (req as { [key: string]: any })[key];\n }\n }\n }\n });\n\n return requestData;\n}\n\n/**\n * Options deciding what parts of the request to use when enhancing an event\n */\nexport interface AddRequestDataToEventOptions {\n /** Flags controlling whether each type of data should be added to the event */\n include?: {\n ip?: boolean;\n request?: boolean | string[];\n transaction?: boolean | TransactionNamingScheme;\n user?: boolean | string[];\n };\n\n /** Injected platform-specific dependencies */\n deps?: {\n cookie: {\n parse: (cookieStr: string) => Record;\n };\n url: {\n parse: (urlStr: string) => {\n query: string | null;\n };\n };\n };\n}\n\n/**\n * Add data from the given request to the given event\n *\n * @param event The event to which the request data will be added\n * @param req Request object\n * @param options.include Flags to control what data is included\n * @param options.deps Injected platform-specific dependencies\n * @hidden\n */\nexport function addRequestDataToEvent(\n event: Event,\n req: PolymorphicRequest,\n options?: AddRequestDataToEventOptions,\n): Event {\n const include = {\n ...DEFAULT_INCLUDES,\n ...(options && options.include),\n };\n\n if (include.request) {\n const extractedRequestData = Array.isArray(include.request)\n ? extractRequestData(req, { include: include.request, deps: options && options.deps })\n : extractRequestData(req, { deps: options && options.deps });\n\n event.request = {\n ...event.request,\n ...extractedRequestData,\n };\n }\n\n if (include.user) {\n const extractedUser = req.user && isPlainObject(req.user) ? extractUserData(req.user, include.user) : {};\n\n if (Object.keys(extractedUser).length) {\n event.user = {\n ...event.user,\n ...extractedUser,\n };\n }\n }\n\n // client ip:\n // node, nextjs: req.socket.remoteAddress\n // express, koa: req.ip\n if (include.ip) {\n const ip = req.ip || (req.socket && req.socket.remoteAddress);\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n\n if (include.transaction && !event.transaction) {\n // TODO do we even need this anymore?\n // TODO make this work for nextjs\n event.transaction = extractTransaction(req, include.transaction);\n }\n\n return event;\n}\n\nfunction extractQueryParams(\n req: PolymorphicRequest,\n deps?: InjectedNodeDeps,\n): string | Record | undefined {\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n let originalUrl = req.originalUrl || req.url || '';\n\n if (!originalUrl) {\n return;\n }\n\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname on the beginning. Since the point here is just to grab the query string, it doesn't matter what we use.\n if (originalUrl.startsWith('/')) {\n originalUrl = `http://dogs.are.great${originalUrl}`;\n }\n\n return (\n req.query ||\n (typeof URL !== undefined && new URL(originalUrl).search.replace('?', '')) ||\n // In Node 8, `URL` isn't in the global scope, so we have to use the built-in module from Node\n (deps && deps.url && deps.url.parse(originalUrl).query) ||\n undefined\n );\n}\n","import type { Hub } from '@sentry/types';\n\n/**\n * Check if Sentry auto-instrumentation should be disabled.\n *\n * @param getCurrentHub A method to fetch the current hub\n * @returns boolean\n */\nexport function shouldDisableAutoInstrumentation(getCurrentHub: () => Hub): boolean {\n const clientOptions = getCurrentHub().getClient()?.getOptions();\n const instrumenter = clientOptions?.instrumenter || 'sentry';\n\n return instrumenter !== 'sentry';\n}\n","/* eslint-disable max-lines */\nimport type { Hub, Integration, PolymorphicRequest, Transaction } from '@sentry/types';\nimport { extractPathForTransaction, getNumberOfUrlSegments, isRegExp, logger } from '@sentry/utils';\n\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype Method =\n | 'all'\n | 'get'\n | 'post'\n | 'put'\n | 'delete'\n | 'patch'\n | 'options'\n | 'head'\n | 'checkout'\n | 'copy'\n | 'lock'\n | 'merge'\n | 'mkactivity'\n | 'mkcol'\n | 'move'\n | 'm-search'\n | 'notify'\n | 'purge'\n | 'report'\n | 'search'\n | 'subscribe'\n | 'trace'\n | 'unlock'\n | 'unsubscribe'\n | 'use';\n\ntype Router = {\n [method in Method]: (...args: any) => any; // eslint-disable-line @typescript-eslint/no-explicit-any\n};\n\n/* Extend the PolymorphicRequest type with a patched parameter to build a reconstructed route */\ntype PatchedRequest = PolymorphicRequest & { _reconstructedRoute?: string; _hasParameters?: boolean };\n\n/* Types used for patching the express router prototype */\ntype ExpressRouter = Router & {\n _router?: ExpressRouter;\n stack?: Layer[];\n lazyrouter?: () => void;\n settings?: unknown;\n process_params: (\n layer: Layer,\n called: unknown,\n req: PatchedRequest,\n res: ExpressResponse,\n done: () => void,\n ) => unknown;\n};\n\ntype Layer = {\n match: (path: string) => boolean;\n handle_request: (req: PatchedRequest, res: ExpressResponse, next: () => void) => void;\n route?: { path: RouteType | RouteType[] };\n path?: string;\n};\n\ntype RouteType = string | RegExp;\n\ninterface ExpressResponse {\n once(name: string, callback: () => void): void;\n}\n\n/**\n * Internal helper for `__sentry_transaction`\n * @hidden\n */\ninterface SentryTracingResponse {\n __sentry_transaction?: Transaction;\n}\n\n/**\n * Express integration\n *\n * Provides an request and error handler for Express framework as well as tracing capabilities\n */\nexport class Express implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Express';\n\n /**\n * @inheritDoc\n */\n public name: string = Express.id;\n\n /**\n * Express App instance\n */\n private readonly _router?: Router;\n private readonly _methods?: Method[];\n\n /**\n * @inheritDoc\n */\n public constructor(options: { app?: Router; router?: Router; methods?: Method[] } = {}) {\n this._router = options.router || options.app;\n this._methods = (Array.isArray(options.methods) ? options.methods : []).concat('use');\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: unknown, getCurrentHub: () => Hub): void {\n if (!this._router) {\n __DEBUG_BUILD__ && logger.error('ExpressIntegration is missing an Express instance');\n return;\n }\n\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Express Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n instrumentMiddlewares(this._router, this._methods);\n instrumentRouter(this._router as ExpressRouter);\n }\n}\n\n/**\n * Wraps original middleware function in a tracing call, which stores the info about the call as a span,\n * and finishes it once the middleware is done invoking.\n *\n * Express middlewares have 3 various forms, thus we have to take care of all of them:\n * // sync\n * app.use(function (req, res) { ... })\n * // async\n * app.use(function (req, res, next) { ... })\n * // error handler\n * app.use(function (err, req, res, next) { ... })\n *\n * They all internally delegate to the `router[method]` of the given application instance.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\nfunction wrap(fn: Function, method: Method): (...args: any[]) => void {\n const arity = fn.length;\n\n switch (arity) {\n case 2: {\n return function (this: NodeJS.Global, req: unknown, res: ExpressResponse & SentryTracingResponse): void {\n const transaction = res.__sentry_transaction;\n if (transaction) {\n const span = transaction.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n });\n res.once('finish', () => {\n span.finish();\n });\n }\n return fn.call(this, req, res);\n };\n }\n case 3: {\n return function (\n this: NodeJS.Global,\n req: unknown,\n res: ExpressResponse & SentryTracingResponse,\n next: () => void,\n ): void {\n const transaction = res.__sentry_transaction;\n const span = transaction?.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n });\n fn.call(this, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n span?.finish();\n next.call(this, ...args);\n });\n };\n }\n case 4: {\n return function (\n this: NodeJS.Global,\n err: Error,\n req: Request,\n res: Response & SentryTracingResponse,\n next: () => void,\n ): void {\n const transaction = res.__sentry_transaction;\n const span = transaction?.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n });\n fn.call(this, err, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n span?.finish();\n next.call(this, ...args);\n });\n };\n }\n default: {\n throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`);\n }\n }\n}\n\n/**\n * Takes all the function arguments passed to the original `app` or `router` method, eg. `app.use` or `router.use`\n * and wraps every function, as well as array of functions with a call to our `wrap` method.\n * We have to take care of the arrays as well as iterate over all of the arguments,\n * as `app.use` can accept middlewares in few various forms.\n *\n * app.use([], )\n * app.use([], , ...)\n * app.use([], ...[])\n */\nfunction wrapMiddlewareArgs(args: unknown[], method: Method): unknown[] {\n return args.map((arg: unknown) => {\n if (typeof arg === 'function') {\n return wrap(arg, method);\n }\n\n if (Array.isArray(arg)) {\n return arg.map((a: unknown) => {\n if (typeof a === 'function') {\n return wrap(a, method);\n }\n return a;\n });\n }\n\n return arg;\n });\n}\n\n/**\n * Patches original router to utilize our tracing functionality\n */\nfunction patchMiddleware(router: Router, method: Method): Router {\n const originalCallback = router[method];\n\n router[method] = function (...args: unknown[]): void {\n return originalCallback.call(this, ...wrapMiddlewareArgs(args, method));\n };\n\n return router;\n}\n\n/**\n * Patches original router methods\n */\nfunction instrumentMiddlewares(router: Router, methods: Method[] = []): void {\n methods.forEach((method: Method) => patchMiddleware(router, method));\n}\n\n/**\n * Patches the prototype of Express.Router to accumulate the resolved route\n * if a layer instance's `match` function was called and it returned a successful match.\n *\n * @see https://github.com/expressjs/express/blob/master/lib/router/index.js\n *\n * @param appOrRouter the router instance which can either be an app (i.e. top-level) or a (nested) router.\n */\nfunction instrumentRouter(appOrRouter: ExpressRouter): void {\n // This is how we can distinguish between app and routers\n const isApp = 'settings' in appOrRouter;\n\n // In case the app's top-level router hasn't been initialized yet, we have to do it now\n if (isApp && appOrRouter._router === undefined && appOrRouter.lazyrouter) {\n appOrRouter.lazyrouter();\n }\n\n const router = isApp ? appOrRouter._router : appOrRouter;\n\n if (!router) {\n /*\n If we end up here, this means likely that this integration is used with Express 3 or Express 5.\n For now, we don't support these versions (3 is very old and 5 is still in beta). To support Express 5,\n we'd need to make more changes to the routing instrumentation because the router is no longer part of\n the Express core package but maintained in its own package. The new router has different function\n signatures and works slightly differently, demanding more changes than just taking the router from\n `app.router` instead of `app._router`.\n @see https://github.com/pillarjs/router\n\n TODO: Proper Express 5 support\n */\n __DEBUG_BUILD__ && logger.debug('Cannot instrument router for URL Parameterization (did not find a valid router).');\n __DEBUG_BUILD__ && logger.debug('Routing instrumentation is currently only supported in Express 4.');\n return;\n }\n\n const routerProto = Object.getPrototypeOf(router) as ExpressRouter;\n\n const originalProcessParams = routerProto.process_params;\n routerProto.process_params = function process_params(\n layer: Layer,\n called: unknown,\n req: PatchedRequest,\n res: ExpressResponse & SentryTracingResponse,\n done: () => unknown,\n ) {\n // Base case: We're in the first part of the URL (thus we start with the root '/')\n if (!req._reconstructedRoute) {\n req._reconstructedRoute = '';\n }\n\n // If the layer's partial route has params, is a regex or an array, the route is stored in layer.route.\n const { layerRoutePath, isRegex, isArray, numExtraSegments }: LayerRoutePathInfo = getLayerRoutePathInfo(layer);\n\n if (layerRoutePath || isRegex || isArray) {\n req._hasParameters = true;\n }\n\n // Otherwise, the hardcoded path (i.e. a partial route without params) is stored in layer.path\n const partialRoute = layerRoutePath || layer.path || '';\n\n // Normalize the partial route so that it doesn't contain leading or trailing slashes\n // and exclude empty or '*' wildcard routes.\n // The exclusion of '*' routes is our best effort to not \"pollute\" the transaction name\n // with interim handlers (e.g. ones that check authentication or do other middleware stuff).\n // We want to end up with the parameterized URL of the incoming request without any extraneous path segments.\n const finalPartialRoute = partialRoute\n .split('/')\n .filter(segment => segment.length > 0 && (isRegex || isArray || !segment.includes('*')))\n .join('/');\n\n // If we found a valid partial URL, we append it to the reconstructed route\n if (finalPartialRoute && finalPartialRoute.length > 0) {\n // If the partial route is from a regex route, we append a '/' to close the regex\n req._reconstructedRoute += `/${finalPartialRoute}${isRegex ? '/' : ''}`;\n }\n\n // Now we check if we are in the \"last\" part of the route. We determine this by comparing the\n // number of URL segments from the original URL to that of our reconstructed parameterized URL.\n // If we've reached our final destination, we update the transaction name.\n const urlLength = getNumberOfUrlSegments(req.originalUrl || '') + numExtraSegments;\n const routeLength = getNumberOfUrlSegments(req._reconstructedRoute);\n\n if (urlLength === routeLength) {\n if (!req._hasParameters) {\n if (req._reconstructedRoute !== req.originalUrl) {\n req._reconstructedRoute = req.originalUrl;\n }\n }\n\n const transaction = res.__sentry_transaction;\n if (transaction && transaction.metadata.source !== 'custom') {\n // If the request URL is '/' or empty, the reconstructed route will be empty.\n // Therefore, we fall back to setting the final route to '/' in this case.\n const finalRoute = req._reconstructedRoute || '/';\n\n transaction.setName(...extractPathForTransaction(req, { path: true, method: true, customRoute: finalRoute }));\n }\n }\n\n return originalProcessParams.call(this, layer, called, req, res, done);\n };\n}\n\ntype LayerRoutePathInfo = {\n layerRoutePath?: string;\n isRegex: boolean;\n isArray: boolean;\n numExtraSegments: number;\n};\n\n/**\n * Extracts and stringifies the layer's route which can either be a string with parameters (`users/:id`),\n * a RegEx (`/test/`) or an array of strings and regexes (`['/path1', /\\/path[2-5]/, /path/:id]`). Additionally\n * returns extra information about the route, such as if the route is defined as regex or as an array.\n *\n * @param layer the layer to extract the stringified route from\n *\n * @returns an object containing the stringified route, a flag determining if the route was a regex\n * and the number of extra segments to the matched path that are additionally in the route,\n * if the route was an array (defaults to 0).\n */\nfunction getLayerRoutePathInfo(layer: Layer): LayerRoutePathInfo {\n const lrp = layer.route?.path;\n\n const isRegex = isRegExp(lrp);\n const isArray = Array.isArray(lrp);\n\n if (!lrp) {\n return { isRegex, isArray, numExtraSegments: 0 };\n }\n\n const numExtraSegments = isArray\n ? Math.max(getNumberOfArrayUrlSegments(lrp as RouteType[]) - getNumberOfUrlSegments(layer.path || ''), 0)\n : 0;\n\n const layerRoutePath = getLayerRoutePathString(isArray, lrp);\n\n return { layerRoutePath, isRegex, isArray, numExtraSegments };\n}\n\n/**\n * Returns the number of URL segments in an array of routes\n *\n * Example: ['/api/test', /\\/api\\/post[0-9]/, '/users/:id/details`] -> 7\n */\nfunction getNumberOfArrayUrlSegments(routesArray: RouteType[]): number {\n return routesArray.reduce((accNumSegments: number, currentRoute: RouteType) => {\n // array members can be a RegEx -> convert them toString\n return accNumSegments + getNumberOfUrlSegments(currentRoute.toString());\n }, 0);\n}\n\n/**\n * Extracts and returns the stringified version of the layers route path\n * Handles route arrays (by joining the paths together) as well as RegExp and normal\n * string values (in the latter case the toString conversion is technically unnecessary but\n * it doesn't hurt us either).\n */\nfunction getLayerRoutePathString(isArray: boolean, lrp?: RouteType | RouteType[]): string | undefined {\n if (isArray) {\n return (lrp as RouteType[]).map(r => r.toString()).join(',');\n }\n return lrp && lrp.toString();\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ninterface PgClient {\n prototype: {\n query: () => void | Promise;\n };\n}\n\ninterface PgOptions {\n usePgNative?: boolean;\n}\n\ntype PGModule = { Client: PgClient; native: { Client: PgClient } };\n\n/** Tracing integration for node-postgres package */\nexport class Postgres implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Postgres';\n\n /**\n * @inheritDoc\n */\n public name: string = Postgres.id;\n\n private _usePgNative: boolean;\n\n private _module?: PGModule;\n\n public constructor(options: PgOptions = {}) {\n this._usePgNative = !!options.usePgNative;\n }\n\n /** @inheritdoc */\n public loadDependency(): PGModule | undefined {\n return (this._module = this._module || loadModule('pg'));\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Postgres Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n __DEBUG_BUILD__ && logger.error('Postgres Integration was unable to require `pg` package.');\n return;\n }\n\n if (this._usePgNative && !pkg.native?.Client) {\n __DEBUG_BUILD__ && logger.error(\"Postgres Integration was unable to access 'pg-native' bindings.\");\n return;\n }\n\n const { Client } = this._usePgNative ? pkg.native : pkg;\n\n /**\n * function (query, callback) => void\n * function (query, params, callback) => void\n * function (query) => Promise\n * function (query, params) => Promise\n * function (pg.Cursor) => pg.Cursor\n */\n fill(Client.prototype, 'query', function (orig: () => void | Promise) {\n return function (this: unknown, config: unknown, values: unknown, callback: unknown) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n const span = parentSpan?.startChild({\n description: typeof config === 'string' ? config : (config as { text: string }).text,\n op: 'db',\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, config, values, function (err: Error, result: unknown) {\n span?.finish();\n callback(err, result);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, config, function (err: Error, result: unknown) {\n span?.finish();\n values(err, result);\n });\n }\n\n const rv = typeof values !== 'undefined' ? orig.call(this, config, values) : orig.call(this, config);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.finish();\n return res;\n });\n }\n\n span?.finish();\n return rv;\n };\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { fill, loadModule, logger } from '@sentry/utils';\n\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ninterface MysqlConnection {\n createQuery: () => void;\n}\n\n/** Tracing integration for node-mysql package */\nexport class Mysql implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mysql';\n\n /**\n * @inheritDoc\n */\n public name: string = Mysql.id;\n\n private _module?: MysqlConnection;\n\n /** @inheritdoc */\n public loadDependency(): MysqlConnection | undefined {\n return (this._module = this._module || loadModule('mysql/lib/Connection.js'));\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Mysql Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n __DEBUG_BUILD__ && logger.error('Mysql Integration was unable to require `mysql` package.');\n return;\n }\n\n // The original function will have one of these signatures:\n // function (callback) => void\n // function (options, callback) => void\n // function (options, values, callback) => void\n fill(pkg, 'createQuery', function (orig: () => void) {\n return function (this: unknown, options: unknown, values: unknown, callback: unknown) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n const span = parentSpan?.startChild({\n description: typeof options === 'string' ? options : (options as { sql: string }).sql,\n op: 'db',\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, options, values, function (err: Error, result: unknown, fields: unknown) {\n span?.finish();\n callback(err, result, fields);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, options, function (err: Error, result: unknown, fields: unknown) {\n span?.finish();\n values(err, result, fields);\n });\n }\n\n return orig.call(this, options, values, callback);\n };\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor, SpanContext } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\n// This allows us to use the same array for both defaults options and the type itself.\n// (note `as const` at the end to make it a union of string literal types (i.e. \"a\" | \"b\" | ... )\n// and not just a string[])\ntype Operation = typeof OPERATIONS[number];\nconst OPERATIONS = [\n 'aggregate', // aggregate(pipeline, options, callback)\n 'bulkWrite', // bulkWrite(operations, options, callback)\n 'countDocuments', // countDocuments(query, options, callback)\n 'createIndex', // createIndex(fieldOrSpec, options, callback)\n 'createIndexes', // createIndexes(indexSpecs, options, callback)\n 'deleteMany', // deleteMany(filter, options, callback)\n 'deleteOne', // deleteOne(filter, options, callback)\n 'distinct', // distinct(key, query, options, callback)\n 'drop', // drop(options, callback)\n 'dropIndex', // dropIndex(indexName, options, callback)\n 'dropIndexes', // dropIndexes(options, callback)\n 'estimatedDocumentCount', // estimatedDocumentCount(options, callback)\n 'find', // find(query, options, callback)\n 'findOne', // findOne(query, options, callback)\n 'findOneAndDelete', // findOneAndDelete(filter, options, callback)\n 'findOneAndReplace', // findOneAndReplace(filter, replacement, options, callback)\n 'findOneAndUpdate', // findOneAndUpdate(filter, update, options, callback)\n 'indexes', // indexes(options, callback)\n 'indexExists', // indexExists(indexes, options, callback)\n 'indexInformation', // indexInformation(options, callback)\n 'initializeOrderedBulkOp', // initializeOrderedBulkOp(options, callback)\n 'insertMany', // insertMany(docs, options, callback)\n 'insertOne', // insertOne(doc, options, callback)\n 'isCapped', // isCapped(options, callback)\n 'mapReduce', // mapReduce(map, reduce, options, callback)\n 'options', // options(options, callback)\n 'parallelCollectionScan', // parallelCollectionScan(options, callback)\n 'rename', // rename(newName, options, callback)\n 'replaceOne', // replaceOne(filter, doc, options, callback)\n 'stats', // stats(options, callback)\n 'updateMany', // updateMany(filter, update, options, callback)\n 'updateOne', // updateOne(filter, update, options, callback)\n] as const;\n\n// All of the operations above take `options` and `callback` as their final parameters, but some of them\n// take additional parameters as well. For those operations, this is a map of\n// { : [] }, as a way to know what to call the operation's\n// positional arguments when we add them to the span's `data` object later\nconst OPERATION_SIGNATURES: {\n [op in Operation]?: string[];\n} = {\n // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well\n // see https://github.com/getsentry/sentry-javascript/pull/3102\n bulkWrite: ['operations'],\n countDocuments: ['query'],\n createIndex: ['fieldOrSpec'],\n createIndexes: ['indexSpecs'],\n deleteMany: ['filter'],\n deleteOne: ['filter'],\n distinct: ['key', 'query'],\n dropIndex: ['indexName'],\n find: ['query'],\n findOne: ['query'],\n findOneAndDelete: ['filter'],\n findOneAndReplace: ['filter', 'replacement'],\n findOneAndUpdate: ['filter', 'update'],\n indexExists: ['indexes'],\n insertMany: ['docs'],\n insertOne: ['doc'],\n mapReduce: ['map', 'reduce'],\n rename: ['newName'],\n replaceOne: ['filter', 'doc'],\n updateMany: ['filter', 'update'],\n updateOne: ['filter', 'update'],\n};\n\ninterface MongoCollection {\n collectionName: string;\n dbName: string;\n namespace: string;\n prototype: {\n [operation in Operation]: (...args: unknown[]) => unknown;\n };\n}\n\ninterface MongoOptions {\n operations?: Operation[];\n describeOperations?: boolean | Operation[];\n useMongoose?: boolean;\n}\n\ninterface MongoCursor {\n once(event: 'close', listener: () => void): void;\n}\n\nfunction isCursor(maybeCursor: MongoCursor): maybeCursor is MongoCursor {\n return maybeCursor && typeof maybeCursor === 'object' && maybeCursor.once && typeof maybeCursor.once === 'function';\n}\n\ntype MongoModule = { Collection: MongoCollection };\n\n/** Tracing integration for mongo package */\nexport class Mongo implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mongo';\n\n /**\n * @inheritDoc\n */\n public name: string = Mongo.id;\n\n private _operations: Operation[];\n private _describeOperations?: boolean | Operation[];\n private _useMongoose: boolean;\n\n private _module?: MongoModule;\n\n /**\n * @inheritDoc\n */\n public constructor(options: MongoOptions = {}) {\n this._operations = Array.isArray(options.operations) ? options.operations : (OPERATIONS as unknown as Operation[]);\n this._describeOperations = 'describeOperations' in options ? options.describeOperations : true;\n this._useMongoose = !!options.useMongoose;\n }\n\n /** @inheritdoc */\n public loadDependency(): MongoModule | undefined {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n return (this._module = this._module || loadModule(moduleName));\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Mongo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n __DEBUG_BUILD__ && logger.error(`Mongo Integration was unable to require \\`${moduleName}\\` package.`);\n return;\n }\n\n this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub);\n }\n\n /**\n * Patches original collection methods\n */\n private _instrumentOperations(collection: MongoCollection, operations: Operation[], getCurrentHub: () => Hub): void {\n operations.forEach((operation: Operation) => this._patchOperation(collection, operation, getCurrentHub));\n }\n\n /**\n * Patches original collection to utilize our tracing functionality\n */\n private _patchOperation(collection: MongoCollection, operation: Operation, getCurrentHub: () => Hub): void {\n if (!(operation in collection.prototype)) return;\n\n const getSpanContext = this._getSpanContextFromOperationArguments.bind(this);\n\n fill(collection.prototype, operation, function (orig: () => void | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n const lastArg = args[args.length - 1];\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n\n // Check if the operation was passed a callback. (mapReduce requires a different check, as\n // its (non-callback) arguments can also be functions.)\n if (typeof lastArg !== 'function' || (operation === 'mapReduce' && args.length === 2)) {\n const span = parentSpan?.startChild(getSpanContext(this, operation, args));\n const maybePromiseOrCursor = orig.call(this, ...args);\n\n if (isThenable(maybePromiseOrCursor)) {\n return maybePromiseOrCursor.then((res: unknown) => {\n span?.finish();\n return res;\n });\n }\n // If the operation returns a Cursor\n // we need to attach a listener to it to finish the span when the cursor is closed.\n else if (isCursor(maybePromiseOrCursor)) {\n const cursor = maybePromiseOrCursor as MongoCursor;\n\n try {\n cursor.once('close', () => {\n span?.finish();\n });\n } catch (e) {\n // If the cursor is already closed, `once` will throw an error. In that case, we can\n // finish the span immediately.\n span?.finish();\n }\n\n return cursor;\n } else {\n span?.finish();\n return maybePromiseOrCursor;\n }\n }\n\n const span = parentSpan?.startChild(getSpanContext(this, operation, args.slice(0, -1)));\n\n return orig.call(this, ...args.slice(0, -1), function (err: Error, result: unknown) {\n span?.finish();\n lastArg(err, result);\n });\n };\n });\n }\n\n /**\n * Form a SpanContext based on the user input to a given operation.\n */\n private _getSpanContextFromOperationArguments(\n collection: MongoCollection,\n operation: Operation,\n args: unknown[],\n ): SpanContext {\n const data: { [key: string]: string } = {\n collectionName: collection.collectionName,\n dbName: collection.dbName,\n namespace: collection.namespace,\n };\n const spanContext: SpanContext = {\n op: 'db',\n description: operation,\n data,\n };\n\n // If the operation takes no arguments besides `options` and `callback`, or if argument\n // collection is disabled for this operation, just return early.\n const signature = OPERATION_SIGNATURES[operation];\n const shouldDescribe = Array.isArray(this._describeOperations)\n ? this._describeOperations.includes(operation)\n : this._describeOperations;\n\n if (!signature || !shouldDescribe) {\n return spanContext;\n }\n\n try {\n // Special case for `mapReduce`, as the only one accepting functions as arguments.\n if (operation === 'mapReduce') {\n const [map, reduce] = args as { name?: string }[];\n data[signature[0]] = typeof map === 'string' ? map : map.name || '';\n data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || '';\n } else {\n for (let i = 0; i < signature.length; i++) {\n data[signature[i]] = JSON.stringify(args[i]);\n }\n }\n } catch (_oO) {\n // no-empty\n }\n\n return spanContext;\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor, Integration } from '@sentry/types';\nimport { isThenable, logger } from '@sentry/utils';\n\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype PrismaAction =\n | 'findUnique'\n | 'findMany'\n | 'findFirst'\n | 'create'\n | 'createMany'\n | 'update'\n | 'updateMany'\n | 'upsert'\n | 'delete'\n | 'deleteMany'\n | 'executeRaw'\n | 'queryRaw'\n | 'aggregate'\n | 'count'\n | 'runCommandRaw';\n\ninterface PrismaMiddlewareParams {\n model?: unknown;\n action: PrismaAction;\n args: unknown;\n dataPath: string[];\n runInTransaction: boolean;\n}\n\ntype PrismaMiddleware = (\n params: PrismaMiddlewareParams,\n next: (params: PrismaMiddlewareParams) => Promise,\n) => Promise;\n\ninterface PrismaClient {\n $use: (cb: PrismaMiddleware) => void;\n}\n\nfunction isValidPrismaClient(possibleClient: unknown): possibleClient is PrismaClient {\n return possibleClient && !!(possibleClient as PrismaClient)['$use'];\n}\n\n/** Tracing integration for @prisma/client package */\nexport class Prisma implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Prisma';\n\n /**\n * @inheritDoc\n */\n public name: string = Prisma.id;\n\n /**\n * Prisma ORM Client Instance\n */\n private readonly _client?: PrismaClient;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { client?: unknown } = {}) {\n if (isValidPrismaClient(options.client)) {\n this._client = options.client;\n } else {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Unsupported Prisma client provided to PrismaIntegration. Provided client: ${JSON.stringify(options.client)}`,\n );\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (!this._client) {\n __DEBUG_BUILD__ && logger.error('PrismaIntegration is missing a Prisma Client Instance');\n return;\n }\n\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Prisma Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n this._client.$use((params, next: (params: PrismaMiddlewareParams) => Promise) => {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n\n const action = params.action;\n const model = params.model;\n\n const span = parentSpan?.startChild({\n description: model ? `${model} ${action}` : action,\n op: 'db.sql.prisma',\n });\n\n const rv = next(params);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.finish();\n return res;\n });\n }\n\n span?.finish();\n return rv;\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype GraphQLModule = {\n [method: string]: (...args: unknown[]) => unknown;\n};\n\n/** Tracing integration for graphql package */\nexport class GraphQL implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GraphQL';\n\n /**\n * @inheritDoc\n */\n public name: string = GraphQL.id;\n\n private _module?: GraphQLModule;\n\n /** @inheritdoc */\n public loadDependency(): GraphQLModule | undefined {\n return (this._module = this._module || loadModule('graphql/execution/execute.js'));\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('GraphQL Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n __DEBUG_BUILD__ && logger.error('GraphQL Integration was unable to require graphql/execution package.');\n return;\n }\n\n fill(pkg, 'execute', function (orig: () => void | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n\n const span = parentSpan?.startChild({\n description: 'execute',\n op: 'graphql.execute',\n });\n\n scope?.setSpan(span);\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.finish();\n scope?.setSpan(parentSpan);\n\n return res;\n });\n }\n\n span?.finish();\n scope?.setSpan(parentSpan);\n return rv;\n };\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { arrayify, fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ninterface ApolloOptions {\n useNestjs?: boolean;\n}\n\ntype ApolloResolverGroup = {\n [key: string]: () => unknown;\n};\n\ntype ApolloModelResolvers = {\n [key: string]: ApolloResolverGroup;\n};\n\ntype GraphQLModule = {\n GraphQLFactory: {\n prototype: {\n create: (resolvers: ApolloModelResolvers[]) => unknown;\n };\n };\n};\n\ntype ApolloModule = {\n ApolloServerBase: {\n prototype: {\n constructSchema: (config: unknown) => unknown;\n };\n };\n};\n\n/** Tracing integration for Apollo */\nexport class Apollo implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Apollo';\n\n /**\n * @inheritDoc\n */\n public name: string = Apollo.id;\n\n private readonly _useNest: boolean;\n\n private _module?: GraphQLModule & ApolloModule;\n\n /**\n * @inheritDoc\n */\n public constructor(\n options: ApolloOptions = {\n useNestjs: false,\n },\n ) {\n this._useNest = !!options.useNestjs;\n }\n\n /** @inheritdoc */\n public loadDependency(): (GraphQLModule & ApolloModule) | undefined {\n if (this._useNest) {\n this._module = this._module || loadModule('@nestjs/graphql');\n } else {\n this._module = this._module || loadModule('apollo-server-core');\n }\n\n return this._module;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n __DEBUG_BUILD__ && logger.log('Apollo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n if (this._useNest) {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n __DEBUG_BUILD__ && logger.error('Apollo-NestJS Integration was unable to require @nestjs/graphql package.');\n return;\n }\n\n /**\n * Iterate over resolvers of NestJS ResolversExplorerService before schemas are constructed.\n */\n fill(\n pkg.GraphQLFactory.prototype,\n 'mergeWithSchema',\n function (orig: (this: unknown, ...args: unknown[]) => unknown) {\n return function (\n this: { resolversExplorerService: { explore: () => ApolloModelResolvers[] } },\n ...args: unknown[]\n ) {\n fill(this.resolversExplorerService, 'explore', function (orig: () => ApolloModelResolvers[]) {\n return function (this: unknown) {\n const resolvers = arrayify(orig.call(this));\n\n const instrumentedResolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return instrumentedResolvers;\n };\n });\n\n return orig.call(this, ...args);\n };\n },\n );\n } else {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n __DEBUG_BUILD__ && logger.error('Apollo Integration was unable to require apollo-server-core package.');\n return;\n }\n\n /**\n * Iterate over resolvers of the ApolloServer instance before schemas are constructed.\n */\n fill(pkg.ApolloServerBase.prototype, 'constructSchema', function (orig: (config: unknown) => unknown) {\n return function (this: {\n config: { resolvers?: ApolloModelResolvers[]; schema?: unknown; modules?: unknown };\n }) {\n if (!this.config.resolvers) {\n if (__DEBUG_BUILD__) {\n if (this.config.schema) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.' +\n 'If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead.',\n );\n logger.warn();\n } else if (this.config.modules) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.',\n );\n }\n\n logger.error('Skipping tracing as no resolvers found on the `ApolloServer` instance.');\n }\n\n return orig.call(this);\n }\n\n const resolvers = arrayify(this.config.resolvers);\n\n this.config.resolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return orig.call(this);\n };\n });\n }\n }\n}\n\nfunction instrumentResolvers(resolvers: ApolloModelResolvers[], getCurrentHub: () => Hub): ApolloModelResolvers[] {\n return resolvers.map(model => {\n Object.keys(model).forEach(resolverGroupName => {\n Object.keys(model[resolverGroupName]).forEach(resolverName => {\n if (typeof model[resolverGroupName][resolverName] !== 'function') {\n return;\n }\n\n wrapResolver(model, resolverGroupName, resolverName, getCurrentHub);\n });\n });\n\n return model;\n });\n}\n\n/**\n * Wrap a single resolver which can be a parent of other resolvers and/or db operations.\n */\nfunction wrapResolver(\n model: ApolloModelResolvers,\n resolverGroupName: string,\n resolverName: string,\n getCurrentHub: () => Hub,\n): void {\n fill(model[resolverGroupName], resolverName, function (orig: () => unknown | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n const span = parentSpan?.startChild({\n description: `${resolverGroupName}.${resolverName}`,\n op: 'graphql.resolve',\n });\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.finish();\n return res;\n });\n }\n\n span?.finish();\n\n return rv;\n };\n });\n}\n","/* eslint-disable max-lines */\nimport type {\n Instrumenter,\n Primitive,\n Span as SpanInterface,\n SpanContext,\n TraceContext,\n Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n */\n public instrumenter: Instrumenter = 'sentry';\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if (__DEBUG_BUILD__ && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n if (\n __DEBUG_BUILD__ &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data || {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId || this.spanId;\n this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags || {};\n this.traceId = spanContext.traceId || this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): TraceContext {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n","import type {\n Context,\n Contexts,\n DynamicSamplingContext,\n Event,\n Measurements,\n MeasurementUnit,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public metadata: TransactionMetadata;\n\n /**\n * The reference to the current hub.\n */\n public _hub: Hub;\n\n private _name: string;\n\n private _measurements: Measurements = {};\n\n private _contexts: Contexts = {};\n\n private _trimEnd?: boolean;\n\n private _frozenDynamicSamplingContext: Readonly> | undefined = undefined;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n public get name(): string {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n public set name(newName: string) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n public setMetadata(newMetadata: Partial): void {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n __DEBUG_BUILD__ && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n __DEBUG_BUILD__ && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction: Event = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name || '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n public getDynamicSamplingContext(): Readonly> {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub: Hub = this._hub || getCurrentHub();\n const client = hub && hub.getClient();\n\n if (!client) return {};\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n const maybeSampleRate = this.metadata.sampleRate;\n const sample_rate = maybeSampleRate !== undefined ? maybeSampleRate.toString() : undefined;\n\n const { segment: user_segment } = hub.getScope().getUser() || {};\n\n const source = this.metadata.source;\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const transaction = source && source !== 'url' ? this.name : undefined;\n\n const dsc = dropUndefinedKeys({\n environment: environment || DEFAULT_ENVIRONMENT,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n });\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n public setHub(hub: Hub): void {\n this._hub = hub;\n }\n}\n","/* eslint-disable max-lines */\nimport type { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n private _idleTimeoutCanceledPermanently: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n private _finishReason: typeof IDLE_TRANSACTION_FINISH_REASONS[number] = IDLE_TRANSACTION_FINISH_REASONS[4];\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n __DEBUG_BUILD__ && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._restartIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.op === 'ui.action.click') {\n this.setTag(FINISH_REASON_TAG, this._finishReason);\n }\n\n if (this.spanRecorder) {\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n __DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n __DEBUG_BUILD__ && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n __DEBUG_BUILD__ && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n public cancelIdleTimeout(\n endTimestamp?: Parameters[0],\n {\n restartOnChildSpanChange,\n }: {\n restartOnChildSpanChange?: boolean;\n } = {\n restartOnChildSpanChange: true,\n },\n ): void {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n public setFinishReason(reason: string): void {\n this._finishReason = reason;\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n private _restartIdleTimeout(endTimestamp?: Parameters[0]): void {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n __DEBUG_BUILD__ && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampWithMs();\n if (this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n __DEBUG_BUILD__ && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n __DEBUG_BUILD__ && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub: Hub): void {\n const scope = hub.getScope();\n if (scope.getTransaction()) {\n scope.setSpan(undefined);\n }\n}\n","import type { Options } from '@sentry/types';\n\nimport { getCurrentHub } from '../hub';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type { Transaction } from '@sentry/types';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport type { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n __DEBUG_BUILD__ && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import type { ClientOptions, CustomSamplingContext, Options, SamplingContext, TransactionContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': span.toTraceparent(),\n }\n : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setMetadata({\n sampleRate,\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n __DEBUG_BUILD__ && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n __DEBUG_BUILD__ &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n): IdleTransaction {\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n","import type { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n if (!traceparent || !matches) {\n // empty string or no matches is invalid traceparent data\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext: Partial,\n): string | undefined {\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2022 Google LLC\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 * https://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\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry: { [key: string]: number | string } = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n","/*\n * Copyright 2022 Google LLC\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 * https://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\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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 * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\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}","export default function _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}","import type { Transaction } from '@sentry/core';\nimport type { Span, SpanContext } from '@sentry/types';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n","/* eslint-disable max-lines */\nimport type { IdleTransaction, Transaction } from '@sentry/core';\nimport { getActiveTransaction } from '@sentry/core';\nimport type { Measurements } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, htmlTreeAsString, logger } from '@sentry/utils';\n\nimport { WINDOW } from '../types';\nimport { onCLS } from '../web-vitals/getCLS';\nimport { onFID } from '../web-vitals/getFID';\nimport { onLCP } from '../web-vitals/getLCP';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport { observe } from '../web-vitals/lib/observe';\nimport type { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time: number): number {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nexport function startTrackingWebVitals(): () => void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return (): void => {\n if (clsCallback) {\n clsCallback();\n }\n if (lcpCallback) {\n lcpCallback();\n }\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nexport function startTrackingLongTasks(): void {\n const entryHandler = (entries: PerformanceEntry[]): void => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nexport function startTrackingInteractions(): void {\n const entryHandler = (entries: PerformanceEventTiming[]): void => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n }\n };\n\n observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): ReturnType {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n return onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry as LayoutShift;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(): ReturnType {\n return onLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry as LargestContentfulPaint;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): void {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name as string).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n __DEBUG_BUILD__ &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n renderBlockingStatus?: string;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = WINDOW.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n if (_lcpEntry) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { FIDMetric, PerformanceEventTiming, ReportCallback } from './types';\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nexport const onFID = (onReport: ReportCallback): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntry = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries: FIDMetric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() as FIDMetric['entries']);\n po.disconnect();\n }, true);\n }\n};\n","/*\n * Copyright 2020 Google LLC\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 * https://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\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { CLSMetric, ReportCallback, StopListening } from './types';\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onCLS = (onReport: ReportCallback): StopListening | undefined => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries: LayoutShift[]): void => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = (): void => {\n handleEntries(po.takeRecords() as CLSMetric['entries']);\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n","/* eslint-disable max-lines */\nimport { getCurrentHub, hasTracingEnabled } from '@sentry/core';\nimport type { DynamicSamplingContext, Span } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n BAGGAGE_HEADER_NAME,\n dynamicSamplingContextToSentryBaggageHeader,\n isInstanceOf,\n stringMatchesSomePattern,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * @deprecated Will be removed in v8.\n * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control\n * trace header attachment.\n */\n tracingOrigins: Array;\n\n /**\n * List of strings and/or regexes used to determine which outgoing requests will have `sentry-trace` and `baggage`\n * headers attached.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACE_PROPAGATION_TARGETS}\n */\n tracePropagationTargets: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * Default: (url: string) => true\n */\n shouldCreateSpanForRequest?(this: void, url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n getRequestHeader?: (key: string) => string;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string;\n };\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line deprecation/deprecation\n const { traceFetch, traceXHR, tracePropagationTargets, tracingOrigins, shouldCreateSpanForRequest } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_: string) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url: string): boolean =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n });\n }\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nexport function shouldAttachHeaders(url: string, tracePropagationTargets: (string | RegExp)[] | undefined): boolean {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const currentScope = getCurrentHub().getScope();\n const currentSpan = currentScope && currentScope.getSpan();\n const activeTransaction = currentSpan && currentSpan.transaction;\n\n if (currentSpan && activeTransaction) {\n const span = currentSpan.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request: string | Request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: { [key: string]: any } = handlerData.args[1];\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n options.headers = addTracingHeadersToFetchRequest(\n request,\n activeTransaction.getDynamicSamplingContext(),\n span,\n options,\n );\n }\n }\n}\n\nfunction addTracingHeadersToFetchRequest(\n request: string | Request,\n dynamicSamplingContext: Partial,\n span: Span,\n options: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | Request['headers'];\n },\n): PolymorphicRequestHeaders {\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n const sentryTraceHeader = span.toTraceparent();\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request as Request).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers as Headers);\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended miultiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders: string[] = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers as Exclude),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const currentScope = getCurrentHub().getScope();\n const currentSpan = currentScope && currentScope.getSpan();\n const activeTransaction = currentSpan && currentSpan.transaction;\n\n if (currentSpan && activeTransaction) {\n const span = currentSpan.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader && shouldAttachHeaders(handlerData.xhr.__sentry_xhr__.url)) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n handlerData.xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","/* eslint-disable max-lines */\nimport type { Hub, IdleTransaction } from '@sentry/core';\nimport {\n addTracingExtensions,\n extractTraceparentData,\n getActiveTransaction,\n startIdleTransaction,\n TRACING_DEFAULTS,\n} from '@sentry/core';\nimport type { EventProcessor, Integration, Transaction, TransactionContext, TransactionSource } from '@sentry/types';\nimport { baggageHeaderToDynamicSamplingContext, getDomElement, logger } from '@sentry/utils';\n\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport {\n addPerformanceEntries,\n startTrackingInteractions,\n startTrackingLongTasks,\n startTrackingWebVitals,\n} from './metrics';\nimport type { RequestInstrumentationOptions } from './request';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nimport { WINDOW } from './types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n * the transaction will be finished.\n * Time is in ms.\n *\n * Default: 5000\n */\n heartbeatInterval: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * If true, Sentry will capture long tasks and add them to the corresponding transaction.\n *\n * Default: true\n */\n enableLongTask: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{\n /**\n * @deprecated This property no longer has any effect and will be removed in v8.\n */\n _reportAllChanges: boolean;\n }>;\n\n /**\n * _experiments allows the user to send options to define how this integration works.\n * Note that the `enableLongTask` options is deprecated in favor of the option at the top level, and will be removed in v8.\n *\n * TODO (v8): Remove enableLongTask\n *\n * Default: undefined\n */\n _experiments: Partial<{\n enableLongTask: boolean;\n enableInteractions: boolean;\n onStartRouteTransaction: (t: Transaction | undefined, ctx: TransactionContext, getCurrentHub: () => Hub) => void;\n }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(this: void, context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n this: void,\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BROWSER_TRACING_INTEGRATION_ID;\n\n private _getCurrentHub?: () => Hub;\n\n private _latestRouteName?: string;\n private _latestRouteSource?: TransactionSource;\n\n private _collectWebVitals: () => void;\n\n public constructor(_options?: Partial) {\n addTracingExtensions();\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n _experiments,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;\n const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;\n\n const traceParentData = sentryTraceMetaTagValue ? extractTraceparentData(sentryTraceMetaTagValue) : undefined;\n const dynamicSamplingContext = baggageMetaTagValue\n ? baggageHeaderToDynamicSamplingContext(baggageMetaTagValue)\n : undefined;\n\n const expandedContext: TransactionContext = {\n ...context,\n ...traceParentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceParentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n if (finalContext.sampled === false) {\n __DEBUG_BUILD__ &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction as Transaction;\n }\n\n /** Start listener for interaction transactions */\n private _registerInteractionListener(): void {\n let inflightInteractionTransaction: IdleTransaction | undefined;\n const registerInteractionTransaction = (): void => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.finish();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n __DEBUG_BUILD__ && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context: TransactionContext = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n metadata: {\n source: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n","import type { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, logger } from '@sentry/utils';\n\nimport { WINDOW } from './types';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!WINDOW || !WINDOW.location) {\n __DEBUG_BUILD__ && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = WINDOW.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin\n startTimestamp: browserPerformanceTimeOrigin,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n","import type { IdleTransaction, SpanStatusType } from '@sentry/core';\nimport { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { WINDOW } from './types';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n __DEBUG_BUILD__ &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","export const storageGetItem = (key) => {\n return localStorage.getItem(key);\n};\n\nexport const storageSetItem = (key, value) => {\n localStorage.setItem(key, value);\n};\n\nexport const storageRemoveItem = (key) => {\n localStorage.removeItem(key);\n};\n","export const ACCESS_TOKEN = 'accessToken';\nexport const ACCESS_TOKEN_EXPIRY = 'accessTokenExpiry';\nexport const AFFILIATE_ID = 'affiliate_id';\nexport const USER_PROFILE = 'user_profile';\nexport const REMEMBER_AUTH = 'remember_auth';\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { storageSetItem, storageRemoveItem, storageGetItem } from '../utils/local-storage';\nimport { ACCESS_TOKEN, ACCESS_TOKEN_EXPIRY, AFFILIATE_ID, REMEMBER_AUTH, USER_PROFILE } from '../utils/storage-keys';\n\nexport const loadSession = () => {\n const sessionToken = storageGetItem(ACCESS_TOKEN);\n const sessionTokenExpiry = storageGetItem(ACCESS_TOKEN_EXPIRY);\n const remember = storageGetItem(REMEMBER_AUTH);\n\n if (!sessionToken) {\n return null;\n }\n\n if (!sessionTokenExpiry) {\n removeSessionExpired();\n return null;\n }\n\n if (remember !== 'forever') {\n const expiredDate = Number.parseInt(sessionTokenExpiry.toString(), 10);\n if (expiredDate <= Date.now()) {\n removeSessionExpired();\n return null;\n }\n }\n\n return sessionToken;\n};\n\nconst removeSessionExpired = () => {\n storageRemoveItem(ACCESS_TOKEN);\n storageRemoveItem(ACCESS_TOKEN_EXPIRY);\n storageRemoveItem(AFFILIATE_ID);\n storageRemoveItem(USER_PROFILE);\n storageRemoveItem(REMEMBER_AUTH);\n window.location.href = '/affiliate-area-dashboard/login';\n};\n\nconst useSession = () => {\n const [session, setSession] = useState(null);\n const [affiliateID, setAffiliateID] = useState(null);\n const navigate = useNavigate();\n const sessionToken = loadSession();\n\n useEffect(() => {\n setSession(sessionToken);\n }, [sessionToken]);\n\n const storeSession = React.useCallback((sessionToken, expiry, affiliateID, userProfile, status) => {\n if (sessionToken && affiliateID) {\n storageSetItem(ACCESS_TOKEN_EXPIRY, expiry.getTime().toString());\n if (status !== 'active') {\n navigate('/pending');\n } else {\n storageSetItem(ACCESS_TOKEN, sessionToken);\n storageSetItem(AFFILIATE_ID, affiliateID);\n storageSetItem(USER_PROFILE, userProfile);\n setSession(sessionToken);\n setAffiliateID(affiliateID);\n navigate('/');\n }\n }\n }, [navigate]);\n\n const signOut = () => {\n removeSessionExpired();\n setSession(null);\n };\n\n return {\n session,\n storeSession,\n signOut,\n affiliateID\n };\n};\n\nexport default useSession;\n","import useSession from '../hooks/useSession';\nimport { createContainer } from 'unstated-next';\nimport { useState } from 'react';\n\nconst useGlobalStore = () => {\n const { session, storeSession, signOut, status } = useSession();\n const [menuOpen, setMenuOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [affID, setAffID] = useState('');\n\n return {\n session,\n storeSession,\n signOut,\n status,\n menuOpen,\n setMenuOpen,\n loading,\n setLoading,\n affID,\n setAffID\n };\n};\n\nconst GlobalStore = createContainer(useGlobalStore);\nexport default GlobalStore;\n","import React from \"react\"\n\nexport interface ContainerProviderProps {\n\tinitialState?: State\n\tchildren: React.ReactNode\n}\n\nexport interface Container {\n\tProvider: React.ComponentType>\n\tuseContainer: () => Value\n}\n\nexport function createContainer(\n\tuseHook: (initialState?: State) => Value,\n): Container {\n\tlet Context = React.createContext(null)\n\n\tfunction Provider(props: ContainerProviderProps) {\n\t\tlet value = useHook(props.initialState)\n\t\treturn {props.children}\n\t}\n\n\tfunction useContainer(): Value {\n\t\tlet value = React.useContext(Context)\n\t\tif (value === null) {\n\t\t\tthrow new Error(\"Component must be wrapped with \")\n\t\t}\n\t\treturn value\n\t}\n\n\treturn { Provider, useContainer }\n}\n\nexport function useContainer(\n\tcontainer: Container,\n): Value {\n\treturn container.useContainer()\n}\n","import { useState, useEffect, useRef } from 'react';\n\nconst useComponentVisible = (initialIsVisible) => {\n const [isComponentVisible, setIsComponentVisible] = useState(initialIsVisible);\n const ref = useRef(null);\n\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n setIsComponentVisible(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n return { ref, isComponentVisible, setIsComponentVisible };\n}\n\nexport default useComponentVisible;\n","var _path, _path2, _path3, _path4, _path5, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgElsaLogoBlack(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 150,\n height: 50,\n viewBox: \"0 0 150 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.5429 0C24.3084 0 21.552 0.314466 18.7238 8.84227C10.2645 4.8287 8.4086 6.4093 7.48276 7.32373C6.61612 8.17196 4.89127 10.307 9.03427 18.268C0.24097 21.1975 0 24.1559 0 25C0 25.7862 0.32552 28.8315 9.00891 31.6576C4.90396 39.8254 6.86977 42.0846 7.47431 42.6845C8.0408 43.239 10.4759 45.1672 18.6477 41.1577C21.6028 49.7642 24.3549 50 25.5386 50C26.7731 50 29.5252 49.6855 32.345 41.195C40.6479 45.2375 42.7659 43.4997 43.5987 42.6845C44.4654 41.8322 46.1902 39.7013 42.0472 31.732C50.8405 28.8026 51.0815 25.8441 51.0815 25C51.0815 24.2138 50.756 21.1685 42.0726 18.3424C46.1775 10.1788 44.2117 7.91543 43.5987 7.32373C43.028 6.76928 40.5887 4.83698 32.3915 8.8671C29.3138 0.16137 26.8576 0 25.5429 0ZM9.74027 9.53327C10.0151 9.26432 10.9409 8.10162 18.0939 10.8946C18.0601 11.0146 18.022 11.1304 17.9924 11.2587C16.9652 14.8916 14.7246 16.617 11.5666 17.4983C11.4059 17.5439 11.2537 17.5852 11.1015 17.6308C8.07885 10.8242 9.39361 9.8767 9.74027 9.53327ZM31.0091 11.7883C31.0852 11.7511 31.157 11.718 31.2331 11.689C31.2796 11.7966 31.3177 11.9 31.36 12.0076C32.8227 15.6447 35.1648 18.0818 38.9526 19.4389C39.0372 19.472 39.1133 19.4969 39.1894 19.5258C39.1387 19.6334 39.0922 19.7327 39.0414 19.8444C37.38 23.4028 37.2743 26.8082 39.0414 30.3583C39.0795 30.4328 39.1133 30.5073 39.1513 30.5818C39.0414 30.6273 38.9273 30.6645 38.8174 30.7059C35.0802 32.0631 32.5394 34.3926 31.2247 38.1248C31.1993 38.2076 31.1655 38.282 31.1401 38.3606C31.0302 38.311 30.9245 38.2655 30.8062 38.2158C27.1578 36.6145 23.725 36.5525 20.0639 38.2158C19.9879 38.2531 19.9118 38.2862 19.8399 38.3151C19.7934 38.2075 19.7553 38.1041 19.7131 37.9883C18.2884 34.3388 15.9083 31.9141 12.1204 30.5569C12.0358 30.5238 11.9597 30.499 11.8836 30.47C11.9301 30.3625 11.9809 30.2632 12.0316 30.1556C13.693 26.5972 13.7691 23.2125 12.0316 19.6417C11.9936 19.5672 11.9597 19.4927 11.9217 19.4182C12.0316 19.3727 12.1457 19.3355 12.2557 19.2941C15.997 17.9328 18.4998 15.5867 19.8568 11.8669C19.8822 11.7925 19.916 11.718 19.9413 11.6435C20.0513 11.689 20.157 11.7387 20.2753 11.78C23.9279 13.3524 27.3522 13.4517 31.0091 11.7883ZM3.1918 25C3.1918 24.5614 2.96351 23.0139 10.0616 20.1506C10.1334 20.2706 10.2011 20.3947 10.2729 20.5147C12.1711 23.7918 11.8245 26.5641 10.2349 29.3694C10.1588 29.5018 10.0869 29.6301 10.0108 29.7625C3.03538 26.9944 3.1918 25.4014 3.1918 25ZM9.74027 40.4709C9.41898 40.1564 8.14226 39.2213 11.0931 32.2824C11.2284 32.3196 11.3594 32.3568 11.5032 32.3941C15.2149 33.3995 16.9694 35.5925 17.8783 38.6834C17.9248 38.8323 17.9671 38.9772 18.0051 39.122C11.0677 41.9935 10.0277 40.7564 9.74027 40.4709ZM25.5429 46.876C25.1666 46.876 23.6405 47.2526 20.6008 40.144C20.715 40.0819 20.8376 40.0116 20.9602 39.9495C24.3084 38.0917 27.1409 38.431 30.0071 39.9868C30.1551 40.0695 30.2988 40.1481 30.4468 40.2226C27.7285 47.0705 25.9064 46.876 25.5429 46.876ZM41.3497 40.4709C41.0833 40.7315 40.2716 42.0515 32.9918 39.1344C33.0298 39.0103 33.0679 38.8779 33.1017 38.7454C34.129 35.1125 36.3696 33.3871 39.5276 32.5058C39.6925 32.4603 39.8531 32.4106 40.0138 32.3693C43.028 39.1013 41.6118 40.2185 41.3497 40.4709ZM47.8939 25C47.8939 25.4386 48.1222 26.9861 41.0241 29.8494C40.9523 29.7294 40.8889 29.6135 40.8212 29.4853C38.923 26.2082 39.2697 23.4359 40.8593 20.6306C40.9354 20.494 41.0115 20.3616 41.0833 20.2292C48.0546 23.0056 47.8939 24.6028 47.8939 25ZM41.3497 9.53327C41.671 9.84773 42.9477 10.7829 39.9968 17.7218C39.8616 17.6845 39.7305 17.6473 39.5868 17.6101C35.875 16.6046 34.1713 14.3909 33.2116 11.3208C33.1651 11.1759 33.1228 11.0353 33.0763 10.8904C40.0222 8.01473 41.0622 9.2519 41.3497 9.53327ZM30.4679 9.86842C30.358 9.93049 30.2439 9.98841 30.1297 10.0546C26.7815 11.9124 23.9744 11.5276 21.0828 10.0174C20.9348 9.9429 20.7953 9.86842 20.6474 9.79394C23.4375 2.88812 25.0525 3.12397 25.5471 3.12397C25.9276 3.12397 27.4199 2.93777 30.4679 9.86842Z\",\n fill: \"url(#paint0_linear)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M68.0465 32.5885C68.0465 33.023 68.3932 33.3788 68.8201 33.3788H81.7649C81.8241 33.3788 81.8706 33.3291 81.8706 33.2712V32.1416C81.8706 32.0837 81.8241 32.034 81.7649 32.034H69.8474C69.7079 32.034 69.5938 31.9182 69.5938 31.7734V25.4261C69.5938 25.2813 69.7079 25.1696 69.8474 25.1696H80.9743C81.0335 25.1696 81.08 25.1199 81.08 25.062V23.9655C81.08 23.9076 81.0335 23.8579 80.9743 23.8579H69.8474C69.7079 23.8579 69.5938 23.7421 69.5938 23.6014V18.2307C69.5938 18.0858 69.7079 17.9741 69.8474 17.9741H81.5873C81.6465 17.9741 81.693 17.9245 81.693 17.8665V16.7328C81.693 16.6749 81.6465 16.6252 81.5873 16.6252H68.8201C68.3932 16.6252 68.0465 16.9811 68.0465 17.4155V32.5885Z\",\n fill: \"#042132\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M89.5774 33.3747H102.497C102.556 33.3747 102.607 33.325 102.607 33.2671V32.1375C102.607 32.0754 102.556 32.0299 102.497 32.0299H90.4948C90.3511 32.0299 90.2327 31.914 90.2327 31.7692V16.7328C90.2327 16.6749 90.182 16.6252 90.1228 16.6252H88.8884C88.8292 16.6252 88.7784 16.6749 88.7784 16.7328V32.5885C88.7827 33.023 89.1378 33.3747 89.5774 33.3747Z\",\n fill: \"#042132\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M135.628 27.2178L140.232 18.3672C140.283 18.2762 140.384 18.2431 140.46 18.2431C140.541 18.2431 140.642 18.2762 140.689 18.3672L145.284 27.2178C145.326 27.2964 145.322 27.3957 145.275 27.4702C145.229 27.5488 145.144 27.5984 145.051 27.5984H135.852C135.763 27.5984 135.679 27.5529 135.632 27.4743C135.586 27.3957 135.586 27.3005 135.628 27.2178ZM134.884 28.9142H146.028C146.125 28.9142 146.21 28.968 146.256 29.0508L148.463 33.3167C148.48 33.354 148.518 33.3747 148.56 33.3747H149.892C149.93 33.3747 149.964 33.354 149.985 33.3209C150.002 33.2878 150.006 33.2464 149.989 33.2133L141.775 17.4362C141.733 17.3535 141.327 16.6211 140.452 16.6211C139.56 16.6211 139.15 17.399 139.133 17.4321L130.923 33.2174C130.906 33.2505 130.906 33.2919 130.927 33.325C130.948 33.3581 130.982 33.3788 131.02 33.3788H132.352C132.394 33.3788 132.428 33.3581 132.449 33.3209L134.656 29.059C134.702 28.968 134.787 28.9142 134.884 28.9142Z\",\n fill: \"#042132\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.63 27.495C123.385 27.0688 123.051 26.684 122.637 26.353C122.223 26.0261 121.732 25.7323 121.174 25.4841C120.62 25.2358 120.024 25.0124 119.403 24.8096C118.781 24.611 118.135 24.4207 117.475 24.251C116.816 24.0772 116.173 23.9076 115.552 23.7379C114.947 23.5766 114.355 23.3945 113.784 23.1959C113.235 23.0056 112.744 22.7904 112.334 22.5546C111.924 22.3228 111.599 22.0498 111.358 21.7477C111.117 21.4457 110.999 21.1022 110.999 20.6967C110.999 20.2126 111.121 19.8071 111.379 19.4596C111.633 19.112 112.005 18.8182 112.487 18.5906C112.956 18.3672 113.539 18.2472 114.271 18.1314C114.943 18.0279 115.716 17.97 116.57 17.97H122.607C122.633 17.97 122.658 17.9576 122.679 17.9369C122.696 17.9162 122.709 17.8914 122.709 17.8624V16.7287C122.709 16.6707 122.662 16.6211 122.612 16.6211H122.514H116.579C115.987 16.6211 114.258 16.6625 113.281 16.9107C112.766 17.0307 112.271 17.2004 111.819 17.4073C111.362 17.6141 110.96 17.879 110.622 18.1851C110.284 18.4913 110.009 18.8596 109.815 19.2858C109.62 19.7078 109.519 20.2002 109.519 20.7464C109.519 21.3008 109.641 21.7932 109.887 22.2153C110.132 22.6332 110.466 23.0056 110.88 23.3242C111.29 23.6386 111.781 23.92 112.339 24.16C112.892 24.3958 113.489 24.611 114.102 24.7972C114.715 24.9834 115.361 25.1613 116.021 25.3227C116.68 25.4841 117.323 25.6496 117.936 25.8151C118.557 25.9847 119.149 26.1709 119.695 26.3654C120.248 26.5599 120.735 26.7874 121.145 27.0398C121.555 27.2922 121.88 27.5901 122.121 27.9212C122.362 28.2563 122.476 28.6328 122.476 29.0756C122.476 29.63 122.328 30.0852 122.028 30.4658C121.732 30.8465 121.309 31.1568 120.773 31.3927C120.219 31.6368 119.542 31.7485 118.845 31.852C118.164 31.9554 117.369 32.0092 116.414 32.0175H109.705C109.65 32.0175 109.608 32.0671 109.608 32.1251V33.2588C109.608 33.3209 109.65 33.3664 109.705 33.3664L116.367 33.3705C116.947 33.3705 117.547 33.3457 118.143 33.2919C118.743 33.2423 119.331 33.1512 119.893 33.0271L120.02 32.9981C120.532 32.8864 121.018 32.7747 121.483 32.5761C121.982 32.3609 122.417 32.0837 122.789 31.7568C123.161 31.4299 123.457 31.0327 123.677 30.5817C123.897 30.1266 124.007 29.5887 124.007 28.9804C123.998 28.4218 123.876 27.9212 123.63 27.495Z\",\n fill: \"#042132\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 25.5407,\n y1: 50,\n x2: 25.5407,\n y2: 0,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#007DF7\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.5028,\n stopColor: \"#46DF83\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F8DA49\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgElsaLogoBlack);\nexport default __webpack_public_path__ + \"static/media/elsa-logo-black.6f7768791d46802d8a3ddc6d8245f411.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport GlobalStore from '../../stores/global-store';\nimport useComponentVisible from '../../hooks/useComponentVisible';\nimport ELSALogo from '../../assets/images/elsa-logo-black.svg';\nimport { storageGetItem } from '../../utils/local-storage';\nimport { USER_PROFILE } from '../../utils/storage-keys';\nimport './Header.css';\nimport { Link } from 'react-router-dom';\n\nfunction Header({ onToggleNavbar }) {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const { signOut } = GlobalStore.useContainer();\n const userProfile = JSON.parse(storageGetItem(USER_PROFILE));\n\n return (\n
\n \n \"ELSA\n \n
\n
\n \n
\n
Chào {userProfile.display_name}
\n
\n setIsComponentVisible(false)} className=\"dropdown-item\">Profile\n \n
\n
\n \n
\n
\n )\n}\n\nexport default Header;","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgHome(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHome);\nexport default __webpack_public_path__ + \"static/media/Home.d21904328319684b6b1c72cfa8f51cde.svg\";\nexport { ForwardRef as ReactComponent };","const CONFIG = {\n dev: {\n apiURL: 'http://vn.elsaspeak.local',\n serverAPI: 'http://localhost:8000/api',\n affiliatePublicKey: '9aaa2446dc499074fc7a90c2f8309605',\n affiliateToken: 'd92cbcd4f1ea19db507fd956dfa2e47c',\n captchaSiteKey: '6LerZhsiAAAAAMjF79HlfVerlMMN73pbeIKFQdTE'\n },\n staging: {\n apiURL: 'https://vn-stag.elsaspeak.com',\n serverAPI: 'https://backend-vn-website.elsanow.io/api',\n affiliatePublicKey: '3dbcfb7a9d0f36e89d243b7c154f0b51',\n affiliateToken: '5121777470ca693be28ef4876325d423',\n captchaSiteKey: '6LerZhsiAAAAAMjF79HlfVerlMMN73pbeIKFQdTE'\n },\n production: {\n apiURL: 'https://vn.elsaspeak.com',\n serverAPI: 'https://backend-vn-website.elsanow.io/api',\n affiliatePublicKey: '935fb2dc41be01bc2c78ec9bd30e2da8',\n affiliateToken: 'f15cea0339fff8f1d0d451cb409e3698',\n captchaSiteKey: '6LerZhsiAAAAAMjF79HlfVerlMMN73pbeIKFQdTE'\n }\n};\n\nexport default function env() {\n const currentStage = process.env.REACT_APP_ENV || 'dev';\n\n switch (currentStage) {\n case 'production':\n return CONFIG.production;\n case 'staging':\n return CONFIG.staging;\n default:\n return CONFIG.dev;\n }\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgLink(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLink);\nexport default __webpack_public_path__ + \"static/media/Link.0de4e46c58d728392522efa9968bb716.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgCard(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCard);\nexport default __webpack_public_path__ + \"static/media/Card.c712ee37a20d92787f44f2473206cc6c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgBill(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBill);\nexport default __webpack_public_path__ + \"static/media/Bill.25b2eceed2163ce891e9270e737943cb.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgClick(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClick);\nexport default __webpack_public_path__ + \"static/media/Click.2b6afc76959d9685a85851e1a0551972.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgCoin(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCoin);\nexport default __webpack_public_path__ + \"static/media/Coin.475119d6e241be0aa5f9c434303e97f6.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgCreatives(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCreatives);\nexport default __webpack_public_path__ + \"static/media/Creatives.7006ef147e44ddee1b8424367d54e3b5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgMoney(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17 9V7a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2m2 4h10a2 2 0 002-2v-6a2 2 0 00-2-2H9a2 2 0 00-2 2v6a2 2 0 002 2zm7-5a2 2 0 11-4 0 2 2 0 014 0z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMoney);\nexport default __webpack_public_path__ + \"static/media/Money.e3d721163630a68a0ab1658eee4392e4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgBalance(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBalance);\nexport default __webpack_public_path__ + \"static/media/Balance.b200d835262ed7631bca1188a1049636.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgUser(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.29822 6.00499C6.29822 5.47904 6.40182 4.95825 6.60309 4.47234C6.80436 3.98644 7.09936 3.54493 7.47126 3.17303C7.84316 2.80114 8.28466 2.50613 8.77057 2.30486C9.25648 2.10359 9.77727 2 10.3032 2C10.8292 2 11.3499 2.10359 11.8359 2.30486C12.3218 2.50613 12.7633 2.80114 13.1352 3.17303C13.5071 3.54493 13.8021 3.98644 14.0033 4.47234C14.2046 4.95825 14.3082 5.47904 14.3082 6.00499C14.3082 7.06718 13.8862 8.08586 13.1352 8.83694C12.3841 9.58802 11.3654 10.01 10.3032 10.01C9.24102 10.01 8.22234 9.58802 7.47126 8.83694C6.72018 8.08586 6.29822 7.06718 6.29822 6.00499ZM10.3032 3.41352C9.61591 3.41352 8.95676 3.68655 8.47077 4.17255C7.98478 4.65854 7.71175 5.31769 7.71175 6.00499C7.71175 6.69229 7.98478 7.35143 8.47077 7.83743C8.95676 8.32342 9.61591 8.59645 10.3032 8.59645C10.9905 8.59645 11.6497 8.32342 12.1357 7.83743C12.6216 7.35143 12.8947 6.69229 12.8947 6.00499C12.8947 5.31769 12.6216 4.65854 12.1357 4.17255C11.6497 3.68655 10.9905 3.41352 10.3032 3.41352ZM6.53381 12.837C5.97148 12.837 5.43217 13.0604 5.03454 13.458C4.63691 13.8557 4.41352 14.395 4.41352 14.9573V16.0768C4.41352 16.0938 4.42578 16.1089 4.44274 16.1117C8.32428 16.745 12.2831 16.745 16.1637 16.1117C16.1719 16.1103 16.1794 16.1061 16.1848 16.0997C16.1901 16.0933 16.193 16.0852 16.1929 16.0768V14.9573C16.1929 14.395 15.9695 13.8557 15.5719 13.458C15.1743 13.0604 14.6349 12.837 14.0726 12.837H13.7522C13.727 12.8368 13.7018 12.8406 13.6778 12.8483L12.8626 13.115C11.1995 13.658 9.40688 13.658 7.74379 13.115L6.92771 12.8483C6.90426 12.8408 6.87978 12.837 6.85515 12.837H6.53381ZM3 14.9573C3 14.0201 3.37231 13.1212 4.03503 12.4585C4.69775 11.7958 5.59659 11.4235 6.53381 11.4235H6.85421C7.02855 11.4235 7.20194 11.4518 7.36685 11.5045L8.18292 11.7712C9.56068 12.2209 11.0457 12.2209 12.4235 11.7712L13.2396 11.5045C13.4045 11.4508 13.5779 11.4235 13.7513 11.4235H14.0726C15.0098 11.4235 15.9087 11.7958 16.5714 12.4585C17.2341 13.1212 17.6064 14.0201 17.6064 14.9573V16.0768C17.6064 16.7874 17.0919 17.3923 16.3908 17.5064C12.3591 18.1645 8.24733 18.1645 4.21563 17.5064C3.87631 17.4511 3.56771 17.277 3.345 17.0151C3.1223 16.7532 3.00001 16.4206 3 16.0768V14.9573Z\",\n fill: \"#D2D6DC\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/User.7b82e3efac58b37efeacb4b6c5a208ed.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgEye(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEye);\nexport default __webpack_public_path__ + \"static/media/Eye.8a2c5ac63d83e010ba6a28671ff6f68c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgCopy(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCopy);\nexport default __webpack_public_path__ + \"static/media/Copy.0bc294ad7b52fc30622ff29193836872.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgUserStar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.6667 5.92982C12.6667 6.97208 12.2526 7.97164 11.5156 8.70863C10.7787 9.44562 9.7791 9.85965 8.73684 9.85965C7.69459 9.85965 6.69502 9.44562 5.95804 8.70863C5.22105 7.97164 4.80702 6.97208 4.80702 5.92982C4.80702 4.88757 5.22105 3.888 5.95804 3.15102C6.69502 2.41403 7.69459 2 8.73684 2C9.7791 2 10.7787 2.41403 11.5156 3.15102C12.2526 3.888 12.6667 4.88757 12.6667 5.92982ZM11.5439 5.92982C11.5439 5.18536 11.2481 4.47138 10.7217 3.94496C10.1953 3.41855 9.48131 3.12281 8.73684 3.12281C7.99237 3.12281 7.2784 3.41855 6.75198 3.94496C6.22556 4.47138 5.92982 5.18536 5.92982 5.92982C5.92982 6.67429 6.22556 7.38827 6.75198 7.91469C7.2784 8.4411 7.99237 8.73684 8.73684 8.73684C9.48131 8.73684 10.1953 8.4411 10.7217 7.91469C11.2481 7.38827 11.5439 6.67429 11.5439 5.92982ZM3.96491 10.9825C3.44379 10.9825 2.944 11.1895 2.57551 11.558C2.20702 11.9265 2 12.4262 2 12.9474V13.2281C2 14.5715 2.85502 15.7078 4.06877 16.4803C5.28926 17.2573 6.94147 17.7193 8.73684 17.7193C9.15453 17.7193 9.56491 17.694 9.96351 17.6463C9.6025 17.3404 9.28599 16.9855 9.02316 16.592C8.92828 16.5948 8.83284 16.5965 8.73684 16.5965C7.12168 16.5965 5.68618 16.1788 4.67172 15.5332C3.64996 14.8842 3.12281 14.0545 3.12281 13.2281V12.9474C3.12281 12.724 3.21153 12.5098 3.36945 12.3519C3.52738 12.194 3.74157 12.1053 3.96491 12.1053H8.46288C8.60315 11.7089 8.7925 11.3317 9.02653 10.9825H3.96491ZM17.4386 13.7895C17.4386 14.9062 16.995 15.9771 16.2054 16.7668C15.4157 17.5564 14.3448 18 13.2281 18C12.1114 18 11.0404 17.5564 10.2508 16.7668C9.46115 15.9771 9.01754 14.9062 9.01754 13.7895C9.01754 12.6728 9.46115 11.6018 10.2508 10.8122C11.0404 10.0226 12.1114 9.57895 13.2281 9.57895C14.3448 9.57895 15.4157 10.0226 16.2054 10.8122C16.995 11.6018 17.4386 12.6728 17.4386 13.7895ZM12.8284 11.0599L12.3006 12.6476H10.6198C10.2094 12.6476 10.0415 13.1742 10.3761 13.4116L11.7269 14.37L11.2053 15.9374C11.0773 16.3231 11.5169 16.6487 11.8487 16.4135L13.2281 15.4349L14.6074 16.4135C14.9392 16.6493 15.3788 16.3236 15.2508 15.9374L14.7287 14.37L16.08 13.4116C16.4152 13.1742 16.2467 12.6476 15.8364 12.6476H14.1555L13.6278 11.0599C13.4998 10.6759 12.9564 10.6759 12.8284 11.0599Z\",\n fill: \"#D2D6DC\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUserStar);\nexport default __webpack_public_path__ + \"static/media/User-star.bfb8c5bc1bfac3e394c71051de63f47e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgImage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 14,\n viewBox: \"0 0 16 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.18519 4.44444C9.18519 4.21004 9.25469 3.98089 9.38492 3.78599C9.51515 3.59109 9.70026 3.43918 9.91682 3.34948C10.1334 3.25977 10.3717 3.2363 10.6016 3.28203C10.8315 3.32776 11.0427 3.44064 11.2084 3.60639C11.3742 3.77214 11.4871 3.98332 11.5328 4.21323C11.5785 4.44313 11.555 4.68143 11.4653 4.89799C11.3756 5.11456 11.2237 5.29966 11.0288 5.42989C10.8339 5.56012 10.6048 5.62963 10.3704 5.62963C10.056 5.62963 9.75458 5.50476 9.53232 5.2825C9.31005 5.06023 9.18519 4.75878 9.18519 4.44444ZM16 1.48148V12.1481C16 12.5411 15.8439 12.9179 15.5661 13.1957C15.2883 13.4735 14.9114 13.6296 14.5185 13.6296H1.48148C1.08857 13.6296 0.711748 13.4735 0.433916 13.1957C0.156084 12.9179 0 12.5411 0 12.1481V1.48148C0 1.08857 0.156084 0.711748 0.433916 0.433916C0.711748 0.156084 1.08857 0 1.48148 0H14.5185C14.9114 0 15.2883 0.156084 15.5661 0.433916C15.8439 0.711748 16 1.08857 16 1.48148ZM1.77778 1.77778V7.68296L4.28593 5.17481C4.56375 4.89708 4.9405 4.74106 5.33333 4.74106C5.72617 4.74106 6.10292 4.89708 6.38074 5.17481L9.43037 8.22222L10.703 6.95037C10.9808 6.67264 11.3575 6.51661 11.7504 6.51661C12.1432 6.51661 12.52 6.67264 12.7978 6.95037L14.2222 8.37704V1.77778H1.77778ZM1.77778 11.8519H10.5437L5.33333 6.64148L1.77778 10.197V11.8519ZM14.2222 11.8519V10.8889L11.7504 8.41704L10.6874 9.48148L13.0578 11.8519H14.2222Z\",\n fill: \"#D2D6DC\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgImage);\nexport default __webpack_public_path__ + \"static/media/Image.eafa2f645287beb990e4220f3ed043ba.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgProfile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 13,\n viewBox: \"0 0 18 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.66667 11.6667H9M3.66667 11.6667C2.78844 11.6667 2.32711 11.6551 1.97067 11.4729C1.63607 11.3022 1.36412 11.0299 1.19378 10.6951C1 10.3156 1 9.81778 1 8.82222V3.84444C1 2.84889 1 2.35111 1.19378 1.97067C1.36444 1.63556 1.63556 1.36444 1.97067 1.19378C2.35111 1 2.84889 1 3.84444 1H14.1556C15.1511 1 15.6489 1 16.0284 1.19378C16.3636 1.36444 16.6356 1.63556 16.8062 1.97067C17 2.35022 17 2.848 17 3.84178V8.82489C17 9.81867 17 10.3156 16.8062 10.6951C16.6356 11.03 16.3633 11.3022 16.0284 11.4729C15.6489 11.6667 15.152 11.6667 14.1582 11.6667H9M3.66667 11.6667C3.66667 10.6844 4.86044 9.88889 6.33333 9.88889C7.80622 9.88889 9 10.6844 9 11.6667M14.3333 8.11111H10.7778M14.3333 5.44444H11.6667M6.33333 7.22222C5.86184 7.22222 5.40965 7.03492 5.07625 6.70152C4.74286 6.36812 4.55556 5.91594 4.55556 5.44444C4.55556 4.97295 4.74286 4.52076 5.07625 4.18737C5.40965 3.85397 5.86184 3.66667 6.33333 3.66667C6.80483 3.66667 7.25701 3.85397 7.59041 4.18737C7.92381 4.52076 8.11111 4.97295 8.11111 5.44444C8.11111 5.91594 7.92381 6.36812 7.59041 6.70152C7.25701 7.03492 6.80483 7.22222 6.33333 7.22222Z\",\n stroke: \"#D2D6DC\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProfile);\nexport default __webpack_public_path__ + \"static/media/Profile.9fdee472cdd2208c3e601eeb298cb5ac.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgDocs(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.19995 12.8H11.2V11.2H3.19995V12.8ZM11.2 9.59999H3.19995V7.99999H11.2V9.59999ZM3.19995 6.39999H6.39995V4.79999H3.19995V6.39999Z\",\n fill: \"#D2D6DC\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.4 0C1.76348 0 1.15303 0.252856 0.702944 0.702944C0.252856 1.15303 0 1.76348 0 2.4V13.6C0 14.2365 0.252856 14.847 0.702944 15.2971C1.15303 15.7471 1.76348 16 2.4 16H12C12.6365 16 13.247 15.7471 13.6971 15.2971C14.1471 14.847 14.4 14.2365 14.4 13.6V5.6C14.4 4.11479 13.81 2.69041 12.7598 1.6402C11.7096 0.589998 10.2852 0 8.8 0H2.4ZM2.4 1.6H8V5.6H12.8V13.6C12.8 13.8122 12.7157 14.0157 12.5657 14.1657C12.4157 14.3157 12.2122 14.4 12 14.4H2.4C2.18783 14.4 1.98434 14.3157 1.83431 14.1657C1.68429 14.0157 1.6 13.8122 1.6 13.6V2.4C1.6 2.18783 1.68429 1.98434 1.83431 1.83431C1.98434 1.68429 2.18783 1.6 2.4 1.6ZM9.6 1.68C10.2288 1.80882 10.8174 2.08679 11.3164 2.49052C11.8153 2.89426 12.21 3.41194 12.4672 4H9.6V1.68Z\",\n fill: \"#D2D6DC\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDocs);\nexport default __webpack_public_path__ + \"static/media/Docs.dc6b2b79642f301a13a3c57df246556e.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { ReactComponent as Home } from './icon/Home.svg';\nimport { ReactComponent as Link } from './icon/Link.svg';\nimport { ReactComponent as Card } from './icon/Card.svg';\nimport { ReactComponent as Bill } from './icon/Bill.svg';\nimport { ReactComponent as Click } from './icon/Click.svg';\nimport { ReactComponent as Coin } from './icon/Coin.svg';\nimport { ReactComponent as Creatives } from './icon/Creatives.svg';\nimport { ReactComponent as Money } from './icon/Money.svg';\nimport { ReactComponent as Balance } from './icon/Balance.svg';\nimport { ReactComponent as User } from './icon/User.svg';\nimport { ReactComponent as Eye } from './icon/Eye.svg';\nimport { ReactComponent as Copy } from './icon/Copy.svg';\nimport { ReactComponent as UserStar } from './icon/User-star.svg';\nimport { ReactComponent as Image } from './icon/Image.svg';\nimport { ReactComponent as Profile } from './icon/Profile.svg';\nimport { ReactComponent as Docs } from './icon/Docs.svg';\n\nconst MyIcon = ({ name, color, fill }) => {\n let Icon =
;\n switch (name) {\n case 'home':\n Icon = Home;\n break;\n case 'link':\n Icon = Link;\n break;\n case 'card':\n Icon = Card;\n break;\n case 'money':\n Icon = Money;\n break;\n case 'click':\n Icon = Click;\n break;\n case 'creatives':\n Icon = Creatives;\n break;\n case 'bill':\n Icon = Bill;\n break;\n case 'user':\n Icon = User;\n break;\n case 'coin':\n Icon = Coin;\n break;\n case 'balance':\n Icon = Balance;\n break;\n case 'copy':\n Icon = Copy;\n break;\n case 'eye':\n Icon = Eye;\n break;\n case 'user-star':\n Icon = UserStar;\n break;\n case 'image':\n Icon = Image;\n break;\n case 'profile':\n Icon = Profile;\n break;\n case 'docs':\n Icon = Docs;\n break;\n default:\n }\n return ;\n};\n\nexport default MyIcon;\n","import { NavLink } from 'react-router-dom';\nimport env from '../../utils/env';\nimport MyIcon from '../MyIcon/MyIcon';\nimport './Sidebar.css';\n\nfunction Sidebar({ className, onCloseSidebar }) {\n const config = env();\n\n const closeSidebar = () => {\n onCloseSidebar();\n };\n\n return (\n \n )\n}\n\nexport default Sidebar;\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport GlobalStore from '../stores/global-store';\n\nfunction withSession(WrappedComponent) {\n const Wrapped = (props) => {\n const { session } = GlobalStore.useContainer();\n\n if (!session) {\n return ;\n }\n\n return ;\n };\n\n return Wrapped;\n}\n\nexport default withSession;\n","import axios from 'axios';\nimport env from '../utils/env';\n\nconst config = env();\nconst axiosClient = axios.create({\n baseURL: config.apiURL,\n headers: {\n 'Content-Type': 'application/json',\n 'X-ACCESS-TOKEN': window.btoa(`${config.affiliatePublicKey}:${config.affiliateToken}`)\n }\n});\n\nexport default axiosClient;\n","\nimport CryptoJS from 'crypto-js';\nimport env from '../utils/env';\nimport { storageGetItem } from '../utils/local-storage';\nimport { AFFILIATE_ID } from '../utils/storage-keys';\n\nconst getAffiliateId = () => {\n const config = env();\n const encryptedUserIdFromStorage = storageGetItem(AFFILIATE_ID);\n if (!encryptedUserIdFromStorage) {\n return;\n }\n const affiliateId = CryptoJS.AES.decrypt(encryptedUserIdFromStorage, config.affiliateToken).toString(CryptoJS.enc.Utf8);\n return affiliateId;\n}\n\nexport default getAffiliateId;\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst affiliateValid = {\n checkIsValid: async (affID) => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'check_affiliate_info');\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default affiliateValid;\n","import './Loading.css';\n\nfunction Loading({ color = '#fff', size = 13 }) {\n return (\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default Loading;\n","import './Footer.css';\n\nfunction Footer() {\n return (\n
\n

Copyright ©2022 ELSA - All Rights Reserved.

\n
\n )\n}\n\nexport default Footer;\n","import { useState, useEffect } from 'react';\nimport { Outlet, useNavigate } from 'react-router';\nimport Header from '../../components/Header/Header';\nimport Sidebar from '../../components/Sidebar/Sidebar';\nimport withSession from '../../hoc/withSession';\nimport affiliateValid from '../../apis/affiliate-valid-api';\nimport GlobalStore from '../../stores/global-store';\nimport Loading from '../../components/Loading/Loading';\nimport './Dashboard.css';\nimport Footer from '../../components/Footer/Footer';\n\nfunction Dashboard() {\n const {menuOpen, setMenuOpen} = GlobalStore.useContainer();\n const {loading, affID} = GlobalStore.useContainer();\n const [userValid, setUserValid] = useState('');\n const [width, setWidth] = useState(window.innerWidth);\n const navigate = useNavigate();\n\n useEffect(() => {\n async function checkAffiliateIsValid() {\n const { data } = await affiliateValid.checkIsValid(affID);\n setUserValid(data);\n }\n\n const timer = setTimeout(() => {\n checkAffiliateIsValid();\n }, 5000);\n\n return () => clearTimeout(timer);\n }, [affID]);\n\n useEffect(() => {\n if (userValid?.isValid === 'false') {\n navigate('/profile');\n }\n }, [userValid, navigate]);\n\n function handleWindowSizeChange() {\n setWidth(window.innerWidth);\n }\n useEffect(() => {\n window.addEventListener('resize', handleWindowSizeChange);\n return () => {\n window.removeEventListener('resize', handleWindowSizeChange);\n }\n }, []);\n\n const toggleNavbar = () => {\n if(width < 767) {\n setMenuOpen(prev => !prev);\n }\n };\n\n return (\n
\n
\n
\n setMenuOpen(false)} className={menuOpen ? ' is-open' : ''} />\n
\n
\n \n {loading && (\n
\n \n
\n )}\n
\n
\n
\n
\n
\n )\n}\n\nexport default withSession(Dashboard);\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst dashboardApi = {\n getSummaryDashboard: async (affID, module_name = 'home') => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n\n getExportData: async (filterDate) => {\n const affiliate_id = getAffiliateId();\n var url = URL + `?action=tot_export_affiliate&type=${filterDate}&aff_id=${affiliate_id}`;\n const response = await axiosClient.get(url);\n return response;\n }\n}\n\nexport default dashboardApi;\n","var _defs, _g, _g2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgIconFilter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:none;}\"))), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Layer 2\",\n id: \"Layer_2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,9H11a1,1,0,0,1,0-2H28a1,1,0,0,1,0,2Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,9H4A1,1,0,0,1,4,7H7A1,1,0,0,1,7,9Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21,17H4a1,1,0,0,1,0-2H21a1,1,0,0,1,0,2Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11,25H4a1,1,0,0,1,0-2h7a1,1,0,0,1,0,2Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9,11a3,3,0,1,1,3-3A3,3,0,0,1,9,11ZM9,7a1,1,0,1,0,1,1A1,1,0,0,0,9,7Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23,19a3,3,0,1,1,3-3A3,3,0,0,1,23,19Zm0-4a1,1,0,1,0,1,1A1,1,0,0,0,23,15Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13,27a3,3,0,1,1,3-3A3,3,0,0,1,13,27Zm0-4a1,1,0,1,0,1,1A1,1,0,0,0,13,23Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,17H25a1,1,0,0,1,0-2h3a1,1,0,0,1,0,2Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,25H15a1,1,0,0,1,0-2H28a1,1,0,0,1,0,2Z\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"frame\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-1\",\n height: 32,\n width: 32\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconFilter);\nexport default __webpack_public_path__ + \"static/media/icon-filter.48cb955dc14fde6ad22bd9ca1b3de416.svg\";\nexport { ForwardRef as ReactComponent };","import { forwardRef, useState } from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nfunction CustomInputDate({ onDateChange, disabled }) {\n const [dateRange, setDateRange] = useState([null, null]);\n const [startDate, endDate] = dateRange;\n\n const CustomInput = forwardRef(({ onClick }, ref) => (\n \n ));\n\n const handleOnChange = (date) => {\n setDateRange(date);\n onDateChange(date);\n };\n\n return (\n {\n handleOnChange(update);\n }}\n customInput={}\n withPortal\n />\n )\n}\n\nexport default CustomInputDate;\n","import moment from 'moment/moment';\nimport { useState } from 'react';\nimport IconFilter from '../../assets/images/icon-filter.svg';\nimport useComponentVisible from '../../hooks/useComponentVisible';\nimport CustomInputDate from './CustomInputDate';\nimport './FilterDate.css';\n\nconst rangeDate = [\n {\n label: 'Tất cả',\n slug: 'all',\n range: {}\n },\n {\n label: 'Hôm nay',\n slug: 'today',\n range: {\n startDate: moment().startOf('day').unix(),\n endDate: moment().unix()\n }\n },\n {\n label: 'Hôm qua',\n slug: 'yesterday',\n range: {\n startDate: moment().subtract(1, 'day').startOf('day').unix(),\n endDate: moment().subtract(1, 'day').endOf('day').unix()\n }\n },\n {\n label: '7 ngày qua',\n slug: 'last_7_days',\n range: {\n startDate: moment().subtract(7, 'days').startOf('day').unix(),\n endDate: moment().unix()\n }\n },\n {\n label: 'Tháng này',\n slug: 'this_month',\n range: {\n startDate: moment().startOf('month').unix(),\n endDate: moment().unix()\n }\n },\n {\n label: 'Tháng trước',\n slug: 'last_month',\n range: {\n startDate: moment().subtract(1, 'months').startOf('month').unix(),\n endDate: moment().subtract(1, 'months').endOf('month').unix()\n }\n },\n];\nfunction FilterDate({ onSelectDate, onSelect }) {\n\n const [range, setRange] = useState(rangeDate[0]);\n\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n\n const filterHandler = (slug) => {\n const currentRange = rangeDate.find(item => item.slug === slug);\n setRange(currentRange);\n setIsComponentVisible(false);\n onSelectDate(currentRange);\n };\n\n const handleDateChange = (range) => {\n if (range[1]) {\n setRange({\n label: moment(range[0]).format('DD/MM/YYYY') + ' - ' + moment(range[1]).format('DD/MM/YYYY'),\n slug: 'custom'\n });\n setIsComponentVisible(false);\n onSelectDate({\n label: 'Tùy chỉnh',\n slug: 'custom',\n range: {\n startDate: moment(range[0]).unix(),\n endDate: moment(range[1]).endOf('day').unix()\n }\n });\n }\n };\n\n return (\n <>\n
\n \n {range.slug !== 'all' && filterHandler('all')}>×}\n
\n
\n {rangeDate.map((item, index) => (\n filterHandler(item.slug)}\n >{item.label}\n ))}\n
\n \n
\n
\n \n )\n}\n\nexport default FilterDate;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgIconInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#999\",\n d: \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-2.033 16.01c.564-1.789 1.632-3.932 1.821-4.474.273-.787-.211-1.136-1.74.209l-.34-.64c1.744-1.897 5.335-2.326 4.113.613-.763 1.835-1.309 3.074-1.621 4.03-.455 1.393.694.828 1.819-.211.153.25.203.331.356.619-2.498 2.378-5.271 2.588-4.408-.146zm4.742-8.169c-.532.453-1.32.443-1.761-.022-.441-.465-.367-1.208.164-1.661.532-.453 1.32-.442 1.761.022.439.466.367 1.209-.164 1.661z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconInfo);\nexport default __webpack_public_path__ + \"static/media/icon-info.0226b4359660c1c8a37e9b3fe84d852b.svg\";\nexport { ForwardRef as ReactComponent };","import IconInfo from '../../assets/images/icon-info.svg';\nimport { useEffect, useState, useRef } from 'react';\nimport './Tooltip.css';\n\nfunction Tooltip({ trigger = 'click', content, title }) {\n const [isShow, setIsShow] = useState(false);\n const [position, setPosition] = useState('bottom');\n const [coordinates, setCoordinates] = useState({\n x: 0,\n y: 0\n });\n\n const refTooltip = useRef();\n\n const handleClickOutside = (event) => {\n if (refTooltip.current && !refTooltip.current.contains(event.target)) {\n setIsShow(false);\n }\n };\n\n const handleMouseIn = () => {\n setIsShow(true);\n };\n\n const handleMouseOut = () => {\n setIsShow(false);\n };\n\n const handleClick = (e) => {\n setIsShow(state => !state);\n const distanceX = window.innerWidth - e.clientX;\n let tooltipWrapperWidth = 350;\n if (window.innerWidth < 480) {\n tooltipWrapperWidth = 270;\n }\n if (distanceX < 180) {\n setPosition('left');\n setCoordinates({\n x: e.clientX - tooltipWrapperWidth - e.currentTarget.offsetWidth,\n y: e.clientY\n });\n } else {\n setCoordinates({\n x: e.clientX,\n y: e.clientY\n });\n }\n };\n\n useEffect(() => {\n const onScroll = () => setIsShow(false);\n \n document.addEventListener('click', handleClickOutside, true);\n document.addEventListener('scroll', onScroll, true);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n document.removeEventListener('scroll', onScroll, true);\n };\n }, []);\n\n return (\n
false}\n onMouseLeave={trigger === 'hover' ? handleMouseOut : () => false}\n onMouseDown={trigger === 'click' ? handleClick : () => false}\n ref={refTooltip}\n >\n \"\"\n { isShow && (\n
\n {title &&

{title}

}\n
{content}
\n
\n )}\n
\n )\n}\n\nexport default Tooltip;\n","import { Link } from 'react-router-dom';\nimport MyIcon from '../MyIcon/MyIcon';\nimport Tooltip from '../Tooltip/Tooltip';\nimport './CardHome.css';\n\nfunction CardHome({ iconName, iconColor = '#9fa6b2', title, text, link, tooltip, iconFill }) {\n return (\n
\n
\n
\n
\n

{title}

\n

{text}

\n
\n
\n {link && (\n
\n Chi tiết\n
\n )}\n {tooltip && \n \n }\n
\n )\n}\n\nexport default CardHome;\n","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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 * as React from \"react\";\n\nfunction SvgIconXls(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 102.5 122.88\",\n style: {\n enableBackground: \"new 0 0 102.5 122.88\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#08743B\",\n d: \"M69.78,0.72C69.3,0.29,68.62,0,67.95,0c-0.14,0-0.29,0-0.43,0.05l-61.42,0c-1.64,0-3.19,0.68-4.3,1.79 C0.68,2.95,0,4.45,0,6.14v110.65c0,1.69,0.68,3.19,1.79,4.3c1.11,1.11,2.61,1.79,4.3,1.79c31.03,0,59.35,0,90.22,0 c1.69,0,3.19-0.68,4.3-1.79c1.11-1.11,1.79-2.61,1.79-4.3V35.52c0.05-0.24,0.1-0.43,0.1-0.68c0-0.82-0.39-1.55-0.92-2.08 L70.12,0.92c-0.1-0.1-0.15-0.14-0.24-0.19H69.78L69.78,0.72z M48.51,83.75V48.86c0-1.49,1.2-2.69,2.73-2.69 c1.49,0,2.73,1.2,2.73,2.69v34.86l12.52-10.93c1.11-0.98,2.82-0.89,3.8,0.22c0.98,1.11,0.89,2.79-0.22,3.77L53.05,91.64 c-1.05,0.92-2.6,0.89-3.61-0.03L32.45,76.77c-1.11-0.98-1.24-2.66-0.22-3.77c0.98-1.11,2.69-1.2,3.8-0.22l12.52,10.93L48.51,83.75 L48.51,83.75z M65.19,5.51v23.83c0,2.27,0.92,4.35,2.42,5.85c1.5,1.5,3.58,2.42,5.85,2.42h23.39v79.19c0,0.15-0.05,0.34-0.19,0.43 c-0.1,0.1-0.24,0.19-0.43,0.19c-24.57,0-66.28,0-90.18,0c-0.15,0-0.34-0.05-0.43-0.19c-0.1-0.1-0.19-0.29-0.19-0.43V6.14 c0-0.19,0.05-0.34,0.19-0.43c0.1-0.1,0.24-0.19,0.43-0.19h59.1H65.19L65.19,5.51z M70.65,29.34V9.38l22.47,22.76H73.45 c-0.77,0-1.45-0.34-1.98-0.82C70.99,30.83,70.65,30.11,70.65,29.34L70.65,29.34z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconXls);\nexport default __webpack_public_path__ + \"static/media/icon-xls.bdaca94206c6cc3814d7019a4ead5de3.svg\";\nexport { ForwardRef as ReactComponent };","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","import xlsICON from '../../assets/images/icon-xls.svg';\nimport React from 'react';\nimport * as XLSX from 'xlsx';\nimport dashboardApi from '../../apis/dashboard-api';\n\nexport const ExportToExcel = ({ dateFilter }) => {\n const fileExtension = '.xlsx';\n\n const exportToCSV = (apiData, fileName) => {\n const ws = XLSX.utils.json_to_sheet(apiData);\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n XLSX.writeFile(wb, `${fileName ? fileName : 'all'}_${Date.now()}${fileExtension}`);\n };\n\n const downloadHandler = async () => {\n let dateType = '';\n if (dateFilter.range.startDate && dateFilter.range.endDate) {\n dateType = `${dateFilter.range.startDate},${dateFilter.range.endDate}`;\n }\n const { data } = await dashboardApi.getExportData(dateType);\n\n if (data.data) {\n exportToCSV(data.data, dateFilter.slug);\n } else {\n alert(data?.message);\n }\n };\n\n return (\n \n );\n};","import React, { useCallback, useEffect, useState } from 'react';\nimport moment from 'moment';\nimport GlobalStore from '../../stores/global-store';\nimport dashboardApi from '../../apis/dashboard-api';\nimport FilterDate from '../../components/FilterDate/FilterDate';\nimport CardHome from '../../components/Cards/CardHome';\nimport { storageGetItem } from '../../utils/local-storage';\nimport { USER_PROFILE } from '../../utils/storage-keys';\nimport './Home.css';\nimport { ExportToExcel } from '../../components/ExportToExcel/ExportToExcel';\n\nfunction Home() {\n const { setLoading, affID } = GlobalStore.useContainer();\n const [isLeader, setIsLeader] = useState(false);\n const [dataPayout, setDataPayout] = useState({});\n const [dataPayoutFiltered, setDataPayoutFiltered] = useState({});\n const [dataDashboard, setDataDashboard] = useState({});\n const [dataDashboardFiltered, setDataDashboardFiltered] = useState({});\n const [dataVisits, setDataVisits] = useState([]);\n const [dataVisitsFiltered, setDataVisitsFiltered] = useState([]);\n const [referralsCounting, setReferralsCounting] = useState({\n conversionRate: 0,\n unpaidReferrals: 0,\n paidReferrals: 0,\n isConverted: 0,\n expectedRevenue: 0,\n actualRevenue: 0,\n commissionRevenue: 0,\n actualCommission: 0,\n paidEarnings: 0,\n unPaidEarning: 0,\n visits: 0,\n referralsSucceed: 0\n });\n const [filterDate, setFilterDate] = useState({\n label: 'Tất cả',\n slug: 'all',\n range: {}\n });\n\n const userProfile = JSON.parse(storageGetItem(USER_PROFILE));\n\n const calcRevenuePercent = useCallback((contractType, month) => {\n switch (contractType) {\n case 'direct':\n if (isLeader && month > 30000000) {\n return 20;\n }\n return 17;\n default:\n if (isLeader && month > 30000000) {\n return 15;\n }\n return 12;\n }\n }, [isLeader]);\n\n useEffect(() => {\n async function getSummaryDashboard() {\n setLoading(true);\n const responseDashboard = await dashboardApi.getSummaryDashboard(affID);\n setDataDashboard(responseDashboard?.data?.dashboard);\n setDataDashboardFiltered(responseDashboard?.data?.dashboard);\n\n setDataPayout(responseDashboard?.data?.payouts);\n setDataPayoutFiltered(responseDashboard?.data?.payouts);\n\n setDataVisits(responseDashboard?.data?.visits || []);\n setDataVisitsFiltered(responseDashboard?.data?.visits || []);\n setLoading(false);\n }\n\n getSummaryDashboard();\n }, [setLoading]);\n\n const dashboardFilterHandler = (dateEntry) => {\n let payoutFilterTmp = [];\n let dashboardFilterTmp = [];\n let visitsFilterTmp = [];\n setFilterDate(dateEntry);\n\n if (dateEntry.slug !== 'all') {\n const dateRange = {\n startDate: dateEntry.range.startDate,\n endDate: dateEntry.range.endDate\n };\n\n payoutFilterTmp = dataPayout?.leads.filter(row => {\n return filterRangeDate(dateRange, row.order_date);\n });\n\n dashboardFilterTmp = dataDashboard?.data.filter(row => {\n return filterRangeDate(dateRange, row.date);\n });\n\n if (dataVisits.length > 0) {\n visitsFilterTmp = dataVisits.filter(row => {\n return filterRangeDate(dateRange, row.date);\n });\n }\n setDataPayoutFiltered(state => ({\n ...state,\n leads: payoutFilterTmp\n }));\n setDataDashboardFiltered(state => ({\n ...state,\n data: dashboardFilterTmp\n }));\n setDataVisitsFiltered(visitsFilterTmp);\n } else {\n setDataPayoutFiltered(dataPayout);\n setDataDashboardFiltered(dataDashboard);\n setDataVisitsFiltered(dataVisits);\n }\n };\n\n useEffect( () => {\n if (dataDashboard?.team_data && dataDashboard?.team_data.length) {\n setIsLeader(true);\n }\n }, [dataDashboard, setIsLeader] );\n\n useEffect(() => {\n let sumTotalEarnings = 0;\n let sumUnPaidEarnings = 0;\n const affiliateUnPayoutMonths = [];\n const affiliatePayoutMonths = [];\n\n if (dataPayoutFiltered && dataPayoutFiltered.leads) {\n const unpaidReferrals = dataPayoutFiltered.leads.filter(item => {\n return item.status === 'Unpaid';\n }).length;\n\n const paidReferrals = dataPayoutFiltered.leads.filter(item => {\n return item.status === 'Paid';\n }).length;\n\n for (let value of dataPayoutFiltered.leads) {\n if (value.status === 'Unpaid') {\n let date = new Date(value.date);\n let month = moment(date).subtract(1, 'month').startOf('month').format('YYYYMMDD');\n if (affiliateUnPayoutMonths[month]) {\n affiliateUnPayoutMonths.push({\n amount: affiliateUnPayoutMonths[month] + value.amount\n });\n } else {\n affiliateUnPayoutMonths.push({\n amount: value.amount\n });\n }\n }\n }\n\n for (let value of dataPayoutFiltered.leads) {\n let date = new Date(value.date);\n let month = moment(date).subtract(1, 'month').startOf('month').format('YYYYMMDD');\n if (affiliatePayoutMonths[month]) {\n affiliatePayoutMonths.push({\n amount: affiliatePayoutMonths[month] + value.amount\n });\n } else {\n affiliatePayoutMonths.push({\n amount: value.amount\n });\n }\n }\n\n if (affiliateUnPayoutMonths.length > 0) {\n for (let i = 0; i < affiliateUnPayoutMonths.length; i++) {\n const percent = calcRevenuePercent(dataPayoutFiltered.contract_type, affiliateUnPayoutMonths[i].amount);\n sumUnPaidEarnings += (affiliateUnPayoutMonths[i].amount * percent / 100);\n }\n }\n\n if (affiliatePayoutMonths.length > 0) {\n for (let i = 0; i < affiliatePayoutMonths.length; i++) {\n const percent = calcRevenuePercent(dataPayoutFiltered.contract_type, affiliatePayoutMonths[i].amount);\n sumTotalEarnings += (affiliatePayoutMonths[i].amount * percent / 100);\n }\n }\n\n setReferralsCounting(state => ({\n ...state,\n unpaidReferrals,\n paidReferrals,\n unPaidEarning: sumUnPaidEarnings,\n paidEarnings: sumTotalEarnings\n }));\n }\n\n }, [dataPayoutFiltered, calcRevenuePercent]);\n\n useEffect(() => {\n let affiliateDashboardMonths = [];\n let isConverted = 0;\n let expectedRevenue = 0;\n let actualRevenue = 0;\n let commissionRevenue = 0;\n let actualCommission = 0;\n let referralsSucceed = 0;\n\n if (dataDashboardFiltered && dataDashboardFiltered.data) {\n for (let value of dataDashboardFiltered.data) {\n if (value.is_converted === true && value.deal_stage === 'Closed Won') {\n isConverted++;\n }\n\n if (value.deal_stage === 'Closed Won' || value.deal_stage === 'Proposal') {\n expectedRevenue += value.lead_amount;\n\n let date = new Date(value.payout_date);\n let month = moment(date).subtract(1, 'month').startOf('month').format('YYYYMMDD');\n if (affiliateDashboardMonths[month]) {\n affiliateDashboardMonths.push({\n amount: affiliateDashboardMonths[month] + value.lead_amount\n });\n } else {\n affiliateDashboardMonths.push({\n amount: value.lead_amount\n });\n }\n }\n\n if (value.deal_stage === 'Closed Won') {\n actualRevenue += value.lead_amount;\n referralsSucceed++;\n if (affiliateDashboardMonths.length > 0) {\n for (let i = 0; i < affiliateDashboardMonths.length; i++) {\n const percent = calcRevenuePercent(dataDashboardFiltered.contract_type, affiliateDashboardMonths[i].amount);\n actualCommission += (affiliateDashboardMonths[i].amount * percent / 100);\n }\n }\n }\n }\n\n if (affiliateDashboardMonths.length > 0) {\n for (let i = 0; i < affiliateDashboardMonths.length; i++) {\n const percent = calcRevenuePercent(dataDashboardFiltered.contract_type, affiliateDashboardMonths[i].amount);\n commissionRevenue += (affiliateDashboardMonths[i].amount * percent / 100);\n }\n }\n }\n\n setReferralsCounting(state => ({\n ...state,\n conversionRate: (Math.round((isConverted / dataDashboardFiltered?.data?.length) * 100) / 10 * 10) || 0,\n expectedRevenue,\n actualRevenue,\n commissionRevenue,\n actualCommission,\n referralsSucceed\n }));\n }, [dataDashboardFiltered, calcRevenuePercent]);\n\n const filterRangeDate = (dateRange, entryDate) => {\n let filterPass = true;\n const date = moment(entryDate).unix();\n if (dateRange.startDate) {\n filterPass = filterPass && (dateRange.startDate <= date);\n }\n if (dateRange.endDate) {\n filterPass = filterPass && (dateRange.endDate >= date);\n }\n return filterPass;\n };\n\n return (\n
\n
\n
\n \n \n
\n
\n\n
\n\n

Xin chào, {userProfile.display_name}!

\n\n
\n

Lượt giới thiệu

\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n
\n
\n\n
\n

Doanh thu sản phẩm

\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n
\n
\n\n
\n

Thanh toá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 Home;\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst referralsApi = {\n getReferrals: async (affID, module_name = 'referrals') => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default referralsApi;\n","import React from 'react'\n\nfunction FilterStatus({ onSelectStatus }) {\n\n const filterHandler = (event) => {\n onSelectStatus(event.target.value);\n };\n\n return (\n <>\n \n \n \n \n \n \n )\n}\n\nexport default FilterStatus\n","import React, { useEffect, useState } from 'react';\nimport GlobalStore from '../../stores/global-store';\nimport referralsApi from '../../apis/referrals-api';\nimport FilterStatus from '../../components/FilterStatus/FilterStatus';\nimport './Referral.css';\n\nfunction Referral() {\n const {setLoading, affID} = GlobalStore.useContainer();\n const [referrals, setReferrals] = useState([]);\n const [referralsFiltered, setReferralsFiltered] = useState([]);\n\n useEffect( () => {\n async function getAllReferrals() {\n setLoading(true);\n const response = await referralsApi.getReferrals(affID);\n setReferrals(response.data.referrals || []);\n setReferralsFiltered(response.data.referrals || []);\n setLoading(false);\n }\n\n getAllReferrals();\n }, [setLoading]);\n\n const referralsFilterStatus = (status) => {\n let referralsFiltered = [];\n if (status === 'success') { \n referralsFiltered = referrals.filter(item => item.status );\n } else if (status === 'fail') {\n referralsFiltered = referrals.filter(item => !item.status );\n } else {\n referralsFiltered = referrals;\n }\n setReferralsFiltered(referralsFiltered)\n }\n\n return (\n
\n
\n

Lượt giới thiệu

\n \n
\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n { referralsFiltered.length > 0 && (\n referralsFiltered.map(item => (\n \n \n \n \n \n \n \n \n \n \n ))\n )}\n { referralsFiltered.length === 0 && (\n \n \n \n )}\n \n
Mã đơn hàngTên khách hàngTrạng tháiGiá trị đơn hàngGiá trị đơn hàng thành côngNgười xử lý đơn hàngNgày mua hàngNgày đã thanh toán
{ item.lead_id }{ item.customer_name }{ item.status ? 'Thành công' : 'Không thành công' }{ item.lead_amount.toLocaleString() }{ item.deal_amount.toLocaleString() }{ item.deal_owner }{ item.date }{ item.deal_closing_date }
Chưa có dữ liệu
\n
\n
\n )\n}\n\nexport default Referral;\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst urlsApi = {\n getUrls: async (affID, module_name = 'urls') => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default urlsApi;\n","import React, { useEffect, useState } from 'react';\nimport GlobalStore from '../../stores/global-store';\nimport urlsApi from '../../apis/urls-api';\nimport './Url.css';\nimport getAffiliateId from '../../utils/get_affiliate_id';\n\nfunction Url() {\n const affiliate_id = getAffiliateId();\n const {setLoading, affID} = GlobalStore.useContainer();\n const [url, setUrl] = useState('');\n const [campaign, setCampaign] = useState('');\n var [link, setLink] = useState(url + '?ref=' + affiliate_id);\n\n useEffect(() => {\n async function getUrls() {\n setLoading(true);\n const responseUrls = await urlsApi.getUrls(affID);\n setUrl(responseUrls.data.urls);\n setLoading(false);\n }\n getUrls();\n }, [setLoading]);\n\n useEffect(() => {\n if (campaign.trim() !== '') {\n setLink(url + '?campaign=' + campaign + '&ref=' + affiliate_id);\n } else {\n setLink(url + '?ref=' + affiliate_id);\n }\n }, [campaign, url, affiliate_id]);\n\n const handleUrl = (e) => {\n if (e.target.value.trim() !== '') {\n setUrl(e.target.value);\n }\n }\n\n const handleCampaign = (e) => {\n setCampaign(e.target.value);\n };\n\n const copyLink = async (e) => {\n var link = document.getElementsByClassName('link')\n await navigator.clipboard.writeText(link[e.target.getAttribute('index')]?.textContent || '');\n e.target.innerHTML = 'Copied';\n };\n\n return (\n
\n
\n

Link giới thiệu

\n
\n {url && url !== 'none' && (\n
\n
\n
\n

Link Giới Thiệu

\n

Chia sẻ link giới thiệu của bạn đến khách hàng để nhận hoa hồng.

\n
\n
\n
\n
\n
\n \n \n https://vn.elsaspeak.com/affiliates-vnaff/ \n
\n Copy link\n
\n
\n
\n
\n\n
\n\n
\n
\n

Công Cụ Tạo Link Giới Thiệu

\n

Điền thông tin vào công cụ này để tạo link giới thiệu cụ thể.

\n
\n
\n
\n
\n

Địa Chỉ Trang Cần Giới Thiệu

\n
\n \n
\n
\n
\n

Tên Chiến Dịch

\n

Điền tên chiến dịch để theo dõi nguồn chuyển đổi.

\n
\n \n
\n
\n
\n

Link Giới Thiệu Được Tạo

\n

Chia sẻ link giới thiệu này đến khách hàng của bạn.

\n
\n
\n \n \n {link}\n
\n Copy link\n
\n
\n
\n
\n
\n
\n )}\n\n {url === 'none' && (\n

Link giới thiệu sẽ được sẵn sàng khi hợp đồng được ký kết thành công

\n )}\n
\n );\n}\n\nexport default Url;\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst payoutsApi = {\n getPayouts: async (affID, module_name = 'payouts') => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default payoutsApi;\n","import moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport GlobalStore from '../../stores/global-store';\nimport payoutsApi from '../../apis/payouts-api';\nimport FilterDate from '../../components/FilterDate/FilterDate';\n\nfunction Payout() {\n const {setLoading, affID} = GlobalStore.useContainer();\n const [dataPayout, setDataPayout] = useState([]);\n const [dataPayoutFiltered, setDataPayoutFiltered] = useState([]);\n\n useEffect(() => {\n async function getPayoutsData() {\n setLoading(true);\n const responseDashboard = await payoutsApi.getPayouts(affID);\n setDataPayout(responseDashboard?.data?.payouts);\n setDataPayoutFiltered(responseDashboard?.data?.payouts);\n setLoading(false);\n }\n\n getPayoutsData();\n }, [setLoading]);\n\n const payoutsFilterHandler = (dateEntry) => {\n let payoutFilterTmp = [];\n\n if (dateEntry.slug !== 'all') {\n const dateRange = {\n startDate: dateEntry.range.startDate,\n endDate: dateEntry.range.endDate\n };\n payoutFilterTmp = dataPayout.filter(row => {\n return filterRangeDate(dateRange, row.order_date);\n });\n setDataPayoutFiltered(payoutFilterTmp);\n } else {\n setDataPayoutFiltered(dataPayout);\n }\n };\n\n const filterRangeDate = (dateRange, entryDate) => {\n let filterPass = true;\n const date = moment(entryDate).unix();\n if (dateRange.startDate) {\n filterPass = filterPass && (dateRange.startDate <= date);\n }\n if (dateRange.endDate) {\n filterPass = filterPass && (dateRange.endDate >= date);\n }\n return filterPass;\n };\n\n return (\n
\n
\n

Thanh toán

\n \n
\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n { dataPayoutFiltered?.length > 0 && (\n dataPayoutFiltered.map((item, index) => (\n \n \n \n \n \n \n ))\n )}\n \n
Ngày mua hàngGiá trị đơn hàngHình thức thanh toánTrạng thái
{moment(item.order_date).format('DD/MM/YYYY')}{item.amount ? item.amount.toLocaleString() : ''}{item.payout_method}{item.status}
\n
\n
\n )\n}\n\nexport default Payout;\n","import axiosClient from './axios-client';\nimport getAffiliateId from '../utils/get_affiliate_id';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst visitsApi = {\n getVisits: async (affID, page = 1, module_name = 'visits') => {\n const affiliate_id = getAffiliateId();\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('page', page);\n data.append('affiliate_id', affiliate_id || affID);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default visitsApi;\n","import moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport GlobalStore from '../../stores/global-store';\nimport visitsApi from '../../apis/visits-api';\nimport Loading from '../../components/Loading/Loading';\nimport './Visit.css';\n\nfunction Visit() {\n const [visits, setVisits] = useState([]);\n const { setLoading, affID } = GlobalStore.useContainer();\n const [totalPage, setTotalPage] = useState(1);\n const [currentPage, setCurrentPage] = useState(1);\n const [isChangePage, setIsChangePage] = useState(false);\n\n useEffect(() => {\n async function getVisits() {\n setLoading(true);\n const responseVisits = await visitsApi.getVisits(affID);\n setVisits(responseVisits.data?.visits);\n setTotalPage(responseVisits.data?.total);\n setCurrentPage(responseVisits.data?.page);\n setLoading(false);\n }\n\n getVisits();\n }, [setLoading]);\n\n const trimReferralLink = (link) => {\n if (link === '') {\n return '';\n }\n\n const linkPeaces = link.split('/');\n return '.../' + linkPeaces[linkPeaces.length - 2] + '/';\n };\n\n const handlePaginationClick = async (index) => {\n setIsChangePage(true);\n setCurrentPage(index);\n const responseVisits = await visitsApi.getVisits(affID, index);\n setVisits(responseVisits.data?.visits);\n setIsChangePage(false);\n }\n\n const handleNext = async () => {\n if (currentPage === totalPage) return;\n setIsChangePage(true);\n setCurrentPage(currentPage + 1);\n const responseVisits = await visitsApi.getVisits(affID, currentPage + 1);\n setVisits(responseVisits.data?.visits);\n setIsChangePage(false);\n }\n\n const handlePrev = async () => {\n if (currentPage === 1) return;\n setIsChangePage(true);\n setCurrentPage(currentPage - 1);\n const responseVisits = await visitsApi.getVisits(affID, currentPage - 1);\n setVisits(responseVisits.data?.visits);\n setIsChangePage(false);\n }\n\n const pagination = [];\n\n for (let i = 1; i <= totalPage; i++) {\n pagination.push(
  • );\n }\n\n return (\n
    \n

    Lượng truy cập

    \n \n \n \n \n \n \n \n \n \n {!isChangePage && visits && visits.length > 0 && (\n visits.map(visit => (\n \n \n \n \n \n ))\n )}\n {visits?.data?.status === 404 && (\n \n \n \n )}\n {isChangePage &&\n \n \n \n }\n \n
    LinkLink giới thiệuNgày truy cập
    {trimReferralLink(visit.url)}{visit.referral || 'Direct traffic'}{moment(visit.date).add(7, 'hours').format('DD/MM/YYYY H:m')}
    Chưa có dữ liệu
    \n {totalPage > 1 &&\n \n }\n
    \n )\n}\n\nexport default Visit;\n","import axiosClient from './axios-client';\n\nconst URL = '/wp-admin/admin-ajax.php';\n\nconst creativesApi = {\n getCreatives: async (module_name = 'creatives') => {\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('module', module_name);\n data.append('affiliate_id', '');\n const response = await axiosClient.post(URL, data);\n return response;\n },\n}\n\nexport default creativesApi;\n","import getAffiliateId from '../../utils/get_affiliate_id';\nimport MyIcon from '../MyIcon/MyIcon';\nimport './CardCreative.css';\n\nfunction CardCreative({ creative, onCopy, onView }) {\n const affiliate_id = getAffiliateId();\n const code = `
    \"${creative.name}\"`;\n\n return (\n
    \n
    \n {creative?.name}\n
    \n
    \n \n \n
    \n
    \n )\n}\n\nexport default CardCreative;\n","import getAffiliateId from '../../utils/get_affiliate_id';\n\nfunction ModalCreative({ creative, onCloseModal }) {\n const affiliate_id = getAffiliateId();\n\n return (\n
    \n
    \n
    \n
    \n
    {creative.name}
    \n \n
    \n
    \n
    \n
    \n

    Preview

    \n
    {creative.name}
    \n
    \n

    Code

    \n
    \n
    {`\"${creative.name}\"`}
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default ModalCreative\n","import React, { useEffect, useState } from 'react';\nimport creativesApi from '../../apis/creatives-api';\nimport GlobalStore from '../../stores/global-store';\nimport CardCreative from '../../components/Cards/CardCreative';\nimport ModalCreative from '../../components/Modals/ModalCreative';\nimport './Creative.css';\n\nfunction Creative() {\n const {setLoading} = GlobalStore.useContainer();\n const [creatives, setCreatives] = useState([]);\n const [creativeDetail, setCreativeDetail] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n\n useEffect(() => {\n async function getCreatives() {\n setLoading(true);\n const responseCreatives = await creativesApi.getCreatives();\n setCreatives(responseCreatives.data?.creatives || []);\n setLoading(false);\n }\n\n getCreatives();\n }, [setLoading]);\n\n const viewHandler = (creative_id) => {\n const creative = creatives.filter(item => item.creative_id === creative_id);\n setCreativeDetail(creative[0]);\n setModalOpen(true);\n };\n\n const copyHandler = (e, code) => {\n navigator.clipboard.writeText(code);\n setTimeout(() => {\n e.target.innerText = 'Copied';\n }, 100);\n };\n\n return (\n
    \n

    Hình ảnh chiến dịch

    \n
    \n {creatives.length > 0 && (\n creatives.map(item => (\n
    \n copyHandler(e)}\n onView={() => viewHandler(item.creative_id)}\n />\n
    \n ))\n )}\n
    \n\n {modalOpen && (\n setModalOpen(false)}\n />\n )}\n
    \n )\n}\n\nexport default Creative;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","import axiosClient from './axios-client';\nimport env from '../utils/env';\n\nconst loginApi = {\n login: async (formData) => {\n const url = '/wp-admin/admin-ajax.php';\n const response = await axiosClient.post(url, formData);\n return response;\n },\n\n searchUser: async (data) => {\n const url = '/wp-admin/admin-ajax.php';\n const response = await axiosClient.post(url, data);\n return response;\n },\n\n getAffiliateByUserID: async (userID) => {\n const config = env();\n const response = await axiosClient.get(`/wp-json/affwp/v1/affiliates/?user_id=${userID}`, {\n headers: {\n Authorization: 'Basic ' + window.btoa(`${config.affiliatePublicKey}:${config.affiliateToken}`)\n }\n });\n return response;\n }\n}\n\nexport default loginApi;\n","import { useState, createRef } from 'react';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport loginApi from '../../apis/login-api';\nimport GlobalStore from '../../stores/global-store';\nimport elsaLogo from '../../assets/images/elsa-logo-black.svg';\nimport elsaloginpic from '../../assets/images/elsa-login-pic.png';\nimport CryptoJS from 'crypto-js';\nimport './Login.css';\nimport env from '../../utils/env';\nimport { storageSetItem } from '../../utils/local-storage';\nimport { REMEMBER_AUTH } from '../../utils/storage-keys';\n\nfunction Login() {\n\n const { storeSession, setAffID } = GlobalStore.useContainer();\n const recaptchaRef = createRef();\n const [usernameInput, setUsernameInput] = useState('');\n const [passwordInput, setPasswordInput] = useState('');\n const [rememberMe, setRememberMe] = useState(false);\n const [error, setError] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const config = env();\n\n const loginSubmit = async (e) => {\n e.preventDefault();\n const data = new FormData();\n const recaptcha = await recaptchaRef.current.executeAsync(); \n recaptchaRef.current.reset();\n data.append('username', usernameInput);\n data.append('password', passwordInput);\n data.append('g-recaptcha', recaptcha);\n data.append('action', 'affiliate_login');\n try {\n if (usernameInput.trim() && passwordInput.trim()) {\n setIsLoading(true);\n const response = await loginApi.login(data);\n if (response.data) {\n const date = new Date();\n const dataResponse = JSON.parse(response.data);\n const userFormData = new FormData();\n userFormData.append('username', usernameInput);\n userFormData.append('action', 'get_user_by');\n const userData = await loginApi.searchUser(userFormData);\n const userID = await userData.data.user_id;\n const userMetaData = {\n avatar_url: userData.data.avatar_url,\n display_name: userData.data.display_name\n }\n const { data } = await loginApi.getAffiliateByUserID(userID);\n if (data.length && userID) {\n if (rememberMe) {\n storageSetItem(REMEMBER_AUTH, 'forever');\n }\n setAffID(data[0].affiliate_id.toString());\n const encryptedAffiliateId = CryptoJS.AES.encrypt(data[0].affiliate_id.toString(), config.affiliateToken).toString();\n storeSession(\n dataResponse.jwt_token,\n new Date(date.setDate(date.getDate() + 1)),\n encryptedAffiliateId,\n JSON.stringify(userMetaData),\n data[0].status\n );\n }\n }\n } else {\n setError({\n data: {\n error_description: 'Vui lòng nhập username/password.'\n }\n });\n }\n } catch({ response }) {\n if (response) {\n setError(JSON.parse(response?.data));\n }\n setPasswordInput('');\n }\n setIsLoading(false);\n };\n\n return (\n
    \n
    \n
    \n
    \n \"Elsa\n
    \n

    Chào mừng bạn đến với công cụ Affiliate của ELSA

    \n

    \n Đăng nhập vào tài khoản của bạn\n

    \n
    \n
    \n \n {\n setUsernameInput(e.target.value);\n setError(null);\n }} />\n
    \n
    \n \n {\n setPasswordInput(e.target.value);\n setError(null);\n }} />\n
    \n { error && (\n

    {error?.error_description}

    \n )}\n {!error && (\n

    Server đang bận. Xin vui lòng quay lại sau!

    \n )}\n

    setRememberMe(!rememberMe)} id=\"rememberme\" />

    \n \n

    \n

    Quên mật khẩu

    \n \n
    \n
    \n
    \n
    \n \"\"\n

    \n ELSA SPEAK - APP HỌC NÓI TIẾNG ANH BẰNG A.I.\n

    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default Login;","import React from 'react';\n\nfunction NotFound() {\n return (\n
    Page not found
    \n )\n}\n\nexport default NotFound;\n","import { Link } from 'react-router-dom';\nimport elsaLogo from '../assets/images/elsa-logo-black.svg';\nimport elsaloginpic from '../assets/images/elsa-login-pic.png';\nimport env from '../utils/env';\n\nfunction UserPending() {\n const config = env();\n\n return (\n
    \n
    \n
    \n
    \n \"Elsa\n
    \n

    Chào mừng bạn đến với công cụ Affiliate của ELSA

    \n
    \n
    \n
    Tài khoản cộng tác viên của bạn đang chờ phê duyệt
    \n

    \n Quay lại trang chủ hoặc đăng nhập với tài khoản khác\n

    \n
    \n
    \n
    \n
    \n
    \n
    \n \"\"\n

    \n ELSA SPEAK - APP HỌC NÓI TIẾNG ANH BẰNG A.I.\n

    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default UserPending;\n","import axios from 'axios';\nimport getAffiliateId from '../utils/get_affiliate_id';\nimport axiosClient from './axios-client';\nimport env from '../utils/env';\n\nconst URL = '/wp-admin/admin-ajax.php';\nconst affiliate_id = getAffiliateId();\n\nconst profileApi = {\n uploadPhoto: async (file, affID = affiliate_id) => {\n const data = new FormData();\n data.append('action', 'file_upload');\n data.append('affiliate_id', affiliate_id || affID);\n data.append('file', file);\n const response = await axiosClient.post(URL, data);\n return response;\n },\n getAffiliateById: async (affID = affiliate_id) => {\n const config = env();\n const response = await axios.get(`${config.serverAPI}/e/vn_affiliate_program/${affiliate_id || affID}`);\n return response;\n },\n updateAffiliateProfile: async (profile, affID = affiliate_id) => {\n const profileUpdated = {\n affiliate_id: +affiliate_id || +affID,\n ...profile\n }\n const data = new FormData();\n data.append('action', 'affiliate_dashboard');\n data.append('affiliate_id', affiliate_id);\n data.append('profile', JSON.stringify(profileUpdated));\n const response = await axiosClient.post(URL, data);\n return response;\n }\n}\n\nexport default profileApi;\n","import { useEffect, useRef } from 'react';\nimport { useState } from 'react';\nimport profileApi from '../../apis/profile-api';\nimport Loading from '../../components/Loading/Loading';\nimport './Profile.css';\nimport GlobalStore from '../../stores/global-store';\n\nconst initialValues = {\n bankName: '',\n bankAccountNo: '',\n bankAccountName: '',\n bankAccountBranch: '',\n frontSide: '',\n backSide: '',\n dateIssued: '',\n placeIssued: '',\n taxCode: '',\n idCode: '',\n phone: '',\n address: ''\n};\n\nconst listBanks = [\n { label: 'NH NN&PT Nông thôn Việt Nam', name: 'Agribank' },\n { label: 'NH TNHH MTV Dầu khí toàn cầu', name: 'OceanBank' },\n { label: 'NH TNHH MTV Đại Dương', name: 'GPBank' },\n { label: 'NH TNHH MTV Xây dựng', name: 'CB' },\n { label: 'NH TMCP Công thương Việt Nam', name: 'VietinBank' },\n { label: 'NH TMCP Đầu tư và Phát triển Việt Nam', name: 'BIDV' },\n { label: 'NH TMCP Ngoại Thương Việt Nam', name: 'Vietcombank' },\n { label: 'NH TMCP Á Châu', name: 'ACB' },\n { label: 'NH TMCP An Bình', name: 'ABBANK' },\n { label: 'NH TMCP Bản Việt', name: 'Viet Capital Bank' },\n { label: 'NH TMCP Bảo Việt', name: 'BAOVIET Bank' },\n { label: 'NH TMCP Bắc Á', name: 'Bac A Bank' },\n { label: 'NH TMCP Bưu điện Liên Việt', name: 'LienVietPostBank' },\n { label: 'NH TMCP Đại Chúng Việt Nam', name: 'PVcomBank' },\n { label: 'NH TMCP Đông Á', name: 'DongA Bank' },\n { label: 'NH TMCP Đông Nam Á', name: 'SeABank' },\n { label: 'NH TMCP Hàng Hải', name: 'MSB' },\n { label: 'NH TMCP Kiên Long', name: 'Kienlongbank' },\n { label: 'NH TMCP Kỹ Thương', name: 'Techcombank' },\n { label: 'NH TMCP Nam Á', name: 'Nam A Bank' },\n { label: 'NH TMCP Phương Đông', name: 'OCB' },\n { label: 'NH TMCP Quân Đội', name: 'MB' },\n { label: 'NH TMCP Quốc Tế', name: 'VIB' },\n { label: 'NH TMCP Quốc dân', name: 'NCB' },\n { label: 'NH TMCP Sài Gòn', name: 'SCB' },\n { label: 'NH TMCP Sài Gòn Công Thương', name: 'SAIGONBANK' },\n { label: 'NH TMCP Sài Gòn – Hà Nội', name: 'SHB' },\n { label: 'NH TMCP Sài Gòn Thương Tín', name: 'Sacombank' },\n { label: 'NH TMCP Tiên Phong', name: 'TPBank' },\n { label: 'NH TMCP Việt Á', name: 'VietABank' },\n { label: 'NH TMCP Việt Nam Thịnh Vượng', name: 'VPBank' },\n { label: 'NH TMCP Việt Nam Thương Tín', name: 'Vietbank' },\n { label: 'NH TMCP Xăng dầu', name: 'Petrolimex PG Bank' },\n { label: 'NH TMCP Xuất Nhập Khẩu', name: 'Eximbank' },\n { label: 'NH TMCP Phát triển Thành phố Hồ Chí Minh', name: 'HDBank' },\n { label: 'NH Chính sách xã hội Việt Nam', name: 'VBSP' },\n { label: 'NH Phát triển Việt Nam', name: 'VDB' },\n { label: 'NH TNHH Indovina', name: 'IVB' },\n { label: 'NH Liên doanh Việt Nga', name: 'VRB' },\n { label: 'NH Hợp tác xã Việt Nam', name: 'Co-opBank' },\n { label: 'NH TNHH MTV ANZ Việt Nam', name: 'ANZVL' },\n { label: 'NH TNHH MTV Hong Leong Việt Nam', name: 'HLBVN' },\n { label: 'NH TNHH MTV HSBC Việt Nam', name: 'HSBC' },\n { label: 'NH TNHH MTV Shinhan Việt Nam', name: 'SHBVN' },\n { label: 'NH TNHH MTV Standard Chartered Việt Nam', name: 'SCBVL' },\n { label: 'NH TNHH MTV Public Bank Việt Nam', name: 'PBVN' },\n { label: 'NH TNHH MTV CIMB Việt Nam', name: 'CIMB' },\n { label: 'NH TNHH MTV Woori Việt Nam', name: 'Woori' }\n];\n\nfunction Profile() {\n const { affID } = GlobalStore.useContainer();\n const [isFrontUloading, setIsFrontUploading] = useState(false);\n const [isBackUloading, setIsBackUploading] = useState(false);\n const [profile, setProfile] = useState(initialValues);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [status, setStatus] = useState(null);\n const frontSideRef = useRef();\n const backSideRef = useRef();\n\n useEffect(() => {\n async function getAffiliate() {\n const { data } = await profileApi.getAffiliateById(affID);\n if (data) {\n setProfile({\n bankName: data.bank_name,\n bankAccountNo: data.bank_account_no,\n bankAccountName: data.bank_account_name,\n bankAccountBranch: data.bank_account_branch,\n frontSide: data.id_image_1,\n backSide: data.id_image_2,\n dateIssued: data.date_issued,\n placeIssued: data.place_issued,\n taxCode: data.tax_code,\n idCode: data.id_code,\n phone: data.phone,\n address: data.shipping_street\n });\n } else {\n alert('Máy chủ đang bận.');\n }\n }\n\n getAffiliate();\n }, []);\n\n const handleUpload = async (e) => {\n const file = e.target.files[0];\n const identifer = e.target.getAttribute('id');\n if (identifer === 'front-side') {\n setIsFrontUploading(true);\n } else {\n setIsBackUploading(true);\n }\n\n try {\n const { data } = await profileApi.uploadPhoto(file, affID);\n if (data.status) {\n if (identifer === 'front-side') {\n setProfile({\n ...profile,\n frontSide: data.data.url\n });\n setIsFrontUploading(false);\n } else {\n setProfile({\n ...profile,\n backSide: data.data.url\n });\n setIsBackUploading(false);\n }\n } else {\n alert('Không thể upload file. ' + data.data);\n e.target.value = null;\n setIsFrontUploading(false);\n setIsBackUploading(false);\n }\n } catch (e) {\n setIsFrontUploading(false);\n setIsBackUploading(false);\n e.target.value = null;\n throw new Error(e);\n }\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const isValid = validateForm(event);\n if (isValid) {\n setIsSubmitting(true);\n const payload = {\n tax_code: profile.taxCode,\n id_code: profile.idCode,\n id_image_1: profile.frontSide,\n id_image_2: profile.backSide,\n date_issued: profile.dateIssued,\n place_issued: profile.placeIssued,\n bank_name: profile.bankName,\n bank_account_no: profile.bankAccountNo,\n bank_account_name: profile.bankAccountName,\n bank_account_branch: profile.bankAccountBranch,\n phone: profile.phone,\n shipping_street: profile.address,\n }\n const { data } = await profileApi.updateAffiliateProfile(payload, affID);\n if (data?.profile?.affiliate_id) {\n setIsSubmitting(false);\n setStatus({\n code: 202,\n msg: 'Cập nhật thành công'\n });\n setTimeout(() => {\n window.location.href = '/affiliate-area-dashboard';\n }, 500);\n } else {\n setStatus({\n code: 500,\n msg: 'Cập nhật không thành công. Xin vui lòng thử lại!'\n });\n setIsSubmitting(false);\n }\n }\n };\n\n const handleChange = (event) => {\n const { name, value } = event.target;\n setProfile({\n ...profile,\n [name]: value\n });\n setStatus(null);\n event.target.classList.remove('is-invalid');\n };\n\n const validateForm = (e) => {\n if (!validateNumber(profile.taxCode)) {\n e.target.taxCode.classList.add('is-invalid');\n e.target.taxCode.focus();\n return false;\n } else if (!validateNumber(profile.idCode)) {\n e.target.idCode.classList.add('is-invalid');\n e.target.idCode.focus();\n return false;\n } else if (!validatePhoneNumber(profile.phone)) {\n e.target.phone.classList.add('is-invalid');\n e.target.phone.focus();\n return false;\n } else if (!profile.frontSide || !profile.backSide) {\n alert('Vui lòng chọn hình CMND/Passport');\n return false;\n }\n return true;\n };\n\n const validatePhoneNumber = (phone) => {\n const reg = /(84|0)+([0-9]{9})\\b/;\n return reg.test(String(phone).toLowerCase());\n };\n\n const validateNumber = (number) => {\n const reg = /^\\d+$/;\n return reg.test(number);\n };\n\n const validateRequired = (e) => {\n if (e.target.value === '') {\n e.target.classList.add('is-invalid');\n e.target.focus();\n }\n }\n\n return (\n
    \n

    Cập nhật profile

    \n

    Vui lòng điền thông tin chính xác để ELSA có thể tiến hành thanh toán cho bạn

    \n
    \n
    \n
    \n

    Phương thức thanh toán

    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    Thông tin bắt buộc!
    \n
    \n
    \n \n \n
    Thông tin bắt buộc!
    \n
    \n
    \n \n \n
    Thông tin bắt buộc!
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    Thông tin cá nhân

    \n
    \n
    \n
    \n
    \n \n {\n if (!validateNumber(e.target.value)) {\n e.target.classList.add('is-invalid');\n e.target.focus();\n }\n }} required />\n
    Mã số thuế không hợp lệ!
    \n
    \n
    \n \n {\n if (!validateNumber(e.target.value)) {\n e.target.classList.add('is-invalid');\n e.target.focus();\n }\n }} required />\n
    CMND/Passport không hợp lệ!
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n

    Mặt trước

    \n {!profile.frontSide && (\n \n )}\n {profile.frontSide && (\n
    \n \"\"\n {\n setProfile({ ...profile, frontSide: '' });\n frontSideRef.current.value = '';\n }}>×\n
    \n )}\n
    \n
    \n

    Mặt sau

    \n {!profile.backSide && (\n \n )}\n {profile.backSide && (\n
    \n \"\"\n {\n setProfile({ ...profile, backSide: '' });\n backSideRef.current.value = '';\n }}>×\n
    \n )}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    Thông tin bắt buộc!
    \n
    \n
    \n \n {\n if (!validatePhoneNumber(e.target.value)) {\n e.target.classList.add('is-invalid');\n e.target.focus();\n }\n }} required />\n
    Số điện thoại không hợp lệ!
    \n
    \n
    \n \n \n
    Thông tin bắt buộc!
    \n
    \n
    \n
    \n
    \n
    \n \n {status &&
    {status.msg}
    }\n
    \n
    \n
    \n )\n}\n\nexport default Profile;\n","const formatCurrency = (num) => {\n if (!num) {\n return '';\n }\n\n let [int, dec] = num.toString().split('.');\n\n if (dec) {\n dec = dec.slice(0, 2);\n }\n\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n if (dec) {\n int += ',' + dec;\n }\n\n return int;\n}\n\nexport default formatCurrency;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport profileApi from '../../apis/profile-api';\nimport formatCurrency from '../../utils/format-currency';\n\nfunction RevenueItem({ affiliateData, currentTab }) {\n const [affiliate, setAffiliate] = useState({});\n const [affiliateStats, setAffiliateStats] = useState({\n numOfDeal: 0,\n numOfLead: 0,\n actualCommission: 0,\n revenue: 0\n });\n\n const calcRevenuePercent = useCallback((contractType) => {\n switch (contractType) {\n case 'direct':\n return 17;\n default:\n return 12;\n }\n }, []);\n\n useEffect( () => {\n const getAffiliate = async() => {\n const affiliate_id = Object.keys(affiliateData)[0];\n const { data } = await profileApi.getAffiliateById(+affiliate_id);\n setAffiliate(data);\n };\n getAffiliate();\n }, [affiliateData]);\n\n useEffect(() => {\n let actualRevenue = 0;\n let deal = 0;\n let lead = 0;\n\n if (affiliateData) {\n const formatData = Object.values(affiliateData)[0];\n for (let item of formatData) {\n if (item.is_converted === true) {\n deal++;\n } else {\n lead++;\n }\n\n if (item.deal_stage === 'Closed Won') {\n actualRevenue += item.lead_amount;\n }\n }\n const percent = calcRevenuePercent(formatData[0]?.contract_type);\n setAffiliateStats({\n numOfDeal: deal,\n numOfLead: lead,\n actualRevenue,\n revenue: percent * actualRevenue / 100\n });\n }\n }, [affiliateData, calcRevenuePercent]);\n\n return (\n <>\n {currentTab === 'member' && (\n \n {`AFF_${affiliate?.affiliate_id}`}\n {affiliate?.full_name}\n {affiliateStats.numOfDeal}\n {formatCurrency(affiliateStats.actualRevenue) || 0}\n {formatCurrency(affiliateStats.revenue) || 0}\n \n )}\n {currentTab === 'lead' && (\n \n {`AFF_${affiliate?.affiliate_id}`}\n {affiliate?.full_name}\n {formatCurrency(affiliateStats.actualRevenue) || 0}\n {affiliateStats.numOfDeal}\n {affiliateStats.numOfLead}\n {formatCurrency(affiliateStats.revenue) || 0}\n \n )}\n \n )\n}\n\nexport default RevenueItem;\n","import React, { useState } from 'react'\nimport RevenueItem from '../../components/Leader/RevenueItem';\n\nfunction TeamDataDetail({ teamDataGrouped }) {\n const [tab, setTab] = useState('member');\n\n const handleTab = (name) => {\n setTab(name);\n };\n\n return (\n
    \n

    \n \n \n

    \n
    \n {tab === 'member' && (\n \n \n \n \n \n \n \n \n \n \n \n {teamDataGrouped?.map((item, idx) => )}\n \n
    STTTên thành viênSố OrderDoanh thu thực tế (đ)Hoa hồng (đ)
    \n )}\n {tab === 'lead' && (\n \n \n \n \n \n \n \n \n \n \n \n \n {teamDataGrouped?.map((item, idx) => )}\n \n
    STTTên thành viênDoanh thu thực tế (đ)DealLeadHoa hồng thực tế (đ)
    \n )}\n
    \n
    \n )\n}\n\nexport default TeamDataDetail;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport moment from 'moment';\nimport CardHome from '../../components/Cards/CardHome';\nimport { storageGetItem } from '../../utils/local-storage';\nimport dashboardApi from '../../apis/dashboard-api';\nimport FilterDate from '../../components/FilterDate/FilterDate';\nimport { USER_PROFILE } from '../../utils/storage-keys';\nimport './HomeLeader.css';\nimport GlobalStore from '../../stores/global-store';\nimport TeamDataDetail from './TeamDataDetail';\nimport getAffiliateId from '../../utils/get_affiliate_id';\nimport formatCurrency from '../../utils/format-currency';\n\nfunction HomeLeader() {\n const { setLoading, affID } = GlobalStore.useContainer();\n const userProfile = JSON.parse(storageGetItem(USER_PROFILE));\n const [teamLeadData, setTeamLeadData] = useState({});\n const [teamLeadDataFiltered, setTeamLeadDataFiltered] = useState({});\n const [teamStats, setTeamStats] = useState({\n conversionRate: 0,\n actualRevenue: 0,\n actualCommission: 0,\n deal: 0,\n lead: 0,\n numOfMembers: 0\n });\n const [filterDate, setFilterDate] = useState({\n label: 'Tất cả',\n slug: 'all',\n range: {}\n });\n const [isLeader, setIsLeader] = useState(false);\n const [teamDataGroup, setTeamDataGroup] = useState([]);\n const affiliateID = getAffiliateId();\n\n const calcRevenuePercent = useCallback((revenue) => {\n if (revenue <= 30000000) {\n return 2;\n } else if (revenue > 30000000 && revenue <= 50000000) {\n return 3;\n } else if (revenue > 50000000 && revenue <= 100000000) {\n return 4;\n } else {\n return 5;\n }\n }, []);\n\n const groupBy = (array) => {\n const result = array?.reduce((acc, item) => {\n if (item.affiliate_id.toString() === affiliateID) {\n return acc;\n }\n const { affiliate_id } = item;\n const existingCategory = acc.find(c => c[affiliate_id]);\n if (existingCategory) {\n existingCategory[affiliate_id].push(item);\n } else {\n const newCategory = { [affiliate_id]: [item] };\n acc.push(newCategory);\n }\n return acc;\n }, []);\n return result;\n };\n\n useEffect(() => {\n async function getSummaryDashboard() {\n setLoading(true);\n const responseDashboard = await dashboardApi.getSummaryDashboard(affID);\n setTeamLeadData(responseDashboard?.data?.dashboard);\n setTeamLeadDataFiltered(responseDashboard?.data?.dashboard);\n setLoading(false);\n }\n\n getSummaryDashboard();\n }, [setLoading]);\n\n const filterRangeDate = (dateRange, entryDate) => {\n let filterPass = true;\n const date = moment(entryDate).unix();\n if (dateRange.startDate) {\n filterPass = filterPass && (dateRange.startDate <= date);\n }\n if (dateRange.endDate) {\n filterPass = filterPass && (dateRange.endDate >= date);\n }\n return filterPass;\n };\n\n const teamDataFilterHandler = (dateEntry) => {\n let teamDataFilterTmp = [];\n setFilterDate(dateEntry);\n\n if (dateEntry.slug !== 'all') {\n const dateRange = {\n startDate: dateEntry.range.startDate,\n endDate: dateEntry.range.endDate\n };\n\n teamDataFilterTmp = teamLeadData?.team_data.filter(row => {\n return filterRangeDate(dateRange, row.date);\n });\n\n setTeamLeadDataFiltered(state => ({\n ...state,\n team_data: teamDataFilterTmp\n }));\n } else {\n setTeamLeadDataFiltered(teamLeadData);\n }\n };\n\n useEffect(() => {\n let isConverted = 0;\n let actualRevenue = 0;\n let deal = 0;\n\n if (teamLeadDataFiltered && teamLeadDataFiltered.team_data) {\n for (let value of teamLeadDataFiltered.team_data) {\n if (value.is_converted === true) {\n deal++;\n }\n if (value.is_converted === true && value.deal_stage === 'Closed Won') {\n isConverted++;\n }\n\n if (value.deal_stage === 'Closed Won') {\n actualRevenue += value.lead_amount;\n }\n }\n const percent = calcRevenuePercent(actualRevenue);\n \n setTeamStats(state => ({\n ...state,\n conversionRate: (Math.round((isConverted / teamLeadDataFiltered?.team_data?.length) * 100) / 10 * 10) || 0,\n actualRevenue,\n actualCommission: percent * actualRevenue / 100,\n deal,\n lead: teamLeadDataFiltered?.team_data?.length - deal\n }));\n }\n\n }, [teamLeadDataFiltered, calcRevenuePercent]);\n\n useEffect(() => {\n if (teamLeadDataFiltered?.team_data?.length) {\n const groupData = groupBy(teamLeadDataFiltered?.team_data);\n setTeamDataGroup(groupData);\n setTeamStats(state => ({\n ...state,\n numOfMembers: groupData?.length\n }));\n }\n }, [teamLeadDataFiltered]);\n\n useEffect( () => {\n if (teamLeadData?.team_data && teamLeadData?.team_data.length) {\n setIsLeader(true);\n }\n }, [teamLeadData, setIsLeader] );\n\n return (\n
    \n
    \n
    \n \n

    {filterDate.label}

    \n
    \n
    \n
    \n

    Xin chào, {userProfile.display_name}!

    \n\n {isLeader && (\n <>\n
    \n

    Tổng quan

    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n 0 ? teamStats.numOfMembers : 0}\n link=\"\"\n tooltip=\"Thể hiện số thành viên trong team của bạn\"\n />\n
    \n\n
    \n \n
    \n
    \n
    \n
    \n\n \n \n )}\n {!isLeader &&

    Bạn chưa có thành viên nào!

    }\n
    \n )\n}\n\nexport default HomeLeader;\n","import React, { useEffect, useState } from 'react';\nimport { Routes, Route, Navigate, useLocation, useNavigate } from 'react-router-dom';\nimport { storageGetItem } from '../utils/local-storage';\nimport { ACCESS_TOKEN } from '../utils/storage-keys';\nimport Dashboard from './Dashboard/Dashboard';\nimport Home from './Home/Home';\nimport Referral from './Referral/Referral';\nimport Url from './Url/Url';\nimport Payout from './Payout/Payout';\nimport Visit from './Visit/Visit';\nimport Creative from './Creative/Creative';\nimport Login from './Login/Login';\nimport NotFound from './NotFound';\nimport UserPending from './UserPending';\nimport Profile from './Profile/Profile';\nimport HomeLeader from './Home/HomeLeader';\n\nfunction AppRoutes() {\n const isLoggedIn = storageGetItem(ACCESS_TOKEN);\n const location = useLocation();\n const navigate = useNavigate();\n const [isLoading, setIsLoading] = useState(true);\n \n useEffect(() => {\n if (isLoading) {\n setIsLoading(false);\n navigate(location.pathname);\n }\n }, [navigate, isLoading, location]);\n\n return (\n \n }>\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n : } />\n : } />\n \n )\n}\n\nexport default AppRoutes;","import AppRoutes from './pages/routes';\nimport GlobalStore from './stores/global-store';\nimport './assets/css/style.css';\n\nfunction App() {\n return (\n \n \n \n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { BrowserRouter } from \"react-router-dom\";\nimport * as Sentry from '@sentry/react';\nimport App from './App';\n\nSentry.init({\n dsn: 'https://48bd0265fc904095a4035422d3bc4145@o83917.ingest.sentry.io/4504959207079936',\n integrations: [new Sentry.BrowserTracing()],\n tracesSampleRate: 0.2\n});\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n);\n"],"names":["Object","mod","nowSeconds","now","timeOrigin","platformPerformance","dateTimestampSource","Math","threshold","_browserPerformanceTimeOriginMode","isGlobalObj","obj","module","exports","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","hasOwn","classNames","classes","arg","argType","inner","includes","default","root","factory","undef","CryptoJS","C","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","d","x","xi","sx","x2","x4","x8","t","RCON","AES","_doReset","_nRounds","_keyPriorReset","_key","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","offset","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","round","t0","t1","t2","t3","_createHelper","Cipher","C_lib","Base","WordArray","BufferedBlockAlgorithm","C_enc","enc","Base64","Utf8","EvpKDF","cfg","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","init","xformMode","_xformMode","reset","dataUpdate","_append","_process","finalize","_doFinalize","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","blockSize","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","block","_prevBlock","processBlock","thisBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","formatter","OpenSSLFormatter","format","OpenSSL","salt","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","random","compute","derivedParams","crypto","self","globalThis","msCrypto","global","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","F","subtype","overrides","$super","properties","propertyName","clone","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","j","ceil","nBytes","hexChars","bite","hexStr","hexStrLength","parseInt","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","escape","utf8Str","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","max","nBytesReady","min","Hasher","update","messageUpdate","hasher","_createHmacHelper","HMAC","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","map","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","MD5","iterations","derivedKey","derivedKeyWords","input","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","byteOffset","byteLength","typedArrayByteLength","T","abs","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","s","n","HmacMD5","CFB","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA1","PBKDF2","hmac","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","S","C_","G","RabbitLegacy","K","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_i","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","ar","br","cr","dr","er","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","y","z","HmacRIPEMD160","W","HmacSHA1","SHA256","SHA224","HmacSHA224","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","f","g","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","state","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","count","tokenValue","addSuffix","comparison","buildFormatLongFn","width","defaultWidth","formats","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","ordinalNumber","dirtyNumber","Number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","rest","object","predicate","array","parsePattern","parseResult","any","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","dateLongFormatter","timeLongFormatter","longFormatters","p","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","getTime","startOfUTCISOWeekYear","dirtyDate","requiredArgs","year","getUTCISOWeekYear","fourthOfJanuary","setUTCHours","startOfUTCISOWeek","MILLISECONDS_IN_WEEK","getUTCISOWeek","toDate","diff","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeekYear","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","toInteger","locale","getUTCWeekYear","firstWeek","startOfUTCWeek","getUTCWeek","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","required","getUTCDay","setUTCDate","getUTCDate","_options$weekStartsOn","NaN","isNaN","addDays","dirtyAmount","amount","setDate","MILLISECONDS_IN_HOUR","addHours","addMilliseconds","timestamp","addMinutes","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","daysInMonth","setFullYear","addWeeks","days","addYears","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","yearDiff","monthDiff","differenceInCalendarWeeks","startOfWeekLeft","startOfWeek","startOfWeekRight","differenceInCalendarYears","endOfDay","setHours","endOfMonth","endOfWeek","getDay","addLeadingZeros","targetLength","sign","output","signedYear","getUTCMonth","dayPeriodEnumValue","getUTCHours","m","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","dayPeriodEnum","formatters","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","q","L","w","week","I","isoWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","B","k","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","minutes","delimiter","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","matched","startOfISOWeek","getISOWeekYear","startOfISOWeekYear","getISOWeek","getQuarter","seconds","getYear","isAfter","dirtyDateToCompare","dateToCompare","isBefore","_typeof","Symbol","iterator","isEqual","dirtyLeftDate","dirtyRightDate","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameYear","isWithinInterval","interval","startTime","start","endTime","end","dirtyDatesArray","datesArray","currentDate","property","_inherits","subClass","superClass","writable","configurable","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_classCallCheck","Constructor","_defineProperties","descriptor","enumerable","_createClass","protoProps","staticProps","_defineProperty","Setter","_utcDate","ValueSetter","_Setter","_super","validateValue","setValue","priority","subPriority","_this","flags","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","_len","timestampIsSet","convertedDate","Parser","dateString","setter","validate","set","_value","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_e","normalCompletion","didErr","step","next","_e2","return","len","arr2","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","_loop","incompatibleTokens","incompatibleToken","find","usedToken","fullToken","run","_ret","uniquePrioritySetters","sort","setterArray","_step2","_iterator2","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","timezone","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","timeString","regex","captures","century","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","parseFloat","timezoneString","_hours","validateTimezone","dirtyHours","setMinutes","dirtyMinutes","getDaysInMonth","monthIndex","lastDayOfMonth","dirtyMonth","dateWithDesiredMonth","setQuarter","dirtyQuarter","oldQuarter","setSeconds","dirtySeconds","setYear","dirtyYear","startOfMonth","currentMonth","startOfYear","cleanDate","subDays","subHours","subMinutes","subMonths","subWeeks","subYears","argStr","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","res","arrLen","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","lastDay","sameElse","calendar","mom","_calendar","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","dd","ww","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","get","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","weeks","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","setTime","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","wholeMonthDiff","anchor","keepOffset","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","r","_","N","A","V","U","$","J","Z","ee","te","re","ae","ne","oe","se","ie","pe","le","de","ce","ue","fe","he","me","ye","De","ve","we","ge","ke","be","Se","Ce","Me","Pe","Ee","Ne","xe","Oe","Ye","Ie","Te","Le","Re","Fe","Ae","qe","We","Be","Ke","He","je","Qe","Ve","Ue","$e","ze","Ge","Je","Xe","Ze","et","tt","rt","at","nt","ot","st","pt","lt","dt","ct","ut","Dt","getOwnPropertyDescriptors","ft","ht","mt","yt","vt","wt","kt","gt","bt","St","Ct","_t","Mt","Pt","Et","Nt","xt","Ot","Yt","Tt","It","Xt","Jt","Lt","awareOfUnicodeTokens","Rt","Ft","At","qt","Wt","Bt","Kt","Ht","jt","Qt","Vt","Ut","$t","zt","Gt","__localeId__","__localeData__","Zt","tr","rr","minDate","maxDate","excludeDates","excludeDateIntervals","includeDates","includeDateIntervals","filterDate","lr","nr","or","ir","pr","excludeTimes","includeTimes","filterTime","ur","minTime","maxTime","fr","every","mr","yr","Dr","vr","wr","Map","gr","kr","startPeriod","endPeriod","Sr","Cr","yearsList","className","onClick","onChange","incrementYears","decrementYears","onCancel","setState","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","dropdownRef","createRef","current","scrollTop","scrollHeight","clientHeight","ref","renderOptions","Component","_r","Mr","dropdownVisible","onSelectChange","renderSelectOptions","style","visibility","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","onSelect","setOpen","dropdownMode","renderScrollMode","renderSelectMode","Pr","monthNames","isSelectedMonth","Er","Nr","useShortMonthInDropdown","xr","Or","monthYearsList","scrollableMonthYearDropdown","Yr","Ir","Tr","isDisabled","onMouseEnter","preventDefault","handleOnKeyDown","disabledKeyboardNavigation","selected","preSelection","highlightDates","startDate","endDate","selectsStart","selectsEnd","selectsRange","selectsDisabledDaysInRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isSelected","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isCurrentDay","isWeekend","isAfterMonth","isBeforeMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","getTabIndex","isInputFocused","activeElement","body","inline","shouldFocusDayInline","containerRef","contains","classList","dayEl","focus","preventScroll","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","renderDayContents","getClassNames","onKeyDown","handleClick","handleMouseEnter","tabIndex","getAriaLabel","role","handleFocusDay","Lr","weekNumber","ariaLabelPrefix","Rr","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","formatWeekNumber","calendarStartDay","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","Fr","orderInDisplay","onMouseLeave","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","onMonthClick","handleMonthNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isCurrentMonth","isSelectedQuarter","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthKeyDown","getMonthClassNames","onQuarterClick","getQuarterClassNames","showMonthYearPicker","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","Ar","height","timeClassName","isSelectedTime","injectTimes","intervals","openToDate","liClasses","centerLi","list","calcCenterPosition","monthRef","header","todayButton","showTimeSelectOnly","timeCaption","renderTimes","onTimeChange","offsetTop","qr","yearItemNumber","YEAR_REFS","requestAnimationFrame","updateFocusOnPaginate","handleYearClick","onYearClick","handleYearNavigation","isCurrentYear","onYearKeyDown","getYearTabIndex","getYearClassNames","Wr","customTimeInput","cloneElement","placeholder","timeInputLabel","renderTimeInput","Br","children","showPopperArrow","arrowProps","Kr","Hr","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthButtonLabel","previousYearButtonLabel","previousMonthAriaLabel","previousYearAriaLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthButtonLabel","nextYearButtonLabel","nextMonthAriaLabel","nextYearAriaLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","monthDate","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","monthAriaLabelPrefix","handleOnDayKeyDown","handleMonthMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","container","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","jr","portalRoot","portalHost","getElementById","portalId","appendChild","removeChild","createPortal","Qr","disabled","Vr","tabLoopRef","querySelectorAll","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","Ur","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","popperOnKeyDown","Popper","modifiers","placement","popperContainer","Manager","Reference","$r","Gr","Jr","getPreSelection","startOpen","preventFocus","focused","preventFocusTimeout","clearTimeout","blur","cancelFocusInput","calcInitialState","lastPreSelectChange","Zr","setBlur","inputValue","readOnly","preventOpenOnFocus","inputFocusTimeout","setFocus","onBlur","onChangeRaw","isDefaultPrevented","Xr","strictParsing","setSelected","allowSameDay","focusSelectedMonth","onInputClick","componentNode","querySelector","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","documentElement","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInput","customInputRef","handleBlur","handleChange","handleFocus","onInputKeyDown","autoFocus","placeholderText","autoComplete","title","ariaDescribedBy","ariaInvalid","ariaLabelledBy","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","onScroll","onCalendarOpen","onCalendarClose","clearPreventFocusTimeout","renderDateInput","renderClearButton","renderCalendar","renderInputContainer","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","registerLocale","setDefaultLocale","aa","ca","da","Set","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","defaultSelected","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","tb","menuitem","area","col","embed","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","color","email","range","tel","text","event","listeners","oninput","detachEvent","attachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","has","pf","qf","rf","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","char","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","eventTime","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","size","createElementNS","createTextNode","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","equal","entries","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isNodeFound","ignoreClass","correspondingElement","seed","passiveEventSupport","uid","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","eventName","handlerOptions","WrappedComponent","_class","_temp","_Component","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","noop","testPassiveEventSupport","events","eventTypes","evt","clientWidth","findHighest","composed","composedPath","disableOnClickOutside","getRef","instanceRef","_proto","_this$props","excluded","sourceKeys","_objectWithoutPropertiesLoose","wrappedRef","getClass","ManagerReferenceNodeContext","React","ManagerReferenceNodeSetterContext","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","Provider","unwrapArray","safeInvoke","setRef","fromEntries","reduce","acc","useIsomorphicLayoutEffect","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","right","bottom","getWindowScroll","win","pageXOffset","pageYOffset","getNodeName","getDocumentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","placements","modifierPhases","visited","modifier","requires","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","orderedModifiers","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","existing","mergeByName","enabled","_ref3$options","effect","cleanupFn","noopFn","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","parent","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","mathMax","mathMin","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","margin","attribute","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","prevOptions","optionsWithDefaults","updateStateModifier","ReactDOM","popperOptions","newOptions","popperInstanceRef","popperInstance","defaultCreatePopper","NOOP","NOOP_PROMISE","_ref$placement","_ref$strategy","_ref$modifiers","innerRef","setPopperElement","_React$useState2","setArrowElement","_usePopper","childrenProps","hide","refHandler","warning","__self","__source","jsx","jsxs","_status","_result","Children","only","PureComponent","createContext","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","definition","hmd","toStringTag","nmd","paths","_s","_arr","_n","NavigationContext","LocationContext","RouteContext","outlet","invariant","cond","matchRoutes","routes","locationArg","basename","stripBasename","parsePath","branches","flattenRoutes","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","paramRe","isSplat","segments","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","paramName","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","locationPathname","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","nextChar","useHref","useInRouterContext","useResolvedPath","joinedPathname","getToPathname","endsWithSlash","createHref","useLocation","useNavigate","routePathnamesJson","activeRef","go","OutletContext","_renderMatches","parentMatches","reduceRight","React.createElement","Navigate","navigate","Outlet","useOutlet","Route","_props","Router","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","navigationContext","trailingPathname","Routes","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","BrowserRouter","historyRef","createBrowserHistory","history","listen","Link","reloadDocument","internalOnClick","replaceProp","isModifiedEvent","createPath","useLinkClickHandler","NavLink","ariaCurrentProp","classNameProp","styleProp","isActive","ariaCurrent","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","iter","CONSOLE_LEVELS","originalConsole","wrappedLevels","makeLogger","enable","disable","logger","consoleSandbox","isBuiltin","wat","elem","nextStr","currentElem","_htmlElementAsString","keyAttrs","keyAttrPairs","attr","requireExactStringMatch","testString","markFunctionWrapped","wrapped","addNonEnumerableProperty","getOwnProperties","newObj","serializeEventTarget","extractedProps","_dropUndefinedKeys","memoizationMap","getFirstException","firstException","handled","InboundFilters","internalOptions","clientOptions","allowUrls","denyUrls","ignoreErrors","DEFAULT_IGNORE_ERRORS","ignoreTransactions","ignoreInternal","getEventDescription","_getEventFilterUrl","eventProcess","addGlobalEventProcessor","frames","FunctionToString","originalFunctionToString","States","SyncPromise","onrejected","isRejected","onfinally","cachedHandlers","handler","sid","started","errors","ignoreDuration","session","did","attrs","release","environment","ip_address","user_agent","updateSession","Scope","user","tags","extras","level","breadcrumb","trace","transaction","processors","hint","processor","newScope","getGlobalEventProcessors","Hub","scope","client","exception","originalException","syntheticException","event_id","mergedBreadcrumb","makeMain","closeSession","GLOBAL_OBJ","extensions","hub","setHubOnCarrier","registry","hasHubOnCarrier","carrier","__SENTRY__","defaultIntegrations","integration","integrations","integrationsByName","finalIntegrations","integrationIndex","installedIntegrations","clientClass","sortedParsers","localStack","frame","filename","function","instrument","instrumented","fill","triggerHandlers","originalConsoleMethod","instrumentConsole","WINDOW","refCount","handlerForType","originalAddEventListener","originalRemoveEventListener","instrumentDOM","xhrInfo","endTimestamp","startTimestamp","xhr","onreadystatechangeHandler","readyStateArgs","instrumentXHR","sandbox","doc","fetchData","handlerData","instrumentFetch","lastHref","instrumentHistory","_oldOnErrorHandler","column","_oldOnUnhandledRejectionHandler","getFunctionName","getFetchMethod","getFetchUrl","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","makeDOMEventHandler","lastCapturedEvent","debounceTimerID","_superPropBase","_get","receiver","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","SentryError","projectId","dsnFromComponents","components","publicKey","pass","dsn","requiredComponents","validateDsn","ERROR","depth","maxSize","visit","maxProperties","memoBuilder","overriddenDepth","normalized","numAdded","unmemoize","stringifyValue","jsonSize","envelope","encodeUTF8","items","stringifiedPayload","buffers","attachment","textEncoder","dropUndefinedKeys","content_type","attachment_type","sessions","client_report","user_report","profile","replay_event","replay_recording","getBaseApiEndpoint","_getIngestEndpoint","_encodedAuth","sentry_key","sentry_version","sdkInfo","sentry_client","metadata","tunnel","enhanceEventWithSdkInfo","sent_at","sdk","dynamicSamplingContext","applyClientOptions","applyIntegrationsMetadata","errorFileNames","images","code_file","debug_id","applyDebugMetadata","finalScope","breadcrumbs","contexts","extra","span","BaseClient","tunnelOrOptions","recordDroppedEvent","eventId","promisedEvent","setupIntegration","createAttachmentEnvelopeItem","errored","exceptions","crashed","clearInterval","ticked","sampleRate","beforeSendResult","beforeSendLabel","processedEvent","transactionInfo","__sentry__","category","quantity","isTransactionEvent","ex","stackParser","extractMessage","attachStacktrace","isUnhandledRejection","addExceptionTypeValue","extractExceptionKeysForMessage","__serialized__","addExceptionMechanism","synthetic","stacktrace","captureContext","getCurrentHub","ignoreOnError","before","ignoreNextOnError","withScope","captureException","sentryWrapped","relative","Breadcrumbs","dom","fetch","sentry","addInstrumentationHandler","MAX_ALLOWED_STRING_LENGTH","maxStringLength","htmlTreeAsString","_consoleBreadcrumb","_xhrBreadcrumb","status_code","_fetchBreadcrumb","_historyBreadcrumb","parsedFrom","BrowserClient","packages","breadcrumbIntegration","discarded_events","GlobalHandlers","onunhandledrejection","globalHandlerLog","installFunc","_installGlobalOnErrorHandler","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","eventFromUnknownInput","addMechanismAndCapture","_installGlobalOnUnhandledRejectionHandler","_eventFromRejectionWithPrimitive","ev0sf","colno","in_app","lineno","getHubAndOptions","TryCatch","eventTarget","setInterval","_wrapTimeFunction","original","mechanism","_wrapRAF","wrap","_wrapXHR","originalSend","xmlHttpRequestProps","wrapOptions","_wrapEventTarget","LinkedErrors","HttpContext","referrer","Referer","Dedupe","currentEvent","eventProcessor","_isSameStacktrace","frameA","_isSameFingerprint","_getExceptionFromEvent","_getFramesFromEvent","createFrame","extractSafariExtensionDetails","isSafariExtension","drain","limits","statusCode","rateLimitHeader","categories","updatedRateLimits","makeRequest","makePromiseBuffer","forEachEnvelopeItem","filteredEnvelopeItems","rateLimits","recordEnvelopeLoss","flush","getEventForEnvelopeItem","fetchImpl","cachedFetchImpl","nativeFetch","getNativeFetchImplementation","pendingBodySize","pendingCount","referrerPolicy","keepalive","clearCachedFetchImplementation","startSessionOnHub","startSessionTracking","lastAccessLHS","req","Express","router","methods","instrumentMiddlewares","appOrRouter","routerProto","layer","called","isRegex","numExtraSegments","routesArray","layerRoutePath","customRoute","instrumentRouter","op","_optionalChain","wrapMiddlewareArgs","patchMiddleware","getLayerRoutePathString","Postgres","Mysql","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","dropIndex","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexExists","insertMany","insertOne","mapReduce","rename","replaceOne","updateMany","updateOne","isCursor","maybeCursor","Mongo","operations","cursor","lastArg","collection","operation","collectionName","dbName","namespace","isValidPrismaClient","possibleClient","Prisma","GraphQL","Apollo","useNestjs","pkg","instrumentResolvers","resolvers","resolverGroupName","resolverName","wrapResolver","SpanRecorder","Transaction","transactionContext","spanMetadata","spans","start_timestamp","sdkProcessingMetadata","transaction_info","trimEnd","user_segment","public_key","trace_id","sample_rate","Span","spanContext","parentSpanId","sampled","traceId","childSpan","logMessage","sampledString","spanId","parent_span_id","span_id","idleTimeout","finalTimeout","heartbeatInterval","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","IdleTransaction","_idleHub","_idleTimeout","TRACING_DEFAULTS","_finalTimeout","_heartbeatInterval","_onScope","clearActiveTransaction","restartOnChildSpanChange","maybeOptions","errorCallback","activeTransaction","traceHeaders","sample","samplingContext","rate","_startTransaction","customSamplingContext","transactionInstrumenter","configInstrumenter","parentSampled","onScope","errorsInstrumented","objectKey","objectValue","baggageHeaderToObject","baggageHeader","metric","reportAllChanges","delta","prevValue","entryType","navigationEntry","getNavigationEntryFromPerformanceTiming","rating","po","buffered","firstHiddenTime","onHidden","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","ctx","msToSec","getBrowserPerformanceAPI","report","handleEntries","onFID","_measurements","sessionValue","sessionEntries","entry","_clsEntry","reportedMetricIDs","once","_lcpEntry","clsCallback","lcpCallback","performanceEntries","_addPerformanceNavigationTiming","_startChild","_addRequest","_addNavigationSpans","responseStartTimestamp","requestStartTimestamp","_addMeasureSpans","resourceName","_addResourceSpans","_performanceCursor","_trackNavigator","measurementName","_tagMetricInfo","eventEnd","traceFetch","traceXHR","tracingOrigins","tracePropagationTargets","shouldAttachHeaders","shouldCreateSpan","newHeaders","newBaggageHeaders","baggage","fetchCallback","xhrCallback","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","enableLongTask","_experiments","defaultRequestInstrumentationOptions","BrowserTracing","addTracingExtensions","DEFAULT_BROWSER_TRACING_OPTIONS","observe","durationThreshold","instrumentRouting","shouldCreateSpanForRequest","statusType","instrumentOutgoingRequests","baggageObject","currBaggageObject","baggageHeaderToDynamicSamplingContext","traceParentData","finalContext","idleTransaction","addPerformanceEntries","inflightInteractionTransaction","storageGetItem","localStorage","getItem","storageSetItem","setItem","storageRemoveItem","removeItem","ACCESS_TOKEN","ACCESS_TOKEN_EXPIRY","AFFILIATE_ID","USER_PROFILE","REMEMBER_AUTH","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","reverse","skipTempReset","prev","stop","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","removeSessionExpired","setSession","affiliateID","setAffiliateID","sessionToken","sessionTokenExpiry","remember","loadSession","storeSession","expiry","userProfile","signOut","useHook","initialState","createContainer","useSession","menuOpen","setMenuOpen","loading","setLoading","affID","setAffID","initialIsVisible","isComponentVisible","setIsComponentVisible","onToggleNavbar","useComponentVisible","GlobalStore","ELSALogo","alt","avatar_url","display_name","marginLeft","CONFIG","apiURL","serverAPI","affiliatePublicKey","affiliateToken","captchaSiteKey","SvgHome","svgRef","titleId","strokeLinecap","strokeLinejoin","viewBox","SvgLink","SvgCard","SvgBill","SvgClick","SvgCoin","SvgCreatives","SvgMoney","SvgBalance","SvgUser","xmlns","fillRule","clipRule","SvgEye","SvgCopy","SvgUserStar","SvgImage","SvgProfile","stroke","SvgDocs","Icon","Home","Card","Money","Click","Creatives","Bill","User","Coin","Balance","Copy","Eye","UserStar","Image","Profile","Docs","onCloseSidebar","closeSidebar","encryptedUserIdFromStorage","affiliateValid","checkIsValid","affiliate_id","getAffiliateId","axiosClient","backgroundColor","withSession","userValid","setUserValid","innerWidth","setWidth","handleWindowSizeChange","timer","checkAffiliateIsValid","URL","dashboardApi","getSummaryDashboard","module_name","getExportData","onDateChange","dateRange","setDateRange","CustomInput","rangeDate","label","slug","moment","onSelectDate","setRange","filterHandler","currentRange","IconFilter","trigger","isShow","setIsShow","setPosition","coordinates","setCoordinates","refTooltip","onMouseOver","onMouseDown","distanceX","tooltipWrapperWidth","IconInfo","iconName","iconColor","tooltip","iconFill","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","reset_cp","utf16beread","$cptable","_getchar","_getansi","Base64_map","Base64_encode","c1","c2","c3","e1","e2","e3","e4","Base64_decode","has_buf","versions","Buffer_from","nbfs","buf","new_raw_buf","alloc","new_unsafe_buf","allocUnsafe","s2a","s2ab","a2s","bconcat","bufs","chr0","chr1","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","dout","date1904","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","epoch","SSF_strip_decimal","SSF_general_num","LOG10E","toPrecision","toExponential","SSF_small_exp","SSF_large_exp","SSF_normalize_exp","SSF_general","SSF_format","SSF_write_date","fmt","ss0","outl","commaify","pct1","write_num_exp","idx","fakee","$$","$1","$2","$3","frac1","dec1","closeparen","phone","hashq","rnd","dec","_frac","write_num_flt","ffmt","write_num","write_num_cm","sfmt","mul","write_num_pct","aval","den","myn","myd","write_num_f1","carry","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","lastIndexOf","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","choose_fmt","in_str","SSF_split_fmt","lat","m1","m2","dateNF","table","flen","lst","ssm","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","SSF_load_table","tbl","make_ssf","dateNFregex","CRC32","signed_crc_table","TT","subarray","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","bstr","fs","dirname","write_dos_date","hms","write_shift","ymd","parse_extra_field","blob","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","get_fs","file","parse_zip","row","mboundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","chkd","buf_chain","modulus","seen","addr","__readInt32LE","nodes","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","files","mini","minifat_store","sector","namelen","__utf16le","clsid","read_date","storage","get_sector_list","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","raw","MSSZ","new_buf","cnt","__readUInt32LE","cfb","CLSID","nm","rebuild_cfb","seed_cfb","_file","fullPaths","HEADER_CLSID","namecmp","elt","_write","_opts","fileType","fp","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","compression","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","copy","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","mlen","len_eb","dst_eb","write_huff_fixed","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","h1","h2","_inflate","usz","woff","OL","max_len_1","max_len_2","bits","dst","inflate","warn_or_throw","wrn","csz","efsz","fcsz","EF","parse_local_file","meth","setMilliseconds","parse_dos_date","_csz","_usz","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","unsafe","ContentTypeMap","ctype","ext","encoded","fdata","fname","cte","parse_quoted_printable","fpath","cfb_gc","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","writeFile","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","_fs","blobify","a2u","write_dl","Deno","TextEncoder","utf8write","IE_SaveFile","msSaveBlob","saveAs","createObjectURL","chrome","downloads","download","revokeObjectURL","click","File","Folder","encoding","close","ks","o2","evert_key","evert","evert_num","basedate","datenum","refdate","dnthresh","refoffset","numdate","good_pd_date_1","good_pd_date","good_pd","fixdate","cc2str","debomit","TextDecoder","decode","dup","fuzzynum","lower_months","fuzzydate","lower","zip_add_file","zip","widx","ridx","utf8decode","zip_new","XML_HEADER","encodings","rencoding","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","parsexmlbool","utf8reada","orig","utf8readb","utf8readc","utf8corpus","utf8read","htmldecode","entities","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","XMLNS","XMLNS_main","XLMLNS","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","cpdoit","readUInt32LE","readDoubleLE","__readInt16LE","__readInt32BE","oI","oR","oo","lens","__writeUInt16LE","WriteShift","cppayload","__writeUInt32LE","bs","av","write_double_le","__writeInt32LE","hexstr","fld","parsenoop","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","XLSBRecordEnum","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","decode_col","colstr","decode_cell","decode_range","encode_range","cs","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","_R","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","write_BrtCommentText","write_StrRun","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","write_BrtColor","theme","nTS","tint","rgb","VT_STRING","DocSummaryPIDDSI","SummaryPIDSI","rgbify","XLSIcv","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","write_ct","type2ct","evert_arr","bookType","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","CORE_PROPS","EXT_PROPS","CUST_PROPS","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","TCMNT","PEOPLE","VBA","get_rels_path","write_rels","rels","rid","add_rels","rId","relobj","targetmode","Type","Target","TargetMode","write_rdf_type","write_meta_ods","cp_doit","write_core_props","Props","CreatedDate","WTF","ModifiedDate","PseudoPropsPairs","write_ext_props","Application","Worksheets","baseType","write_cust_props","pid","write_vt","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Company","AppVersion","ContentStatus","Identifier","Language","write_TypedPropertyValue","write_FILETIME","XLSPSSkip","guess_property_type","write_PropertySet","RE","PIDSI","hdr","piao","pio","pinfo","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsebool","writebool","parseuint16","writeuint16","write_Bes","parse_ShortXLUnicodeString","cch","write_XLUnicodeRichExtendedString","xlstr","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","write_HyperlinkString","write_Hyperlink","hashidx","Pretarget","write_XLSCell","ixfe","parse_XTI","parse_Ref8U","rwFirst","rwLast","write_Ref8U","write_BOF","write_BoundSheet8","hs","write_Format","b5","write_XF","ixfeP","parse_ExternSheet","parse_BIFF5ExternSheet","write_HLink","write_HLinkTooltip","Tooltip","parse_ColInfo","cellStyles","colFirst","colLast","coldx","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","hend","sheetRows","dbf_to_aoa","wch","_RLEN","to_workbook","to_sheet","from_sheet","aoa","sheet_to_json","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","rout","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","records","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","RT","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","hidden","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","preamble","RS","rec","wpx","width2px","px2char","rows","px2pt","write_ws_rows_sylk","coord","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sep","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","dateNF_regex","finish_cell","datestr","timestr","dateNF_fix","cellText","cellNF","outer","prn_to_sheet_str","lines","prn_to_aoa_str","prn_to_sheet","bytes","firstbyte","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","parse_cell","parse_LABEL","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","rel","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","v1","v2","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","book_to_wk3","wscnt","write_BOF_WK3","straywsregex","write_sst_xml","sst","bookSST","Count","uniqueCount","Unique","sitag","write_BrtSSTItem","write_sst_bin","write_BrtBeginSst","_JS2ANSI","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","Verifier","PasswordDecoded","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rgb2Hex","MDW","px","char2width","chr","coll","customWidth","write_sty_xml","SSF","NF","formatCode","write_numFmts","cellXfs","write_cellXfs","write_BrtFmt","write_BrtFont","font","grbit","italic","strike","outline","shadow","condense","write_FontFlags","bold","sss","vertAlign","underline","family","charset","scheme","rev_XLSBFillPTNames","XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","patternType","write_BrtXF","write_Blxf","parse_BrtBorder","write_BORDERS_bin","write_STYLES_bin","xfId","builtinId","write_BrtStyle","write_TABLESTYLES_bin","defTableStyle","defPivotStyle","write_BrtBeginTableStyles","write_sty_bin","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","fontId","fillId","borderId","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_DXFS_bin","write_theme","Themes","themeXLSX","write_xlmeta_bin","write_BrtMdtinfo","write_BrtBeginEsfmd","cm","write_BrtBeginEsmdb","mdb","write_BrtMdb","write_xlmeta_xml","_shapeid","write_comments_vml","csize","bbox","joinstyle","gradientshapeok","coordsize","fillopts","angle","fillparm","fillxml","fillcolor","strokecolor","on","write_comments_xml","iauthor","ID","lastauthor","ts","write_tcmnt_xml","people","carr","rootid","tcopts","tcid","parentId","personId","parse_BrtCommentAuthor","write_comments_bin","comment","write_BrtCommentAuthor","write_BrtBeginComment","VBAFMTS","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","cce","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","tab","parsetab","Cetab","nameindex","parse_RgceLocRel_BIFF2","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitIf","bitGoto","parse_RgbExtra","rgce","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti_raw","supbooks","XTI","SID","Name","get_ixti","ixtiraw","sname","formula_quote_sheet_name","stringify_formula","nameidx","last_sp","sp","fflen","lbl","xlfn","externbook","bookidx","itab","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","write_Formula","os","o1","write_FormulaValue","o3","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","browser_has_Map","get_sst_id","revarr","col_obj_w","outlineLevel","default_margins","margins","defs","footer","get_cell_style","revssf","ssf","applyNumberFormat","check_ws","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_cell","oldt","oldv","Strings","revStrings","write_ws_xml","rdata","_drawing","needed","vbaraw","cname","Workbook","CodeName","codeName","outlineprops","summaryBelow","summaryRight","above","write_ws_xml_sheetpr","sview","workbookViewId","Views","rightToLeft","RTL","write_ws_xml_sheetviews","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","write_ws_xml_cols","_cell","customHeight","write_ws_xml_data","write_ws_xml_protection","Names","Sheet","Ref","write_ws_xml_autofilter","merges","write_ws_xml_merges","relc","ignoreEC","numberStoredAsText","sqref","write_row_header","miyRw","ncolspan","lcs","caddr","first","write_BrtRowHdr","parse_BrtWsDim","write_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","last_seen","ncell","write_BrtShortIsst","write_BrtCellIsst","write_BrtShortSt","write_BrtCellSt","write_BrtShortRk","write_BrtCellRk","write_BrtShortReal","write_BrtCellReal","write_BrtShortBool","write_BrtCellBool","write_BrtShortError","write_BrtCellError","write_BrtShortBlank","write_BrtCellBlank","write_MERGECELLS","write_COLINFOS","write_BrtColInfo","write_IGNOREECS","write_BrtCellIgnoreEC","write_HLINKS","locidx","write_BrtHLink","write_WSVIEWS2","write_BrtBeginWsView","write_SHEETPROTECT","write_ws_bin","write_BrtWsProp","cap","write_CELLTABLE","write_AUTOFILTER","write_LEGACYDRAWING","WBPropsDef","badchars","check_ws_name","safe","_good","check_wb","codes","cn","write_wb_xml","write_names","workbookPr","WBProps","Hidden","sheetId","Comment","localSheetId","write_BOOKVIEWS","vistab","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","iTabID","strRelID","write_BrtBundleSh","write_BUNDLESHS","write_ws","write_cmnt","write_props_xlml","xlml_write_docprops","Custprops","BLACKLIST","xlml_write_custprops","write_name_xlml","write_ws_xlml_cell","marr","_v","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","skip","write_ws_xlml_table","objects","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","write_sty_xlml","write_names_xlml","PSCLSID","write_xlscfb","wbpath","write_biff_buf","Keys","DSEntries","SEntries","CEntries","DocSummaryRE","SummaryRE","CEntries2","write_xls_props","vba","newpath","fill_vba_xls","cellFormula","Ptg","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","bR","bG","bB","icv","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","rfx","fAlwaysCalc","relId","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2INT","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_biff2_buf","write_ws_biff2","write_FONTS_biff8","write_Font","write_ws_cols_biff8","write_ColInfo","write_ws_biff8_cell","write_Number","write_BoolErr","write_LabelSst","b8","write_Label","write_ws_biff8","_WB","_sheet","MAX_ROWS","guts","write_Guts","write_Dimensions","write_Window2","write_MergeCells","HL","write_ws_biff8_hlinks","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","write_Window1","safe1904","write_FMTS_biff8","write_CELLXFS_biff8","write_biff_continue","write_SST","blen","fix_write_opts","write_biff8_buf","make_html_row","rowspan","colspan","editable","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","getElementsByTagName","midx","is_dom_element_hidden","elts","hasAttribute","getAttribute","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","getPropertyValue","write_styles_ods","master_styles","write_content_ods","null_cell_xml","ods","ROWS","textp","_Fref","text_p","_tgt","fods","cidx","colobj","write_automatic_styles_ods","write_ods","manifest","rdf","write_rdf","write_manifest","u8_to_dataview","DataView","stru8","u8concat","u8a","u8","parse_varint49","ptr","varint","write_varint49","varint_to_i32","i32","parse_shallow","num","write_shallow","parse_iwa_file","messages","write_iwa_file","ias","midata","aipayload","mid","parse_snappy_chunk","chunks","decompress_iwa_file","compress_iwa_file","write_new_storage","dv","exp","mantissa","writeDecimal128LE","setFloat64","setUint32","write_old_storage","parse_TSP_Reference","write_tile_row","tri","_c","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","setUint16","fix_opts_func","numbers","trunc","dependents","indices","packet2","y2","indices_varint","ivi","mess","u8contains","docroot","packet","sheetrootref","cruidsref","oldbucket","_x","cruids","uuid","store","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sstroot","sxi","sstdata","newsst","raw32","tile","tileref","tileroot","tentry","tx","tiledata","rowload","R2","tilerow","raw3","write_numbers_iwa","wbrels","foo","wbext","vbafmt","threadedcomments","links","coreprops","extprops","custprops","themes","calcchains","drawings","TODO","_sn","wsrels","need_vml","rId1","write_sst","write_wb","write_sty","write_xlmeta","write_zip_xlsxb","write_zip_xlsx","needtc","person","userId","providerId","write_people_xml","write_cfb_ctr","write_zip_denouement","oopts","ftype","generate","encrypt_agile","write_string_type","bom","write_binary_type","writeSync","write_stxt_type","sheet_to_txt","sheet_to_csv","write_cfb_type","write_zip_type","resolve_book_type","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","rs","txt","forceQuotes","endregex","strip","sheet_add_json","js","skipHeader","JS","ws_get_cell_stub","RC","book_new","book_append_sheet","roll","cell_set_hyperlink","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_set_sheet_visibility","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","author","sheet_set_array_formula","dynamic","rng","rngstr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","ExportToExcel","dateFilter","exportToCSV","apiData","downloadHandler","dateType","alert","xlsICON","isLeader","setIsLeader","dataPayout","setDataPayout","dataPayoutFiltered","setDataPayoutFiltered","dataDashboard","setDataDashboard","dataDashboardFiltered","setDataDashboardFiltered","dataVisits","setDataVisits","dataVisitsFiltered","setDataVisitsFiltered","conversionRate","unpaidReferrals","paidReferrals","isConverted","expectedRevenue","actualRevenue","commissionRevenue","actualCommission","paidEarnings","unPaidEarning","visits","referralsSucceed","referralsCounting","setReferralsCounting","setFilterDate","calcRevenuePercent","contractType","responseDashboard","dashboard","payouts","team_data","sumTotalEarnings","sumUnPaidEarnings","affiliateUnPayoutMonths","affiliatePayoutMonths","leads","percent","contract_type","affiliateDashboardMonths","is_converted","deal_stage","lead_amount","payout_date","filterRangeDate","entryDate","filterPass","dateEntry","payoutFilterTmp","dashboardFilterTmp","visitsFilterTmp","order_date","toLocaleString","referralsApi","getReferrals","onSelectStatus","referrals","setReferrals","referralsFiltered","setReferralsFiltered","getAllReferrals","lead_id","customer_name","deal_amount","deal_owner","deal_closing_date","colSpan","urlsApi","getUrls","setUrl","campaign","setCampaign","setLink","responseUrls","urls","copyLink","getElementsByClassName","clipboard","writeText","payoutsApi","getPayouts","getPayoutsData","payout_method","visitsApi","getVisits","page","setVisits","totalPage","setTotalPage","currentPage","setCurrentPage","isChangePage","setIsChangePage","responseVisits","trimReferralLink","linkPeaces","handlePaginationClick","handleNext","handlePrev","pagination","referral","visit_id","ariaLabel","creativesApi","getCreatives","creative","onCopy","onView","image","onCloseModal","creatives","setCreatives","creativeDetail","setCreativeDetail","modalOpen","setModalOpen","responseCreatives","innerText","copyHandler","creative_id","viewHandler","_extends","ReCAPTCHA","_React$Component","handleExpired","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","getWidgetId","_executeRequested","executeAsync","executionResolve","executionReject","onExpired","onErrored","explicitRender","wrapper","sitekey","tabindex","stoken","badge","captcha","delayOfCaptchaIframeRemoving","temporaryNode","childProps","SCRIPT_MAP","idCount","callbackName","getScriptURL","recaptchaOptions","useRecaptchaNet","globalName","wrappedComponentName","AsyncScriptLoader","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","_this3","scriptURL","scriptId","script","callObserverFuncAndRemoveObserver","observersMap","onload","observer","removeOnUnmount","allScripts","forwardedRef","ForwardedComponent","hoistStatics","loginApi","login","searchUser","getAffiliateByUserID","userID","recaptchaRef","usernameInput","setUsernameInput","passwordInput","setPasswordInput","rememberMe","setRememberMe","setError","isLoading","setIsLoading","loginSubmit","recaptcha","dataResponse","userFormData","userData","user_id","userMetaData","encryptedAffiliateId","jwt_token","error_description","elsaLogo","onSubmit","htmlFor","elsaloginpic","profileApi","uploadPhoto","getAffiliateById","updateAffiliateProfile","profileUpdated","initialValues","bankName","bankAccountNo","bankAccountName","bankAccountBranch","frontSide","backSide","dateIssued","placeIssued","taxCode","idCode","address","listBanks","isFrontUloading","setIsFrontUploading","isBackUloading","setIsBackUploading","setProfile","isSubmitting","setIsSubmitting","setStatus","frontSideRef","backSideRef","bank_name","bank_account_no","bank_account_name","bank_account_branch","id_image_1","id_image_2","date_issued","place_issued","tax_code","id_code","shipping_street","getAffiliate","handleUpload","identifer","handleSubmit","validateForm","validateNumber","validatePhoneNumber","validateRequired","encType","bank","class","accept","int","affiliateData","currentTab","affiliate","setAffiliate","numOfDeal","numOfLead","revenue","affiliateStats","setAffiliateStats","deal","lead","formatData","full_name","formatCurrency","teamDataGrouped","setTab","handleTab","teamLeadData","setTeamLeadData","teamLeadDataFiltered","setTeamLeadDataFiltered","numOfMembers","teamStats","setTeamStats","teamDataGroup","setTeamDataGroup","groupData","existingCategory","newCategory","groupBy","teamDataFilterTmp","isLoggedIn","transport","initAndBind","browserInit","Sentry","tracesSampleRate"],"sourceRoot":""}