{"version":3,"file":"static/js/main.049ca202.js","mappings":"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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,MACnB,IAAe,CAAEA,EAAE,cAAeN,EAAE4+M,GACpC,IAAe,CAAEt+M,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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,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,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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","sources":["../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/lodash/lodash.js","../node_modules/moment/moment.js","../node_modules/property-expr/index.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-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/redux-persist/lib/storage/createWebStorage.js","../node_modules/redux-persist/lib/storage/getStorage.js","../node_modules/redux-persist/lib/storage/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tiny-case/index.js","../node_modules/toposort/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.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/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/clsx/dist/clsx.m.js","assets/linked-in.svg","assets/facebook.svg","assets/twitter.svg","assets/UKAS.svg","assets/ISO9001.svg","assets/ISO14001.svg","assets/Mzuri_logo (3).svg","features/layout/components/Footer.tsx","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/index.js","../node_modules/react-redux/es/components/connect.js","assets/shopping-cart-white.svg","assets/red-circle-svgrepo-com.svg","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/plugins/patches.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/matchers.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","features/auth/slices/slice.ts","app/hooks.ts","../node_modules/reselect/es/defaultMemoize.js","../node_modules/reselect/es/index.js","../node_modules/@reduxjs/toolkit/src/query/core/apiState.ts","../node_modules/@reduxjs/toolkit/src/query/utils/joinUrls.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isAbsoluteUrl.ts","../node_modules/@reduxjs/toolkit/src/query/utils/flatten.ts","../node_modules/@reduxjs/toolkit/src/query/utils/copyWithStructuralSharing.ts","../node_modules/@reduxjs/toolkit/src/query/fetchBaseQuery.ts","../node_modules/@reduxjs/toolkit/src/query/HandledError.ts","../node_modules/@reduxjs/toolkit/src/query/retry.ts","../node_modules/@reduxjs/toolkit/src/query/endpointDefinitions.ts","../node_modules/@reduxjs/toolkit/src/query/core/setupListeners.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isNotNullish.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildInitiate.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildThunks.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSlice.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isOnline.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isDocumentVisible.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSelectors.ts","../node_modules/@reduxjs/toolkit/src/query/defaultSerializeQueryArgs.ts","../node_modules/@reduxjs/toolkit/src/query/createApi.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheCollection.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/batchActions.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/invalidationByTags.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/polling.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/devMiddleware.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/windowEventHandling.ts","../node_modules/@reduxjs/toolkit/src/query/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/query/core/module.ts","../node_modules/@reduxjs/toolkit/src/query/core/index.ts","../node_modules/@reduxjs/toolkit/src/query/react/useSerializedStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/react/constants.ts","../node_modules/@reduxjs/toolkit/src/query/react/useShallowStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/react/buildHooks.ts","../node_modules/@reduxjs/toolkit/src/query/utils/capitalize.ts","../node_modules/@reduxjs/toolkit/src/query/react/module.ts","../node_modules/@reduxjs/toolkit/src/query/react/index.ts","app/api/slice.ts","features/basket/slices/apiSlice.ts","features/layout/components/AuthenticatedNavLinks.tsx","assets/mobile-logo.svg","assets/mobile-menu.svg","assets/my-account.svg","assets/my-details.svg","assets/open-orders.svg","assets/order-products.svg","assets/view-basket.svg","assets/mobile-x.svg","features/layout/components/Navbar.tsx","features/layout/components/GenericRenderingError.tsx","app/App.tsx","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/utils.ts","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/connect.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/ErrorMessage.tsx","features/auth/slices/apiSlice.ts","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/yup/index.esm.js","features/auth/components/Login.tsx","features/auth/pages/LoginPage.tsx","features/home/components/Tile.tsx","features/layout/slice.ts","features/home/components/InformationTile.tsx","assets/download-svgrepo-com.svg","features/home/components/OutOfStockTile.tsx","features/home/slices/apiSlice.ts","features/home/components/NotificationTile.tsx","features/home/pages/HomePage.tsx","features/auth/components/RequireAuth.tsx","features/ordering/slices/apiSlice.ts","features/ordering/slices/slice.ts","features/ordering/components/ProductSearchFilters.tsx","assets/truck.svg","assets/truck-blue.svg","assets/favourite.svg","assets/favourite-gold.svg","assets/hide_image.svg","assets/shopping-mode.svg","assets/shopping-mode-blue.svg","features/ordering/components/ProductSearchResultsTableRow.tsx","assets/modal-close.svg","features/layout/components/Modal.tsx","assets/tag.svg","features/ordering/components/MultiBuyModal.tsx","features/ordering/components/DeliveryScheduleModal.tsx","assets/product-image.svg","features/ordering/components/ProductImageModal.tsx","features/ordering/components/ProductSearchResultsTable.tsx","assets/star-svgrepo-com.svg","assets/filled-star-svgrepo-com.svg","features/ordering/components/FavouriteProductsFilter.tsx","assets/tick-circle-svgrepo-com.svg","assets/tick-white-circle-svgrepo-com.svg","features/ordering/components/UsualProductsFilter.tsx","../node_modules/xlsx/xlsx.mjs","features/ordering/components/DownloadSearchResultsButton.tsx","features/ordering/components/PaginationControls.tsx","assets/reset.svg","features/ordering/components/ClearSearchButton.tsx","features/ordering/pages/OrderProductsPage.tsx","assets/edit.svg","assets/trash.svg","assets/tick-circle.svg","assets/cross-circle.svg","features/basket/components/BasketQuantityInputGroup.tsx","features/basket/components/BasketTableRow.tsx","features/basket/components/BasketTable.tsx","features/checkout/components/OrderSummary.tsx","features/checkout/slices/slice.ts","features/checkout/components/CannotPlaceOrderModal.tsx","features/basket/pages/MyBasket.tsx","features/checkout/components/CustomerDetails.tsx","features/checkout/slices/apiSlice.ts","features/checkout/components/DeliveryDetails.tsx","features/checkout/components/CheckoutProgressBar.tsx","features/checkout/pages/DeliveryInformationPage.tsx","assets/Invoice.svg","assets/side-chevron.svg","assets/checkbox-unchecked-svgrepo-com.svg","assets/checkbox-check-svgrepo-com.svg","features/account/slices/slice.ts","features/account/components/InvoiceTableRow.tsx","features/account/components/InvoiceTable.tsx","features/account/components/PaidInvoiceModal.tsx","features/account/components/PayInvoicesTile.tsx","features/account/slices/apiSlice.ts","features/account/pages/MyAccountPage.tsx","features/open-orders/slices/apiSlice.ts","features/open-orders/slices/slice.ts","features/open-orders/components/OpenOrdersTableRow.tsx","features/open-orders/components/OrderTackingModal.tsx","assets/sort-arrows.svg","assets/sort-up.svg","assets/sort-down.svg","features/open-orders/components/OpenOrdersTable.tsx","assets/search-svgrepo-com.svg","features/open-orders/components/OpenOrdersSearchFilter.tsx","assets/tick.svg","features/checkout/components/ConfirmOrderModal.tsx","features/open-orders/pages/OpenOrdersPage.tsx","features/details/components/AccountDetailsTable.tsx","assets/download-svgrepo-white.svg","features/details/slices/apiSlice.ts","features/details/components/BalanceDetailsTable.tsx","features/details/pages/MyDetailsPage.tsx","features/auth/components/ChangePassword.tsx","features/auth/pages/ChangePasswordPage.tsx","features/account/components/TransactionDetails.tsx","features/account/components/TransactionTable.tsx","assets/shopping-cart-black.svg","features/account/components/CopyOrderModal.tsx","features/account/pages/ViewTransactionPage.tsx","features/open-orders/components/OrderEnquiryDetails.tsx","features/open-orders/components/OrderEnquiryTable.tsx","features/open-orders/components/CopyOrderEquiryModal.tsx","features/open-orders/components/CancelOrderModal.tsx","features/open-orders/pages/OpenOrderEnquiryPage.tsx","assets/up-chevron-svgrepo-com (1).svg","assets/down-chevron-svgrepo-com.svg","features/checkout/components/DeliveryInformationCollapsible.tsx","features/checkout/components/ReviewTableRow.tsx","features/checkout/components/ReviewTable.tsx","features/checkout/components/ReviewOrderCollapsible.tsx","features/checkout/components/TermsAndConditionsCollapsible.tsx","features/checkout/pages/ReviewOrderPage.tsx","features/auth/pages/RedirectSSOPage.tsx","app/router/Routes.tsx","../node_modules/redux-persist/es/constants.js","../node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","../node_modules/redux-persist/es/createPersistoid.js","../node_modules/redux-persist/es/getStoredState.js","../node_modules/redux-persist/es/purgeStoredState.js","../node_modules/redux-persist/es/persistReducer.js","../node_modules/redux-persist/es/persistStore.js","app/store.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux-persist/es/integration/react.js","index.tsx"],"sourcesContent":["'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\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', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/**\n * @license React\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}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||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",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<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";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<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){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;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 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 b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;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<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=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\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(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<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>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(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(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;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?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<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\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;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(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;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(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(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?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;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-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<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.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 && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\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('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\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'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @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<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","/**\n * @license React\n * scheduler.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';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(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()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(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","const reWords = /[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+|(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*/g\n\nconst words = (str) => str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","/**\n * @license React\n * use-sync-external-store-shim.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 e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.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 h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\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};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.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 = \"/\";","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an <a href> attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route (<Route path=\"*\">) since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly<Location> {\n let location: Readonly<Location> = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial<Path>) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n let parsedPath: Partial<Path> = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\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}","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}","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 _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\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}","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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _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, toPropertyKey(descriptor.key), descriptor);\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}","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 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 _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}","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 try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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 return 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 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 return possibleConstructorReturn(this, result);\n };\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 return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\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 try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\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 defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\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 exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\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 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\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 reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\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 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 \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\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 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 function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\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 if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), 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 (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\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 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) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\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 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 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 if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\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 if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\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 if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\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 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 _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\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 return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\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 var F = function F() {};\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 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 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 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 _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}","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;\n\n/**\n * Users can specify either lowercase or uppercase form methods on <Form>,\n * useSubmit(), <fetcher.Form>, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude<FormMethod, \"get\">;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude<V7_FormMethod, \"GET\">;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable<unknown> | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise<DataFunctionValue> | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise<DataFunctionValue> | DataFunctionValue;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record<string, any>;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set<ImmutableRouteKey>([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne<T, Key = keyof T> = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit<T, K> & Required<Pick<T, K>> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction<R extends AgnosticRouteObject> {\n (): Promise<RequireOne<Omit<R, ImmutableRouteKey>>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam<L> | _PathParam<R>\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam<Path extends string> =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam<Rest>\n : // look for params in the absence of wildcards\n _PathParam<Path>;\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<Segment extends string> =\n // if could not find path params, fallback to `string`\n [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | 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<string, RouteObjectType>(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch<RouteObjectType>[] = [],\n parentsMeta: RouteMeta<RouteObjectType>[] = [],\n parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta<RouteObjectType> = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch<RouteObjectType>,\n pathname: string\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\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 // TODO: Can this as be avoided?\n params: matchedParams as Params<ParamKey>,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n originalPath: Path,\n params: {\n [key in PathParam<Path>]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam<Path>;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam<Path>];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\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<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\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<T> = {\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/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | 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<Mutable<Params>>(\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 if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\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 * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial<Path>\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in <Link to=\"...\"> and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial<Path>;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || 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 <a href> 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\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise<any> {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set<string> = new Set<string>();\n private controller: AbortController;\n private abortPromise: Promise<void>;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record<string, unknown>;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record<string, unknown>, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise<unknown> | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record<string, unknown>,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n MapRoutePropertiesFunction,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record<string, number>,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise<void>;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise<void>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher<TData = any>(key?: string): Fetcher<TData>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map<string, AbortController>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map<string, Fetcher>;\n\n /**\n * Map of current blockers\n */\n blockers: Map<string, Blocker>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial<FutureConfig>;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n actionHeaders: Record<string, Headers>;\n activeDeferreds: Record<string, DeferredData> | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise<StaticHandlerContext | Response>;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise<any>;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher<TData = any> =\n FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set<RouterSubscriber>();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record<string, number> | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map<string, AbortController>();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map<string, number>();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set<string>();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map<string, DeferredData>();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map<string, BlockerFunction>();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial<RouterState>): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise<void> {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise<void> {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a <Form method=\"post\">\n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise<HandleActionResult> {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise<HandleLoadersResult> {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher<TData = any>(key: string): Fetcher<TData> {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let activeSubmission =\n submission || getSubmissionFromNavigation(state.navigation);\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: getLoadingNavigation(redirectLocation),\n fetcherSubmission: activeSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a submission, we will preserve it through the redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n activeSubmission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(\n positions: Record<string, number>,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => createUseMatchesMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise<StaticHandlerContext | Response> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise<any> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map<string, DeferredData>();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set<string>(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map<string, FetchLoadMatch>,\n fetchRedirectIds: Set<string>,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters<ShouldRevalidateFunction>[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record<string, any> = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise<DataResult> {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map<string, DeferredData>\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record<string, Headers> = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map<string, DeferredData>\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\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 <Router> 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 interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\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<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n IDLE_BLOCKER,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\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/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): 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 <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : 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 <Router>.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\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/hooks/use-location\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 <Router> 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/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | 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 <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(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\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): 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 <Router> component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\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 getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\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 options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(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/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): 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 <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\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/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\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/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\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 <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string,\n dataRouterState?: RemixRouter[\"state\"]\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 <Router> component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\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 <Routes> under a <Route>\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 // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) 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 <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\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 \\`<Routes location>\\` 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\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 matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n <LocationContext.Provider\n value={{\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location,\n },\n navigationType: NavigationType.Pop,\n }}\n >\n {renderedMatches}\n </LocationContext.Provider>\n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n <p>💿 Hey developer 👋</p>\n <p>\n You can provide a way better UX than this when your app throws errors\n by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n <code style={codeStyles}>errorElement</code> prop on your route.\n </p>\n </>\n );\n }\n\n return (\n <>\n <h2>Unexpected Application Error!</h2>\n <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n {stack ? <pre style={preStyles}>{stack}</pre> : null}\n {devInfo}\n </>\n );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n <RouteContext.Provider value={this.props.routeContext}>\n <RouteErrorContext.Provider\n value={this.state.error}\n children={this.props.component}\n />\n </RouteContext.Provider>\n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch<string, RouteObject>;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n <RouteContext.Provider value={routeContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `<Route Component={...}>` in `<Routes>` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = <match.route.Component />;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n <RenderedRoute\n match={match}\n routeContext={{\n outlet,\n matches,\n isDataRoute: dataRouterState != null,\n }}\n children={children}\n />\n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n <RenderErrorBoundary\n location={dataRouterState.location}\n revalidation={dataRouterState.revalidation}\n component={errorElement}\n error={error}\n children={getChildren()}\n routeContext={{ outlet: null, matches, isDataRoute: true }}\n />\n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback<BlockerFunction>(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n To,\n LazyRouteFunction,\n RelativeRoutingType,\n RouterState,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n RouteContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n useRoutesImpl,\n useLocation,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: FutureConfig;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: RouterState) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return (\n <>\n <DataRouterContext.Provider value={dataRouterContext}>\n <DataRouterStateContext.Provider value={state}>\n <Router\n basename={basename}\n location={state.location}\n navigationType={state.historyAction}\n navigator={navigator}\n >\n {state.initialized ? (\n <DataRoutes routes={router.routes} state={state} />\n ) : (\n fallbackElement\n )}\n </Router>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n {null}\n </>\n );\n}\n\nfunction DataRoutes({\n routes,\n state,\n}: {\n routes: DataRouteObject[];\n state: RouterState;\n}): React.ReactElement | null {\n return useRoutesImpl(routes, undefined, state);\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n future?: FutureConfig;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n future,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\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/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: 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 `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n\n // Resolve the path outside of the effect so that when effects run twice in\n // StrictMode they navigate to the same place\n let path = resolveTo(\n to,\n getPathContributingMatches(matches).map((match) => match.pathnameBase),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n\n React.useEffect(\n () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n [navigate, jsonPath, relative, 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/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<NonIndexRouteObject>;\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<IndexRouteObject>;\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | 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 <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/router-components/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 <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\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 locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n },\n navigationType,\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (locationContext == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider children={children} value={locationContext} />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n <ResolveAwait>{children}</ResolveAwait>\n </AwaitErrorBoundary>\n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return <AwaitContext.Provider value={promise} children={errorElement} />;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return <AwaitContext.Provider value={promise} children={children} />;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\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 let treePath = [...parentPath, index];\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, treePath)\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 <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary:\n element.props.ErrorBoundary != null ||\n element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\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","import * as React from \"react\";\nimport type {\n ActionFunction,\n ActionFunctionArgs,\n Blocker,\n BlockerFunction,\n Fetcher,\n HydrationState,\n JsonFunction,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n Navigation,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n PathPattern,\n RedirectFunction,\n RelativeRoutingType,\n Router as RemixRouter,\n ShouldRevalidateFunction,\n To,\n InitialEntry,\n LazyRouteFunction,\n FutureConfig as RouterFutureConfig,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n createPath,\n createRouter,\n defer,\n generatePath,\n isRouteErrorResponse,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n resolvePath,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n AwaitProps,\n MemoryRouterProps,\n NavigateProps,\n OutletProps,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n RoutesProps,\n RouterProviderProps,\n FutureConfig,\n} from \"./lib/components\";\nimport {\n createRoutesFromChildren,\n renderMatches,\n Await,\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n} from \"./lib/components\";\nimport type {\n DataRouteMatch,\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NavigateOptions,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./lib/context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n useBlocker,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigationType,\n useNavigate,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRoutes,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useRouteId,\n useLoaderData,\n useMatches,\n useNavigation,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n Blocker as unstable_Blocker,\n BlockerFunction as unstable_BlockerFunction,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n FutureConfig,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LazyRouteFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n};\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createPath,\n createRoutesFromChildren,\n createRoutesFromChildren as createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useBlocker as unstable_useBlocker,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n };\n\n if (route.Component) {\n if (__DEV__) {\n if (route.element) {\n warning(\n false,\n \"You should not include both `Component` and `element` on your route - \" +\n \"`Component` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n element: React.createElement(route.Component),\n Component: undefined,\n });\n }\n\n if (route.ErrorBoundary) {\n if (__DEV__) {\n if (route.errorElement) {\n warning(\n false,\n \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n \"`ErrorBoundary` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n errorElement: React.createElement(route.ErrorBoundary),\n ErrorBoundary: undefined,\n });\n }\n\n return updates;\n}\n\nexport function createMemoryRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n hydrationData?: HydrationState;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createMemoryHistory({\n initialEntries: opts?.initialEntries,\n initialIndex: opts?.initialIndex,\n }),\n hydrationData: opts?.hydrationData,\n routes,\n mapRouteProperties,\n }).initialize();\n}\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 NavigationContext as UNSAFE_NavigationContext,\n LocationContext as UNSAFE_LocationContext,\n RouteContext as UNSAFE_RouteContext,\n DataRouterContext as UNSAFE_DataRouterContext,\n DataRouterStateContext as UNSAFE_DataRouterStateContext,\n mapRouteProperties as UNSAFE_mapRouteProperties,\n useRouteId as UNSAFE_useRouteId,\n useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n","import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\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}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\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\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `<form method>`.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides `<form action>`.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides `<form encType>`.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n}\n\nconst supportedFormEncTypes: Set<FormEncType> = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n\n // <button>/<input type=\"submit\"> may override attributes of <form>\n\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n\n method =\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n encType =\n getFormEncType(target.getAttribute(\"formenctype\")) ||\n getFormEncType(form.getAttribute(\"enctype\")) ||\n defaultEncType;\n\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or ` +\n `<input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n\n return { action, method: method.toLowerCase(), encType, formData, body };\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 {\n FutureConfig,\n Location,\n NavigateOptions,\n NavigationType,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n unstable_useBlocker as useBlocker,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_mapRouteProperties as mapRouteProperties,\n UNSAFE_useRouteId as useRouteId,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n FutureConfig as RouterFutureConfig,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HTMLFormMethod,\n HydrationState,\n Router as RemixRouter,\n V7_FormMethod,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n joinPaths,\n stripBasename,\n ErrorResponse,\n UNSAFE_invariant as invariant,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n SubmitTarget,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n V7_FormMethod,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n unstable_Blocker,\n unstable_BlockerFunction,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LazyRouteFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n unstable_useBlocker,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\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_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_useRouteId,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n basename?: string;\n future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors),\n };\n }\n return state;\n}\n\nfunction deserializeErrors(\n errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponse(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n future,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n window?: Window;\n}\n\n/**\n * A `<Router>` 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({\n basename,\n children,\n future,\n window,\n}: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n history: History;\n}\n\n/**\n * A `<Router>` 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({\n basename,\n children,\n future,\n history,\n}: HistoryRouterProps) {\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let { basename } = React.useContext(NavigationContext);\n\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\")\n ? new URL(currentUrl.protocol + to)\n : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break ` +\n `when clicked - please update to a valid URL path.`\n );\n }\n }\n }\n\n // Rendered into <a href> for relative URLs\n let href = useHref(to, { relative });\n\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={absoluteHref || href}\n onClick={isExternal || reloadDocument ? onClick : handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\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 path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n let { navigator } = React.useContext(NavigationContext);\n\n let toPathname = navigator.encodeLocation\n ? navigator.encodeLocation(path).pathname\n : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\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 isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.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, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />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 = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FetcherFormProps\n extends React.FormHTMLAttributes<HTMLFormElement> {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: HTMLFormMethod;\n\n /**\n * `<form encType>` - enhancing beyond the normal string type and limiting\n * to the built-in browser supported values\n */\n encType?:\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"text/plain\";\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * Prevent the scroll position from resetting to the top of the viewport on\n * completion of the navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\nexport interface FormProps extends FetcherFormProps {\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n}\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n let submit = useSubmit();\n return <FormImpl {...props} submit={submit} ref={ref} />;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n submit: SubmitFunction | FetcherSubmitFunction;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n submit,\n relative,\n preventScrollReset,\n ...props\n },\n forwardedRef\n ) => {\n let formMethod: HTMLFormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n let submitMethod =\n (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n method;\n\n submit(submitter || event.currentTarget, {\n method: submitMethod,\n replace,\n state,\n relative,\n preventScrollReset,\n });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={reloadDocument ? onSubmit : submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n FormImpl.displayName = \"FormImpl\";\n}\n\nexport interface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmit = \"useSubmit\",\n UseSubmitFetcher = \"useSubmitFetcher\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\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 let hasSetSearchParamsRef = React.useRef(false);\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback<SetURLSearchParams>(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\nexport type SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `<form>` to be submitted to the server, a specific\n * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n * arbitrary data to submit.\n *\n * Note: When using a `<button>` its `name` and `value` will also be\n * included in the form data that is submitted.\n */\n target: SubmitTarget,\n\n /**\n * Options that override the `<form>`'s own attributes. Required when\n * submitting arbitrary data without a backing `<form>`.\n */\n options?: SubmitOptions\n ): void;\n}\n\n/**\n * Submits a fetcher `<form>` to the server without reloading the page.\n */\nexport interface FetcherSubmitFunction {\n (\n target: SubmitTarget,\n // Fetchers cannot replace or set state because they are not navigation events\n options?: Omit<SubmitOptions, \"replace\" | \"state\">\n ): void;\n}\n\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\n \"You are calling submit during the server render. \" +\n \"Try calling submit within a `useEffect` or callback instead.\"\n );\n }\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmit);\n let { basename } = React.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n\n return React.useCallback<SubmitFunction>(\n (target, options = {}) => {\n validateClientSideSubmission();\n\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n });\n },\n [router, basename, currentRouteId]\n );\n}\n\n/**\n * Returns the implementation for fetcher.submit\n */\nfunction useSubmitFetcher(\n fetcherKey: string,\n fetcherRouteId: string\n): FetcherSubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmitFetcher);\n let { basename } = React.useContext(NavigationContext);\n\n return React.useCallback<FetcherSubmitFunction>(\n (target, options = {}) => {\n validateClientSideSubmission();\n\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n\n invariant(\n fetcherRouteId != null,\n \"No routeId available for useFetcher()\"\n );\n router.fetch(fetcherKey, fetcherRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n });\n },\n [router, basename, fetcherKey, fetcherRouteId]\n );\n}\n\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nexport function useFormAction(\n action?: string,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n let { basename } = React.useContext(NavigationContext);\n let routeContext = React.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n // Previously we set the default action to \".\". The problem with this is that\n // `useResolvedPath(\".\")` excludes search params of the resolved URL. This is\n // the intended behavior of when \".\" is specifically provided as\n // the form action, but inconsistent w/ browsers when the action is omitted.\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n\n // When grabbing search params from the URL, remove the automatically\n // inserted ?index param so we match the useResolvedPath search behavior\n // which would not include ?index\n if (match.route.index) {\n let params = new URLSearchParams(path.search);\n params.delete(\"index\");\n path.search = params.toString() ? `?${params.toString()}` : \"\";\n }\n }\n\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FetcherFormProps>(\n (props, ref) => {\n let submit = useSubmitFetcher(fetcherKey, routeId);\n return <FormImpl {...props} ref={ref} submit={submit} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: FetcherSubmitFunction;\n load: (href: string) => void;\n};\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>(): FetcherWithComponents<TData> {\n let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => {\n invariant(routeId, `No routeId available for fetcher.Form()`);\n return createFetcherForm(fetcherKey, routeId);\n });\n let [load] = React.useState(() => (href: string) => {\n invariant(router, \"No router available for fetcher.load()\");\n invariant(routeId, \"No routeId available for fetcher.load()\");\n router.fetch(fetcherKey, routeId, href);\n });\n let submit = useSubmitFetcher(fetcherKey, routeId);\n\n let fetcher = router.getFetcher<TData>(fetcherKey);\n\n let fetcherWithComponents = React.useMemo(\n () => ({\n Form,\n submit,\n load,\n ...fetcher,\n }),\n [fetcher, Form, submit, load]\n );\n\n React.useEffect(() => {\n // Is this busted when the React team gets real weird and calls effects\n // twice on mount? We really just need to garbage collect here when this\n // fetcher is no longer around.\n return () => {\n if (!router) {\n console.warn(`No router available to clean up from useFetcher()`);\n return;\n }\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n\n return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): Fetcher[] {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return [...state.fetchers.values()];\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n DataRouterStateHook.UseScrollRestoration\n );\n let { basename } = React.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n\n // Save positions on pagehide\n usePageHide(\n React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches])\n );\n\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename: GetScrollRestorationKeyFunction | undefined =\n getKey && basename !== \"/\"\n ? (location, matches) =>\n getKey(\n // Strip the basename to match useLocation()\n {\n ...location,\n pathname:\n stripBasename(location.pathname, basename) ||\n location.pathname,\n },\n matches\n )\n : getKey;\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKeyWithoutBasename\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n callback: (event: BeforeUnloadEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n callback: (event: PageTransitionEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt({ when, message }: { when: boolean; message: string }) {\n let blocker = useBlocker(when);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n//#endregion\n","'use client';\nimport { createContext, Component, isValidElement, createElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (isValidElement(fallback)) {\n childToRender = fallback;\n } else if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n return true;\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context === null || context === void 0 ? void 0 : context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context === null || context === void 0 ? void 0 : context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\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 return keys;\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 return target;\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 if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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 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 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 return target;\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","var _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgLinkedIn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0,0,256,256\",\n width: \"50px\",\n height: \"50px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#ffffff\",\n fillRule: \"nonzero\",\n stroke: \"none\",\n strokeWidth: 1,\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n strokeDasharray: \"\",\n strokeDashoffset: 0,\n fontFamily: \"none\",\n fontWeight: \"none\",\n fontSize: \"none\",\n textAnchor: \"none\",\n style: {\n mixBlendMode: \"normal\"\n }\n }, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"scale(5.12,5.12)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41,4h-32c-2.76,0 -5,2.24 -5,5v32c0,2.76 2.24,5 5,5h32c2.76,0 5,-2.24 5,-5v-32c0,-2.76 -2.24,-5 -5,-5zM17,20v19h-6v-19zM11,14.47c0,-1.4 1.2,-2.47 3,-2.47c1.8,0 2.93,1.07 3,2.47c0,1.4 -1.12,2.53 -3,2.53c-1.8,0 -3,-1.13 -3,-2.53zM39,39h-6c0,0 0,-9.26 0,-10c0,-2 -1,-4 -3.5,-4.04h-0.08c-2.42,0 -3.42,2.06 -3.42,4.04c0,0.91 0,10 0,10h-6v-19h6v2.56c0,0 1.93,-2.56 5.81,-2.56c3.97,0 7.19,2.73 7.19,8.26z\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLinkedIn);\nexport default __webpack_public_path__ + \"static/media/linked-in.4849f84a7e76fde3e7508ef828cf6d7b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgFacebook(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0,0,256,256\",\n width: \"50px\",\n height: \"50px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#ffffff\",\n fillRule: \"nonzero\",\n stroke: \"none\",\n strokeWidth: 1,\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n strokeDasharray: \"\",\n strokeDashoffset: 0,\n fontFamily: \"none\",\n fontWeight: \"none\",\n fontSize: \"none\",\n textAnchor: \"none\",\n style: {\n mixBlendMode: \"normal\"\n }\n }, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"scale(5.12,5.12)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25,3c-12.15,0 -22,9.85 -22,22c0,11.03 8.125,20.137 18.712,21.728v-15.897h-5.443v-5.783h5.443v-3.848c0,-6.371 3.104,-9.168 8.399,-9.168c2.536,0 3.877,0.188 4.512,0.274v5.048h-3.612c-2.248,0 -3.033,2.131 -3.033,4.533v3.161h6.588l-0.894,5.783h-5.694v15.944c10.738,-1.457 19.022,-10.638 19.022,-21.775c0,-12.15 -9.85,-22 -22,-22z\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFacebook);\nexport default __webpack_public_path__ + \"static/media/facebook.fc02ab68edfe9ef0d4dc4acbc566d305.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTwitter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0,0,256,256\",\n width: \"30px\",\n height: \"30px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#ffffff\",\n fillRule: \"nonzero\",\n stroke: \"none\",\n strokeWidth: 1,\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n strokeDasharray: \"\",\n strokeDashoffset: 0,\n fontFamily: \"none\",\n fontWeight: \"none\",\n fontSize: \"none\",\n textAnchor: \"none\",\n style: {\n mixBlendMode: \"normal\"\n }\n }, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"scale(8.53333,8.53333)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,6.937c-0.957,0.425 -1.985,0.711 -3.064,0.84c1.102,-0.66 1.947,-1.705 2.345,-2.951c-1.03,0.611 -2.172,1.055 -3.388,1.295c-0.973,-1.037 -2.359,-1.685 -3.893,-1.685c-2.946,0 -5.334,2.389 -5.334,5.334c0,0.418 0.048,0.826 0.138,1.215c-4.433,-0.222 -8.363,-2.346 -10.995,-5.574c-0.458,0.788 -0.721,1.704 -0.721,2.683c0,1.85 0.941,3.483 2.372,4.439c-0.874,-0.028 -1.697,-0.268 -2.416,-0.667c0,0.023 0,0.044 0,0.067c0,2.585 1.838,4.741 4.279,5.23c-0.447,0.122 -0.919,0.187 -1.406,0.187c-0.343,0 -0.678,-0.034 -1.003,-0.095c0.679,2.119 2.649,3.662 4.983,3.705c-1.825,1.431 -4.125,2.284 -6.625,2.284c-0.43,0 -0.855,-0.025 -1.273,-0.075c2.361,1.513 5.164,2.396 8.177,2.396c9.812,0 15.176,-8.128 15.176,-15.177c0,-0.231 -0.005,-0.461 -0.015,-0.69c1.043,-0.753 1.948,-1.692 2.663,-2.761z\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTwitter);\nexport default __webpack_public_path__ + \"static/media/twitter.9e688a5930f6a2722cf1e0fbd0beabb3.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _path41, _path42, _path43, _path44, _path45, _path46, _path47, _path48, _path49, _path50, _path51;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgUkas(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 49,\n height: 69,\n viewBox: \"0 0 49 69\",\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: \"M8.44106 54.2692H8.00596L6.90131 51.6601H6.87901L6.64815 54.7565H6.12891L6.42593 51H7.13647L8.2325 53.6756L9.35081 51H10.0391L10.3368 54.7565H9.81756L9.59534 51.6291H9.57304L8.44538 54.2692H8.44106Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6611 54.7565L13.2526 53.5914H11.7833L11.3798 54.7565H10.834L12.1832 51H12.8534L14.2026 54.7565H13.6568H13.6611ZM11.9437 53.1352H13.0972L12.5291 51.4828H12.5068L11.9394 53.1352H11.9437Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0538 53.9591H17.0761V51H17.5953V54.7565H16.9962L15.3716 51.7796H15.35V54.7565H14.8301V51H15.4694L17.0495 53.9591H17.0538Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0419 54.7565L20.6334 53.5914H19.1642L18.7607 54.7565H18.2148L19.564 51H20.2343L21.5835 54.7565H21.0376H21.0419ZM19.3238 53.1352H20.4781L19.9099 51.4828H19.8876L19.3195 53.1352H19.3238Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.6679 54.8027C22.1325 54.7584 22.1016 53.8635 22.1016 53.3497V52.4061C22.1016 51.8923 22.1325 50.9531 23.7528 50.9531C24.1742 50.9531 24.5741 51.0284 24.8265 51.0683V51.498C24.6093 51.4626 24.1879 51.405 23.7528 51.405C22.6431 51.405 22.6208 51.9809 22.6208 52.4061V53.3497C22.6208 53.7661 22.6388 54.3198 23.6679 54.3508C23.9614 54.3508 24.3742 54.2755 24.587 54.1603V53.332H23.7967V52.8846H25.0488V54.435C24.6935 54.6432 24.2318 54.7982 23.6636 54.7982L23.6679 54.8027Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8926 54.7565V51H28.2011V51.4474H26.4118V52.6745H28.0055V53.1219H26.4118V54.3046H28.2493V54.7521H25.8976L25.8926 54.7565Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.2497 54.2692H30.8146L29.7099 51.6601H29.6876L29.4567 54.7565H28.9375L29.2345 51H29.9451L31.0411 53.6756L32.1594 51H32.8477L33.1454 54.7565H32.6254L32.4039 51.6291H32.3816L31.254 54.2692H31.2497Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.0039 54.7565V51H36.3118V51.4474H34.5232V52.6745H36.1161V53.1219H34.5232V54.3046H36.3607V54.7521H34.0082L34.0039 54.7565Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.3838 53.9591H39.4061V51H39.9254V54.7565H39.3263L37.7017 51.7796H37.6794V54.7565H37.1602V51H37.7995L39.3795 53.9591H39.3838Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.7077 51.4474H40.5664V51H43.3719V51.4474H42.2313V54.7521H41.712V51.4474H41.7077Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.3567 56.4206C13.8289 56.4206 13.5088 56.5047 13.5088 56.9522C13.5088 57.2268 13.6821 57.342 14.0504 57.5369L14.7429 57.8912C15.1867 58.1127 15.4132 58.352 15.4132 58.8924C15.4132 59.6544 14.8896 59.8182 14.0108 59.8182C13.8195 59.8182 13.3139 59.7695 12.9141 59.6721V59.2025C13.2916 59.3177 13.8195 59.3708 14.0108 59.3708C14.561 59.3708 14.894 59.2823 14.894 58.8968C14.894 58.5779 14.7609 58.4627 14.4991 58.3298L13.762 57.9533C13.2564 57.6875 12.9896 57.4748 12.9896 56.9344C12.9896 56.1282 13.465 55.9688 14.3567 55.9688C14.5301 55.9688 14.9738 55.9953 15.2888 56.0839V56.549C15.0493 56.4604 14.561 56.4161 14.3567 56.4161V56.4206Z\",\n fill: \"white\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.4376 58.0711H17.447L18.5034 56.0156H19.1068L17.6908 58.5938V59.7722H17.1715V58.585L15.7598 56.0201H16.3639L17.4376 58.0755V58.0711Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.8606 56.4206C20.3328 56.4206 20.0127 56.5047 20.0127 56.9522C20.0127 57.2268 20.1861 57.342 20.5543 57.5369L21.2468 57.8912C21.6906 58.1127 21.9171 58.352 21.9171 58.8924C21.9171 59.6544 21.3936 59.8182 20.5147 59.8182C20.3234 59.8182 19.8178 59.7695 19.418 59.6721V59.2025C19.7955 59.3177 20.3234 59.3708 20.5147 59.3708C21.0649 59.3708 21.3979 59.2823 21.3979 58.8968C21.3979 58.5779 21.2648 58.4627 21.003 58.3298L20.2659 57.9533C19.7603 57.6875 19.4935 57.4748 19.4935 56.9344C19.4935 56.1282 19.9689 55.9688 20.8606 55.9688C21.034 55.9688 21.4777 55.9953 21.7927 56.0839V56.549C21.5532 56.4604 21.0649 56.4161 20.8606 56.4161V56.4206Z\",\n fill: \"white\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.5078 56.4708H22.3672V56.0234H25.172V56.4708H24.0314V59.7755H23.5121V56.4708H23.5078Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8184 59.7722V56.0156H28.1262V56.4631H26.3376V57.6901H27.9306V58.1375H26.3376V59.3203H28.1751V59.7677H25.8227L25.8184 59.7722Z\",\n fill: \"white\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.1703 59.2849H30.7352L29.6298 56.6757H29.6075L29.3767 59.7722H28.8574L29.1552 56.0156H29.865L30.9617 58.6913L32.0801 56.0156H32.7683L33.0653 59.7722H32.5461L32.3239 56.6447H32.3023L31.1746 59.2849H31.1703Z\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.181 56.4206C34.6531 56.4206 34.333 56.5047 34.333 56.9522C34.333 57.2268 34.5064 57.342 34.8746 57.5369L35.5671 57.8912C36.0109 58.1127 36.2374 58.352 36.2374 58.8924C36.2374 59.6544 35.7139 59.8182 34.835 59.8182C34.6437 59.8182 34.1381 59.7695 33.7383 59.6721V59.2025C34.1158 59.3177 34.6437 59.3708 34.835 59.3708C35.3852 59.3708 35.7182 59.2823 35.7182 58.8968C35.7182 58.5779 35.5851 58.4627 35.3234 58.3298L34.5862 57.9533C34.0806 57.6875 33.8138 57.4748 33.8138 56.9344C33.8138 56.1282 34.2892 55.9688 35.181 55.9688C35.3543 55.9688 35.798 55.9953 36.113 56.0839V56.549C35.8735 56.4604 35.3809 56.4161 35.181 56.4161V56.4206Z\",\n fill: \"white\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.6668 31.0169C20.3356 29.9582 18.875 29.0501 17.3086 28.328V31.6903C19.1727 32.9749 20.8103 34.5608 22.1508 36.3815V36.3903C23.3669 34.1444 24.9204 31.9693 26.7622 29.9848C28.2185 28.421 29.8251 27.0212 31.5202 25.8296V23.0078C27.7122 24.9259 24.3522 27.761 21.6668 31.0169Z\",\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_1291_53476\",\n style: {\n maskType: \"luminance\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 17,\n y: 2,\n width: 16,\n height: 16\n }, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.2371 2.10156H17.0215V17.287H32.2371V2.10156Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_1291_53476)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.1055 11.7456C18.1055 11.7456 18.1407 11.7057 18.1587 11.6836C18.1716 11.6614 18.1853 11.6349 18.1983 11.6127C18.2076 11.5861 18.2162 11.5596 18.2205 11.533C18.2249 11.5064 18.2299 11.4798 18.2299 11.4532C18.2299 11.4267 18.2299 11.4001 18.2205 11.3735C18.2162 11.3469 18.2076 11.3204 18.1983 11.2938C18.1896 11.2672 18.1767 11.2451 18.1587 11.2229C18.145 11.2008 18.1278 11.1786 18.1055 11.1609C18.0875 11.1431 18.0652 11.1254 18.0429 11.1078C18.0206 11.0944 17.994 11.0811 17.9724 11.0678C17.9458 11.059 17.9192 11.0501 17.8926 11.0457C17.8387 11.0368 17.7811 11.0368 17.7279 11.0457C17.7013 11.0501 17.6747 11.059 17.6481 11.0678C17.6215 11.0767 17.5992 11.09 17.5769 11.1078C17.5546 11.121 17.533 11.1388 17.515 11.1609C17.4971 11.1786 17.4798 11.2008 17.4618 11.2229C17.4482 11.2451 17.4352 11.2716 17.4215 11.2938C17.4129 11.3204 17.4043 11.3469 17.3993 11.3735C17.3949 11.4001 17.3906 11.4267 17.3906 11.4532C17.3906 11.4798 17.3906 11.5064 17.3993 11.533C17.4086 11.5596 17.4129 11.5861 17.4215 11.6127C17.4309 11.6393 17.4438 11.6614 17.4618 11.6836C17.4748 11.7057 17.4928 11.7279 17.515 11.7456C17.533 11.7634 17.5546 11.781 17.5769 11.7988C17.5992 11.812 17.6258 11.8254 17.6481 11.8387C17.6747 11.8475 17.7013 11.8564 17.7279 11.8608C17.7545 11.8652 17.7811 11.8697 17.8077 11.8697C17.9192 11.8697 18.0257 11.8254 18.1055 11.7456Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6395 8.4894C17.7064 8.52931 17.7776 8.54704 17.8481 8.54704C17.9904 8.54704 18.1321 8.47174 18.2076 8.33881C18.3234 8.13949 18.2565 7.88252 18.0573 7.76739C17.8574 7.65219 17.5999 7.71866 17.4841 7.91798C17.3691 8.11731 17.4353 8.37427 17.6352 8.4894\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5869 7.66605C18.6804 7.66605 18.7739 7.63504 18.8537 7.56865C19.0314 7.42244 19.058 7.15664 18.9069 6.97944C18.7602 6.80225 18.4941 6.77567 18.3165 6.92628C18.1389 7.07247 18.1123 7.33824 18.259 7.51546C18.3431 7.61293 18.4632 7.66605 18.5826 7.66605\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5918 7.09935C19.6364 7.09935 19.6846 7.09049 19.7292 7.0772C19.9471 7.00189 20.0622 6.76268 19.9867 6.54562C19.9112 6.32856 19.6717 6.21338 19.4538 6.28869C19.2366 6.364 19.1215 6.60321 19.197 6.82027C19.2589 6.99303 19.4185 7.09935 19.5918 7.09935Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.7355 6.91093C20.9663 6.91093 21.1533 6.72488 21.1533 6.49453C21.1533 6.26418 20.9663 6.07812 20.7355 6.07812C20.5053 6.07812 20.3184 6.26418 20.3184 6.49453C20.3184 6.72488 20.5053 6.91093 20.7355 6.91093Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.7163 7.08732C21.7652 7.10504 21.8141 7.1139 21.8623 7.1139C22.0313 7.1139 22.1909 7.01202 22.2535 6.84368C22.3333 6.62662 22.2269 6.38741 22.009 6.30767C21.7918 6.22794 21.5516 6.33425 21.4718 6.55131C21.3919 6.76838 21.4984 7.00759 21.7163 7.08732Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.3702 9.61971C17.3969 9.62416 17.4235 9.62861 17.4501 9.62861C17.6457 9.62861 17.8226 9.49123 17.8586 9.2919C17.9032 9.06602 17.7564 8.84452 17.5256 8.80461C17.2991 8.76032 17.0775 8.91091 17.0373 9.13687C16.9927 9.36282 17.1394 9.58425 17.3702 9.62861\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5119 10.7677C17.7377 10.7278 17.8937 10.5152 17.8535 10.2849C17.8132 10.0589 17.6003 9.90386 17.3695 9.94377C17.1429 9.9836 16.9876 10.1962 17.0278 10.4266C17.0631 10.6304 17.2407 10.7721 17.4407 10.7721C17.463 10.7721 17.4896 10.7721 17.5119 10.7677Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.7234 7.42914C22.7457 7.44242 22.7723 7.45577 22.7946 7.46905C22.8212 7.47787 22.8478 7.48677 22.8744 7.49115C22.901 7.4956 22.9276 7.50005 22.9542 7.50005C23.0657 7.50005 23.1721 7.45577 23.252 7.37602C23.3318 7.29628 23.3764 7.18998 23.3764 7.0792C23.3764 7.05262 23.3764 7.02604 23.367 6.99947C23.3627 6.97289 23.3541 6.94631 23.3455 6.91973C23.3361 6.89315 23.3232 6.871 23.3052 6.84886C23.2915 6.8267 23.2743 6.80455 23.252 6.78683C23.1542 6.68938 23.0125 6.64508 22.8744 6.67166C22.8478 6.67609 22.8212 6.68495 22.7946 6.69381C22.768 6.70267 22.7457 6.71596 22.7234 6.73367C22.7018 6.7514 22.6795 6.76469 22.6615 6.78683C22.6435 6.80455 22.6263 6.8267 22.6083 6.84886C22.5954 6.871 22.5817 6.89758 22.568 6.91973C22.5594 6.94631 22.5508 6.97289 22.5465 6.99947C22.5414 7.02604 22.5371 7.05262 22.5371 7.0792C22.5371 7.18998 22.5817 7.29628 22.6615 7.37602C22.6795 7.39375 22.7018 7.41141 22.7234 7.42914Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.8408 11.286C31.8322 11.2594 31.8185 11.2373 31.8006 11.2151C31.7833 11.193 31.7696 11.1708 31.7474 11.1531C31.7301 11.1354 31.7078 11.1177 31.6855 11.0999C31.6632 11.0822 31.6366 11.0734 31.6143 11.06C31.5877 11.0512 31.5611 11.0424 31.5345 11.0379C31.4813 11.029 31.4237 11.029 31.3705 11.0379C31.3439 11.0424 31.3173 11.0512 31.2907 11.06C31.2641 11.0689 31.2418 11.0822 31.2195 11.0999C31.1972 11.1132 31.1749 11.1309 31.1576 11.1531C31.1396 11.1708 31.1217 11.193 31.1044 11.2151C31.0907 11.2373 31.0778 11.2638 31.0641 11.286C31.0555 11.3125 31.0462 11.3392 31.0418 11.3657C31.0375 11.3923 31.0332 11.4189 31.0332 11.4455C31.0332 11.472 31.0332 11.4986 31.0418 11.5252C31.0462 11.5518 31.0555 11.5783 31.0641 11.605C31.0728 11.6315 31.0864 11.6537 31.1044 11.6758C31.1173 11.698 31.1353 11.7201 31.1576 11.7378C31.2375 11.8176 31.3439 11.8619 31.4546 11.8619C31.4812 11.8619 31.5079 11.8619 31.5345 11.853C31.5611 11.8486 31.5877 11.8397 31.6143 11.8308C31.6409 11.822 31.6632 11.8087 31.6855 11.791C31.7078 11.7777 31.7301 11.76 31.7474 11.7378C31.7653 11.7201 31.7833 11.698 31.8006 11.6758C31.8142 11.6537 31.8279 11.6271 31.8408 11.605C31.8495 11.5783 31.8588 11.5518 31.8631 11.5252C31.8675 11.4986 31.8718 11.472 31.8718 11.4455C31.8718 11.4189 31.8718 11.3923 31.8631 11.3657C31.8588 11.3392 31.8495 11.3125 31.8408 11.286Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.528 7.0772C29.5726 7.09492 29.6215 7.09935 29.6661 7.09935C29.8394 7.09935 29.999 6.99303 30.0609 6.82027C30.1364 6.60321 30.0213 6.364 29.8034 6.28869C29.5862 6.21338 29.346 6.32856 29.2712 6.54562C29.1957 6.76268 29.3108 7.00189 29.528 7.0772Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.4018 7.57462C30.4817 7.64101 30.5752 7.67202 30.6686 7.67202C30.788 7.67202 30.9081 7.6189 30.9923 7.52143C31.139 7.34421 31.1167 7.08288 30.9391 6.93227C30.7614 6.78608 30.4953 6.80823 30.3486 6.98543C30.2019 7.16262 30.2242 7.42841 30.4018 7.57462Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.045 8.33881C31.1248 8.47174 31.2622 8.54704 31.4089 8.54704C31.4801 8.54704 31.5506 8.52931 31.6175 8.4894C31.8174 8.37427 31.8836 8.11731 31.7685 7.91798C31.6527 7.71866 31.3953 7.65219 31.196 7.76739C30.9961 7.88252 30.9292 8.13949 31.045 8.33881Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.5304 6.91093C28.7612 6.91093 28.9482 6.72488 28.9482 6.49453C28.9482 6.26418 28.7612 6.07812 28.5304 6.07812C28.2995 6.07812 28.1133 6.26418 28.1133 6.49453C28.1133 6.72488 28.2995 6.91093 28.5304 6.91093Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.7346 8.79788C31.5088 8.84217 31.3578 9.05922 31.4023 9.28518C31.4419 9.4845 31.6152 9.62181 31.8101 9.62181C31.8367 9.62181 31.8633 9.62181 31.89 9.61298C32.1165 9.56862 32.2675 9.35157 32.2229 9.12124C32.1791 8.89535 31.9611 8.74469 31.7303 8.78898\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.8847 9.94377C31.6581 9.90386 31.441 10.0589 31.4007 10.2849C31.3611 10.5107 31.5165 10.7278 31.743 10.7677C31.7646 10.7677 31.7919 10.7721 31.8135 10.7721C32.0134 10.7721 32.1911 10.6259 32.2263 10.4222C32.2666 10.1962 32.1112 9.97915 31.8847 9.93932\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.3935 7.1139C27.4424 7.1139 27.4913 7.10504 27.5402 7.08732C27.7574 7.00759 27.8639 6.76395 27.784 6.55131C27.7042 6.33425 27.4604 6.22794 27.2468 6.30767C27.0296 6.38741 26.9232 6.63105 27.003 6.84368C27.0649 7.01202 27.2252 7.1139 27.3935 7.1139Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9164 7.24309C25.925 7.26972 25.938 7.29183 25.956 7.31401C25.9696 7.33611 25.9869 7.35829 26.0092 7.37602C26.0272 7.39375 26.0495 7.41141 26.0718 7.42914C26.0941 7.44242 26.1207 7.45577 26.1422 7.46905C26.1688 7.47787 26.1955 7.48677 26.2221 7.49115C26.2494 7.4956 26.276 7.50005 26.3026 7.50005C26.4134 7.50005 26.5198 7.45577 26.5996 7.37602C26.6176 7.35829 26.6349 7.33611 26.6529 7.31401C26.6665 7.29183 26.6795 7.26527 26.6931 7.24309C26.7018 7.21653 26.7104 7.18998 26.7154 7.16337C26.7197 7.13679 26.724 7.11021 26.724 7.08363C26.724 6.97289 26.6795 6.86657 26.5996 6.78683C26.5018 6.68938 26.3601 6.64508 26.2221 6.67166C26.1955 6.67609 26.1688 6.68495 26.1422 6.69381C26.1156 6.70267 26.0941 6.71596 26.0718 6.73367C26.0495 6.7514 26.0272 6.76469 26.0092 6.78683C25.9294 6.86657 25.8848 6.97289 25.8848 7.08363C25.8848 7.11021 25.8848 7.13679 25.8941 7.16337C25.8984 7.18998 25.9071 7.21653 25.9164 7.24309Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.8057 11.7047C30.7345 11.5319 30.7388 11.3326 30.8187 11.1554L30.9517 10.8409C31.2315 10.1986 31.2401 9.48534 30.9834 8.83418C30.7259 8.18302 30.2282 7.67355 29.5846 7.39448C28.9416 7.1154 28.2311 7.10654 27.5831 7.36347L27.5522 7.37675H27.5479C26.9042 7.66472 26.2296 7.84631 25.537 7.93489C25.5061 7.63371 25.3242 7.37675 25.071 7.23944C25.4838 7.06667 25.7722 6.66355 25.7722 6.18957C25.7722 5.90605 25.6701 5.64913 25.4968 5.44978L25.2393 5.14412C25.0178 4.88719 24.8754 4.56381 24.8315 4.205C25.1861 4.24486 25.5104 4.39105 25.7722 4.61254V3.39877C25.5147 3.62026 25.1911 3.76201 24.8315 3.80631C24.8711 3.45193 25.0178 3.12855 25.2393 2.86719H24.0232C24.2454 3.12412 24.3871 3.4475 24.4317 3.80631C24.0764 3.76645 23.7528 3.62026 23.491 3.39877V4.61254C23.7485 4.39105 24.0721 4.2493 24.4317 4.205C24.3921 4.55938 24.2454 4.88276 24.0232 5.14412L23.7657 5.44978C23.5931 5.64913 23.491 5.90605 23.491 6.18957C23.491 6.66355 23.7794 7.06667 24.1922 7.23944C23.939 7.3812 23.7614 7.63371 23.7262 7.93489C23.0336 7.85076 22.359 7.66472 21.711 7.3812L21.6758 7.36347C21.0278 7.10654 20.3129 7.11983 19.6736 7.39448C19.0299 7.67355 18.533 8.18302 18.2755 8.83418C18.018 9.48534 18.0267 10.1986 18.3064 10.8365L18.4445 11.151C18.5243 11.3326 18.5287 11.5275 18.4575 11.7002C18.3863 11.8775 18.2446 12.0192 18.0583 12.099L17.752 12.2318L18.9055 15.1157L19.4341 16.4579C21.0544 15.7669 22.8164 15.4036 24.6316 15.4036C26.4468 15.4036 28.2088 15.7669 29.8291 16.4579L30.357 15.1157L31.5112 12.2318L31.2049 12.099C31.0186 12.0192 30.8762 11.8775 30.8057 11.7002M22.7804 13.831C21.9153 13.831 21.3112 13.202 21.3335 12.5286C21.3428 12.3648 21.4802 12.2318 21.6492 12.2318C21.8175 12.2318 21.9642 12.3736 21.9642 12.5464C21.9642 12.6261 21.9332 12.697 21.8843 12.7546C22.1634 12.7103 22.3813 12.4711 22.3813 12.1787C22.3813 11.8554 22.1195 11.5939 21.7952 11.5939C21.5025 11.5939 21.263 11.8066 21.2184 12.0901H21.2141C21.2364 11.904 21.227 11.6781 21.1695 11.4389C21.0451 10.894 20.748 10.4954 20.5078 10.5485C20.2684 10.6061 20.1756 11.0934 20.295 11.6339C20.3482 11.873 20.4374 12.0857 20.5344 12.2407H20.5301C20.3705 12.0104 20.0598 11.9174 19.798 12.0458C19.5053 12.1832 19.3809 12.5331 19.5183 12.8254C19.6427 13.0912 19.9447 13.2153 20.2151 13.1356C20.149 13.1046 20.0907 13.0558 20.0555 12.9805C19.98 12.8254 20.0468 12.6394 20.2022 12.5641C20.3525 12.4932 20.5344 12.5553 20.615 12.7014C20.9206 13.2994 20.6459 14.1234 19.8692 14.4955C19.7268 14.5619 19.5808 14.6063 19.4341 14.6284L18.6085 12.5641C18.8171 12.409 18.981 12.2008 19.0788 11.9617C19.2162 11.6161 19.2119 11.2351 19.0609 10.8852L18.9235 10.5707C18.7192 10.0967 18.7106 9.56954 18.9012 9.09107C19.0925 8.60823 19.4607 8.23168 19.9354 8.02798C20.4057 7.82421 20.9257 7.8153 21.4047 8.00135C22.1418 8.32916 22.9135 8.53738 23.7125 8.62596V11.0535C24.0189 11.2839 24.2411 11.6206 24.3123 12.0148C23.6816 11.9262 23.14 11.5718 22.7984 11.0713V13.4988C23.14 12.9938 23.6859 12.6394 24.3166 12.5508C24.1922 13.2862 23.5485 13.8443 22.7804 13.8443M29.8154 14.6328C29.6694 14.6107 29.5227 14.5664 29.381 14.4999C28.6043 14.1323 28.3289 13.3083 28.6353 12.7058C28.7151 12.5596 28.897 12.4976 29.0481 12.5685C29.2034 12.6438 29.2696 12.8299 29.1941 12.9849C29.1588 13.0558 29.1013 13.1089 29.0344 13.14C29.3055 13.2241 29.6069 13.0957 29.7313 12.8299C29.8686 12.5375 29.7449 12.1875 29.4515 12.0502C29.1897 11.9262 28.879 12.0148 28.7194 12.2496H28.7151C28.8172 12.0901 28.9014 11.8775 28.9546 11.6382C29.0747 11.0934 28.9812 10.6105 28.7417 10.553C28.5022 10.4954 28.2045 10.894 28.0801 11.4434C28.0268 11.6826 28.0139 11.9129 28.0362 12.0945H28.0311C27.9873 11.8154 27.7471 11.5984 27.4544 11.5984C27.1307 11.5984 26.8682 11.8597 26.8682 12.1832C26.8682 12.4755 27.0861 12.7191 27.3659 12.759C27.317 12.7058 27.2861 12.6305 27.2861 12.5508C27.2861 12.378 27.4278 12.2363 27.6011 12.2363C27.7737 12.2363 27.9075 12.3692 27.9161 12.5331C27.9384 13.2064 27.3343 13.8355 26.4691 13.8355C25.6967 13.8355 25.0574 13.2773 24.9337 12.542C25.5637 12.6305 26.1095 12.9849 26.4511 13.4899V11.0624C26.1095 11.5629 25.5636 11.9174 24.938 12.0059C25.0135 11.6161 25.2307 11.275 25.537 11.0446V8.61713C26.3317 8.52848 27.1041 8.31588 27.8449 7.99252C28.3246 7.80648 28.8438 7.81976 29.3142 8.01908C29.7888 8.22286 30.1577 8.60385 30.3483 9.08224C30.5389 9.56509 30.5303 10.0878 30.326 10.5662L30.193 10.8808C30.042 11.2307 30.0333 11.6117 30.175 11.9572C30.2728 12.2008 30.4368 12.4046 30.6454 12.5597L29.8205 14.6239L29.8154 14.6328Z\",\n fill: \"white\"\n }))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.6317 17.9758C30.575 17.9758 35.4086 22.7998 35.4086 28.7314C35.4086 34.663 30.575 39.487 24.6317 39.487C18.6885 39.487 13.8549 34.663 13.8549 28.7314C13.8549 22.7998 18.6885 17.9758 24.6317 17.9758ZM24.6317 16.7266C17.9873 16.7266 12.6035 22.0999 12.6035 28.7314C12.6035 35.3629 17.9873 40.7362 24.6317 40.7362C31.2762 40.7362 36.66 35.3629 36.66 28.7314C36.66 22.0999 31.2762 16.7266 24.6317 16.7266Z\",\n fill: \"white\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7485 1.60859V61.4734H1.51267V1.60859H47.7485ZM48.9999 0.359375H0.265625V62.7182H48.9999V0.359375Z\",\n fill: \"white\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.116 48.2344C12.0884 48.2344 12.6522 47.8313 12.6522 46.5821V42.7812H14.2545V46.4448C14.2545 48.5622 13.2822 49.4171 11.0765 49.4171C8.87005 49.4171 7.89844 48.5622 7.89844 46.4448V42.7812H9.57628V46.5821C9.57628 47.8313 10.1401 48.2344 11.1117 48.2344H11.116Z\",\n fill: \"white\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8872 42.7779V45.4047C18.8872 45.4801 18.9189 45.5155 18.9987 45.5155H19.4115C19.5086 45.5155 19.5618 45.4934 19.6158 45.4269L21.728 42.7779H23.6985L21.2663 45.7592C21.2224 45.8123 21.213 45.8256 21.213 45.8787V45.9939C21.213 46.0471 21.2224 46.0692 21.2663 46.1135L24.0847 49.3163H21.8258L19.6158 46.5875C19.5712 46.5343 19.5402 46.5122 19.4381 46.5122H18.9937C18.9189 46.5122 18.8829 46.5432 18.8829 46.623V49.3163H17.2051V42.7734H18.8829L18.8872 42.7779Z\",\n fill: \"white\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.568 49.3197L31.0488 47.9331C31.0085 47.8357 30.9596 47.8224 30.8625 47.8224C30.6266 47.8224 29.9837 47.8224 29.3486 47.8224C28.7582 47.8224 28.1944 47.8224 27.9685 47.8224C27.8707 47.8224 27.8175 47.8313 27.7816 47.9331L27.2537 49.3197H25.5312L28.2526 42.7812H30.6266L33.348 49.3197H31.568ZM30.467 46.6219C30.5159 46.6219 30.5468 46.5732 30.5295 46.5289L29.5795 44.0704C29.5529 43.9995 29.5263 43.9817 29.4594 43.9817H29.3623C29.2954 43.9817 29.2688 43.9995 29.2422 44.0704L28.2965 46.5289C28.2792 46.5732 28.3145 46.6219 28.3591 46.6219H30.467Z\",\n fill: \"white\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.8273 42.9999C40.9646 43.0398 41.0006 43.053 41.0006 43.053V43.4562V44.0365V44.2359C41.0006 44.2359 40.7784 44.1916 40.7381 44.1827C40.3346 44.0985 39.4687 43.908 38.4792 43.908C37.7068 43.908 37.0408 44.0188 37.0408 44.5637C37.0408 45.1085 37.4982 45.1528 38.6388 45.3211C40.29 45.5604 41.3645 45.835 41.3645 47.3766C41.3645 49.0599 39.6773 49.4187 38.0886 49.4187C36.966 49.4187 35.7182 49.1972 35.4744 49.1087C35.3414 49.0644 35.332 49.0599 35.332 49.0599V48.5815V47.9569V47.7974C35.332 47.7974 35.514 47.8373 35.5543 47.8506C36.4194 48.0588 37.3076 48.2094 38.2569 48.2094C38.7366 48.2094 39.6557 48.1784 39.6557 47.5139C39.6557 47.0355 39.4464 46.8981 38.1016 46.7077C36.4993 46.4818 35.35 46.1274 35.35 44.6788C35.35 43.0309 36.9034 42.7031 38.5194 42.7031C39.5579 42.7031 40.605 42.9202 40.8273 42.9955V42.9999Z\",\n fill: \"white\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.26222 17.9609H1.51172V18.621H5.26222V17.9609Z\",\n fill: \"white\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.26222 28.4062H1.51172V29.0662H5.26222V28.4062Z\",\n fill: \"white\"\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 20.0469H1.51172V20.7069H3.38446V20.0469Z\",\n fill: \"white\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 22.1328H1.51172V22.7929H3.38446V22.1328Z\",\n fill: \"white\"\n })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 24.2266H1.51172V24.8866H3.38446V24.2266Z\",\n fill: \"white\"\n })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 26.3125H1.51172V26.9725H3.38446V26.3125Z\",\n fill: \"white\"\n })), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.10256 38.8516H1.51172V39.5116H5.10256V38.8516Z\",\n fill: \"white\"\n })), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 30.4922H1.51172V31.1523H3.38446V30.4922Z\",\n fill: \"white\"\n })), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 32.5781H1.51172V33.2382H3.38446V32.5781Z\",\n fill: \"white\"\n })), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 34.6719H1.51172V35.3319H3.38446V34.6719Z\",\n fill: \"white\"\n })), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.38446 36.7578H1.51172V37.4179H3.38446V36.7578Z\",\n fill: \"white\"\n })), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7466 38.8516H43.9961V39.5116H47.7466V38.8516Z\",\n fill: \"white\"\n })), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7466 28.4062H43.9961V29.0662H47.7466V28.4062Z\",\n fill: \"white\"\n })), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 36.7578H45.877V37.4179H47.7497V36.7578Z\",\n fill: \"white\"\n })), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 34.6719H45.877V35.3319H47.7497V34.6719Z\",\n fill: \"white\"\n })), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 32.5781H45.877V33.2382H47.7497V32.5781Z\",\n fill: \"white\"\n })), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 30.4922H45.877V31.1523H47.7497V30.4922Z\",\n fill: \"white\"\n })), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7491 17.9609H44.1582V18.621H47.7491V17.9609Z\",\n fill: \"white\"\n })), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 26.3125H45.877V26.9725H47.7497V26.3125Z\",\n fill: \"white\"\n })), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 24.2266H45.877V24.8866H47.7497V24.2266Z\",\n fill: \"white\"\n })), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 22.1328H45.877V22.7929H47.7497V22.1328Z\",\n fill: \"white\"\n })), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.7497 20.0469H45.877V20.7069H47.7497V20.0469Z\",\n fill: \"white\"\n })), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.6002 65.1016C20.8261 65.1016 21.0131 65.1326 21.1547 65.199C21.2971 65.261 21.4079 65.3673 21.4834 65.5179C21.5589 65.6686 21.6121 65.8635 21.6387 66.1027C21.6653 66.3419 21.6783 66.6432 21.6783 66.9976C21.6783 67.2899 21.6697 67.5512 21.6517 67.786C21.6344 68.0208 21.5898 68.2246 21.5143 68.3885C21.4388 68.5524 21.3324 68.6853 21.19 68.7739C21.0483 68.8625 20.8484 68.9112 20.6002 68.9112C20.3514 68.9112 20.1515 68.8669 20.0098 68.7739C19.8674 68.6853 19.761 68.5568 19.6855 68.3885C19.6143 68.2202 19.5661 68.0208 19.5481 67.786C19.5301 67.5512 19.5215 67.2855 19.5215 66.9976C19.5215 66.6432 19.5344 66.3463 19.561 66.1027C19.5877 65.8635 19.6416 65.6686 19.7164 65.5179C19.7919 65.3673 19.9034 65.261 20.0407 65.199C20.1824 65.137 20.3644 65.1016 20.5952 65.1016H20.6002ZM20.6002 65.642C20.5197 65.642 20.4579 65.6597 20.4133 65.6952C20.3694 65.7306 20.3377 65.7971 20.3162 65.8945C20.2939 65.992 20.2802 66.1293 20.2802 66.3065C20.2802 66.4837 20.2759 66.714 20.2759 67.002C20.2759 67.2899 20.2759 67.5114 20.2845 67.6886C20.2896 67.8658 20.3025 68.0031 20.3291 68.105C20.3514 68.2025 20.3867 68.2733 20.4269 68.3088C20.4715 68.3442 20.529 68.3663 20.6046 68.3663C20.6801 68.3663 20.7376 68.3486 20.7822 68.3088C20.8261 68.2733 20.8577 68.2025 20.8793 68.105C20.9016 68.0075 20.9152 67.8658 20.9239 67.6886C20.9282 67.5114 20.9325 67.2811 20.9325 67.002C20.9325 66.7229 20.9325 66.4837 20.9282 66.3065C20.9282 66.1293 20.9109 65.992 20.893 65.8945C20.875 65.7971 20.8397 65.7306 20.7951 65.6952C20.7506 65.6597 20.6887 65.642 20.6132 65.642H20.6002Z\",\n fill: \"white\"\n })), _path49 || (_path49 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2917 65.1016C23.5182 65.1016 23.7045 65.1326 23.8461 65.199C23.9885 65.261 24.0993 65.3673 24.1748 65.5179C24.2503 65.6686 24.3035 65.8635 24.3301 66.1027C24.3568 66.3419 24.3704 66.6432 24.3704 66.9976C24.3704 67.2899 24.3611 67.5512 24.3438 67.786C24.3258 68.0208 24.2812 68.2246 24.2057 68.3885C24.1302 68.5524 24.0238 68.6853 23.8821 68.7739C23.7397 68.8625 23.5405 68.9112 23.2917 68.9112C23.0428 68.9112 22.8436 68.8669 22.7012 68.7739C22.5595 68.6853 22.4531 68.5568 22.3776 68.3885C22.3064 68.2202 22.2575 68.0208 22.2395 67.786C22.2222 67.5512 22.2129 67.2855 22.2129 66.9976C22.2129 66.6432 22.2266 66.3463 22.2532 66.1027C22.2798 65.8635 22.333 65.6686 22.4085 65.5179C22.484 65.3673 22.5948 65.261 22.7321 65.199C22.8745 65.137 23.0565 65.1016 23.2873 65.1016H23.2917ZM23.2917 65.642C23.2118 65.642 23.1493 65.6597 23.1054 65.6952C23.0608 65.7306 23.0299 65.7971 23.0076 65.8945C22.9853 65.992 22.9723 66.1293 22.9723 66.3065C22.9723 66.4837 22.9673 66.714 22.9673 67.002C22.9673 67.2899 22.9673 67.5114 22.9767 67.6886C22.981 67.8658 22.9939 68.0031 23.0205 68.105C23.0428 68.2025 23.0788 68.2733 23.1183 68.3088C23.1629 68.3442 23.2205 68.3663 23.296 68.3663C23.3715 68.3663 23.429 68.3486 23.4736 68.3088C23.5182 68.2733 23.5491 68.2025 23.5714 68.105C23.5937 68.0075 23.6067 67.8658 23.6153 67.6886C23.6203 67.5114 23.6246 67.2811 23.6246 67.002C23.6246 66.7229 23.6246 66.4837 23.6203 66.3065C23.6203 66.1293 23.6023 65.992 23.5844 65.8945C23.5671 65.7971 23.5311 65.7306 23.4873 65.6952C23.4427 65.6597 23.3801 65.642 23.3046 65.642H23.2917Z\",\n fill: \"white\"\n })), _path50 || (_path50 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9745 65.1016C26.2011 65.1016 26.3873 65.1326 26.5297 65.199C26.6714 65.261 26.7829 65.3673 26.8584 65.5179C26.9332 65.6686 26.9864 65.8635 27.013 66.1027C27.0403 66.3419 27.0533 66.6432 27.0533 66.9976C27.0533 67.2899 27.0447 67.5512 27.0267 67.786C27.0087 68.0208 26.9648 68.2246 26.8893 68.3885C26.8138 68.5524 26.7074 68.6853 26.565 68.7739C26.4233 68.8625 26.2234 68.9112 25.9745 68.9112C25.7264 68.9112 25.5265 68.8669 25.3848 68.7739C25.2424 68.6853 25.136 68.5568 25.0605 68.3885C24.9893 68.2202 24.9403 68.0208 24.9231 67.786C24.9051 67.5512 24.8965 67.2855 24.8965 66.9976C24.8965 66.6432 24.9094 66.3463 24.936 66.1027C24.9626 65.8635 25.0159 65.6686 25.0914 65.5179C25.1669 65.3673 25.2776 65.261 25.4157 65.199C25.5574 65.137 25.7394 65.1016 25.9702 65.1016H25.9745ZM25.9745 65.642C25.8947 65.642 25.8328 65.6597 25.7883 65.6952C25.7437 65.7306 25.7127 65.7971 25.6904 65.8945C25.6682 65.992 25.6552 66.1293 25.6552 66.3065C25.6552 66.4837 25.6509 66.714 25.6509 67.002C25.6509 67.2899 25.6509 67.5114 25.6595 67.6886C25.6638 67.8658 25.6775 68.0031 25.7041 68.105C25.7264 68.2025 25.7616 68.2733 25.8019 68.3088C25.8458 68.3442 25.904 68.3663 25.9796 68.3663C26.0544 68.3663 26.1126 68.3486 26.1565 68.3088C26.2011 68.2733 26.232 68.2025 26.2543 68.105C26.2766 68.0075 26.2902 67.8658 26.2989 67.6886C26.3032 67.5114 26.3075 67.2811 26.3075 67.002C26.3075 66.7229 26.3075 66.4837 26.3032 66.3065C26.3032 66.1293 26.2852 65.992 26.268 65.8945C26.25 65.7971 26.2147 65.7306 26.1701 65.6952C26.1256 65.6597 26.0637 65.642 25.9882 65.642H25.9745Z\",\n fill: \"white\"\n })), _path51 || (_path51 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.4033 66.6491L28.412 66.658C28.4746 66.5694 28.5501 66.5074 28.6428 66.4675C28.7363 66.4276 28.8384 66.4099 28.9492 66.4099C29.1002 66.4099 29.229 66.4365 29.3311 66.4852C29.4332 66.5384 29.513 66.6137 29.5749 66.7156C29.6375 66.8175 29.6813 66.9459 29.7036 67.0965C29.7302 67.2472 29.7396 67.4243 29.7396 67.6281C29.7396 67.8762 29.7173 68.0844 29.6684 68.2483C29.6238 68.4122 29.5526 68.5451 29.4598 68.6425C29.3663 68.74 29.2469 68.8065 29.1045 68.8463C28.9629 68.8862 28.7939 68.9039 28.6033 68.9039C28.4479 68.9039 28.3055 68.8862 28.1862 68.8552C28.0617 68.8198 27.9596 68.7666 27.8704 68.6957C27.782 68.6248 27.7201 68.5274 27.6755 68.4122C27.631 68.297 27.613 68.1552 27.618 67.9869H28.3681C28.3681 68.0357 28.3681 68.0844 28.3767 68.1287C28.3854 68.173 28.399 68.2173 28.4213 68.2527C28.4436 68.2882 28.4702 68.3147 28.5055 68.3369C28.5407 68.3546 28.5896 68.3679 28.6471 68.3679C28.7982 68.3679 28.8917 68.3103 28.9269 68.1907C28.9629 68.0711 28.9844 67.8851 28.9844 67.637C28.9844 67.575 28.9844 67.5041 28.9844 67.42C28.9844 67.3358 28.9715 67.2516 28.9535 67.1763C28.9363 67.101 28.9046 67.0301 28.8607 66.9769C28.8162 66.9238 28.7493 66.8928 28.6651 66.8928C28.6119 66.8928 28.5673 66.906 28.5278 66.9327C28.4875 66.9592 28.4609 66.9947 28.4386 67.0345C28.4163 67.0788 28.4034 67.1232 28.3947 67.1718C28.3854 67.2206 28.3811 67.2649 28.3811 67.3092H27.6576V65.1562H29.6015V65.7322H28.3947V66.658L28.4033 66.6491Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUkas);\nexport default __webpack_public_path__ + \"static/media/UKAS.84a3d9ccfc37bb9dde098bd369d6bae6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgIso9001(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 67,\n height: 66,\n viewBox: \"0 0 67 66\",\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: \"M31.4905 39.3777L26.1287 34.0265V25.9155L31.4905 31.2667L43.6963 19.0846C40.5716 15.9661 36.2574 14.0391 31.486 14.0391C21.9521 14.0391 14.2246 21.7514 14.2246 31.2711C14.2246 40.7908 21.9521 48.5032 31.486 48.5032C41.0199 48.5032 48.7518 40.7864 48.7518 31.2711C48.7518 28.6088 48.1437 26.0838 47.0651 23.8334L31.486 39.3777H31.4905Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.9986 62.5909C40.4273 62.1081 40.1078 60.7569 40.2055 59.2597H42.4735C42.4735 60.2918 42.5179 61.1601 43.7695 61.1601C44.5374 61.1601 44.9102 60.6684 44.9102 59.933C44.9102 57.9839 40.3386 57.8643 40.3386 54.6482C40.3386 52.9561 41.1508 51.6094 43.9204 51.6094C46.1308 51.6094 47.2271 52.5972 47.0762 54.8564H44.8659C44.8659 54.0458 44.7283 53.2262 43.8139 53.2262C43.0771 53.2262 42.6422 53.6294 42.6422 54.378C42.6422 56.429 47.2138 56.2519 47.2138 59.6495C47.2138 61.5233 46.2906 62.2897 45.1632 62.5909H41.9986Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.7445 55.1056C52.7623 54.1 52.5936 53.2185 51.3908 53.2185C49.9793 53.2185 49.9793 55.1189 49.9793 57.2186C49.9793 60.5985 50.3122 61.201 51.6038 61.201C51.9811 61.201 52.385 61.1125 52.7312 60.9928V58.5963H51.4973V56.9351H54.9993V62.4148C54.7596 62.4635 54.3779 62.5255 53.9474 62.5876H50.0637C47.9598 62.0649 47.6758 60.4037 47.6758 57.099C47.6758 54.3747 47.8134 51.6016 51.5239 51.6016C53.7476 51.6016 55.1324 52.8464 54.9993 55.1056H52.7445Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.2863 51.6016C61.2703 51.6016 62.3533 52.3724 62.5042 54.1089V54.8487H60.2938C60.2938 54.0601 60.0985 53.2185 59.1797 53.2185C58.443 53.2185 58.0036 53.6216 58.0036 54.3702C58.0036 56.2662 61.9094 56.2573 62.4997 58.9285V60.4967C62.2601 61.7592 61.4655 62.3351 60.5246 62.5876H57.36C55.7887 62.1047 55.4692 60.7537 55.5668 59.2563H57.8348C57.8348 60.2885 57.8793 61.1568 59.1309 61.1568C59.8943 61.1568 60.2716 60.665 60.2716 59.9297C60.2716 57.9805 55.7 57.861 55.7 54.6449C55.7 52.9527 56.5122 51.6105 59.2818 51.606L59.2863 51.6016Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.3828 62.5859H66.9689V63.02H33.3828V62.5859Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.4902 49.6172H62.9253V65.2589H62.4902V49.6172Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.413525 33.9256L0.369141 33.3143L5.16273 32.9688L5.20711 33.5801L0.413525 33.9256Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.208267 34.1607L0.132812 33.1109L5.36581 32.7344L5.44127 33.7843L0.208267 34.1607ZM0.607732 33.5185L0.621048 33.6868L4.97078 33.3723L4.95747 33.2039L0.607732 33.5185Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.00597 35.4104L1.86837 35.4325C1.22479 35.5389 1.08719 35.9774 1.15377 36.3672C1.23367 36.8457 1.49998 37.178 2.06367 37.0849C3.11559 36.9122 2.64511 34.8079 4.06987 34.5688C4.90875 34.4314 5.45469 34.9542 5.58784 35.7471C5.72987 36.6109 5.39254 37.1691 4.42051 37.2887L4.31399 36.6596C4.8333 36.5799 5.14843 36.3584 5.05522 35.7914C4.99308 35.4325 4.74897 35.0959 4.23854 35.18C3.19549 35.3528 3.69703 37.4526 2.19239 37.7006C1.19372 37.8646 0.758745 37.2311 0.625592 36.4514C0.381474 35.056 1.45115 34.8789 1.90832 34.8168L2.00597 35.4148V35.4104Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.88347 37.9488C1.08897 37.9488 0.556353 37.4305 0.401005 36.4869C0.307796 35.9598 0.378812 35.5301 0.614053 35.2112C0.973573 34.7195 1.5994 34.6353 1.87015 34.5998L2.0832 34.5688L2.2563 35.5965L1.90122 35.6542C1.67042 35.694 1.51507 35.7782 1.43074 35.9155C1.34641 36.0528 1.35085 36.2211 1.3686 36.3363C1.40411 36.5401 1.47068 36.6951 1.57277 36.7837C1.67929 36.8767 1.82577 36.9077 2.0255 36.8767C2.36282 36.8192 2.4871 36.4781 2.66908 35.9243C2.87325 35.2953 3.13068 34.5113 4.0317 34.3606C4.49775 34.2853 4.91496 34.3828 5.23453 34.6486C5.53191 34.8922 5.73165 35.2643 5.8071 35.7206C5.89144 36.2345 5.82042 36.6464 5.58961 36.9521C5.35882 37.2622 4.97266 37.4527 4.44448 37.5147L4.23143 37.5413L4.05389 36.4825L4.27582 36.4471C4.53325 36.4072 4.69748 36.3363 4.77737 36.23C4.84395 36.1415 4.85726 36.013 4.83063 35.8358C4.79069 35.6054 4.66197 35.3396 4.26694 35.4061C3.94293 35.4592 3.81866 35.7915 3.64111 36.3319C3.4325 36.9742 3.17507 37.7716 2.22079 37.9266C2.10539 37.9444 1.98999 37.9576 1.88347 37.9576V37.9488ZM1.71924 35.0738C1.43518 35.1314 1.15111 35.2333 0.973573 35.4725C0.813786 35.694 0.764961 36.0085 0.840417 36.4116C0.97801 37.2445 1.41742 37.5988 2.14978 37.4837C2.83774 37.3685 3.02416 36.7971 3.21945 36.1857C3.397 35.632 3.58341 35.0606 4.19148 34.9586C4.75074 34.8656 5.16796 35.1801 5.2656 35.7516C5.31443 36.0484 5.27004 36.292 5.13689 36.4825C5.01705 36.6464 4.82619 36.7661 4.56432 36.8325L4.59983 37.0319C4.89277 36.9654 5.10582 36.8457 5.2301 36.6774C5.38545 36.4736 5.42983 36.1725 5.36325 35.7826C5.30555 35.4327 5.16352 35.1536 4.94603 34.9808C4.72411 34.7992 4.44005 34.7328 4.09828 34.7903C3.46357 34.8966 3.2816 35.4592 3.0863 36.0528C2.89988 36.6199 2.70902 37.2045 2.09207 37.3065C1.67486 37.3773 1.41298 37.2356 1.27095 37.1071C1.09341 36.9477 0.97801 36.7129 0.929185 36.4028C0.884805 36.1326 0.929185 35.88 1.05347 35.6763C1.15111 35.5168 1.35085 35.3131 1.75031 35.2289L1.72368 35.0649L1.71924 35.0738Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.90095 38.4833L4.41004 38.0226C5.32881 37.7435 6.05672 38.0359 6.3541 39.006C6.65148 39.9762 6.20763 40.6273 5.2933 40.9065L3.78421 41.3671C2.51036 41.7569 1.86234 41.438 1.56496 40.4679C1.26758 39.4978 1.6271 38.8732 2.90095 38.4833ZM3.5756 40.778L5.12908 40.304C6.09224 40.0116 5.91913 39.3427 5.86587 39.1567C5.80817 38.9706 5.57737 38.3194 4.61421 38.6162L3.06073 39.0902C2.0532 39.3958 1.88897 39.7679 2.05763 40.3217C2.2263 40.8755 2.5725 41.0881 3.5756 40.7824V40.778Z\",\n fill: \"white\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.86459 41.7521C2.62491 41.7521 2.41186 41.7122 2.22544 41.6325C1.81266 41.4553 1.5286 41.0965 1.3555 40.5339C1.00929 39.4043 1.47978 38.6867 2.83796 38.2747L4.34705 37.814C4.87079 37.6545 5.32796 37.6678 5.70967 37.8494C6.11357 38.0443 6.40208 38.412 6.5663 38.948C6.88588 39.9979 6.44646 40.7908 5.35903 41.1231L3.84994 41.5837C3.4771 41.6989 3.14866 41.7521 2.86015 41.7521H2.86459ZM5.03502 38.1462C4.86636 38.1462 4.67994 38.1772 4.47577 38.2392L2.96667 38.6999C1.67063 39.0942 1.55523 39.6701 1.77716 40.4054C1.91031 40.844 2.10561 41.1053 2.39411 41.2249C2.7048 41.3578 3.13534 41.3357 3.71678 41.1585L5.22587 40.6978C5.8162 40.5206 6.4509 40.0909 6.14021 39.072C6.01593 38.6601 5.80288 38.3854 5.51882 38.2436C5.37679 38.1772 5.21255 38.1418 5.03058 38.1418L5.03502 38.1462ZM2.81576 41.1408C2.6693 41.1408 2.54058 41.1186 2.42962 41.0788C2.05678 40.9458 1.91919 40.618 1.84817 40.3833C1.77716 40.1485 1.70614 39.7986 1.94138 39.4796C2.12336 39.2315 2.45625 39.041 2.99774 38.8772L4.55122 38.4031C5.15486 38.2215 5.51882 38.3721 5.71855 38.536C5.88277 38.6689 6.00705 38.855 6.07807 39.0942C6.28224 39.7543 5.94935 40.2902 5.19481 40.5162L3.64133 40.9901C3.31288 41.0921 3.04213 41.1408 2.81576 41.1408ZM5.06165 38.762C4.94624 38.762 4.82197 38.7841 4.6755 38.8284L3.12202 39.3024C2.68705 39.4353 2.4163 39.5815 2.29646 39.7454C2.23432 39.8339 2.17662 39.9624 2.26983 40.2592C2.3586 40.556 2.47844 40.6313 2.58053 40.6668C2.77138 40.7377 3.07764 40.7067 3.51261 40.5693L5.06609 40.0954C5.58983 39.9359 5.78513 39.6523 5.65197 39.2227C5.60758 39.072 5.53213 38.9569 5.43892 38.8815C5.34127 38.8018 5.217 38.762 5.06165 38.762Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.23483 45.425C5.16071 45.9654 4.10435 46.5014 3.54066 45.3895C3.22996 44.7738 3.44301 44.1492 4.10435 43.8347L4.37954 44.3796C4.07772 44.5302 3.82028 44.8092 3.99783 45.1592C4.26414 45.6863 4.86333 45.4294 5.92413 44.8979V44.8845C5.56462 44.8979 5.33381 44.6852 5.17403 44.3707C5.0098 44.0429 4.87221 43.3385 5.99959 42.7715C6.92724 42.3064 7.54416 42.6873 7.81939 43.2322C8.38747 44.3618 7.34445 44.8624 6.23039 45.4206L6.23483 45.425ZM6.28809 43.3164C5.87975 43.5246 5.47141 43.8258 5.71108 44.2998C5.95076 44.7738 6.43456 44.6276 6.84735 44.4194C7.22018 44.2334 7.65959 43.9056 7.42435 43.436C7.18911 42.9664 6.66537 43.1259 6.28809 43.312V43.3164Z\",\n fill: \"white\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.50496 46.2613C3.99453 46.2613 3.60394 45.9999 3.34207 45.4861C3.16453 45.1317 3.12903 44.7729 3.24442 44.4406C3.35982 44.0951 3.62613 43.816 4.00784 43.6344L4.20314 43.5414L4.67806 44.4805L4.47833 44.5779C4.28747 44.6754 4.0833 44.8349 4.19426 45.0608C4.31854 45.3045 4.57598 45.2912 5.34384 44.9324C5.21068 44.8349 5.08196 44.6887 4.97544 44.4716C4.89555 44.3122 4.77571 43.9843 4.88667 43.599C5.00651 43.1959 5.34827 42.8503 5.89865 42.5757C6.98165 42.0308 7.71403 42.5403 8.0158 43.1339C8.67715 44.4406 7.45657 45.052 6.38245 45.5924L6.32919 45.619L6.23154 45.4196L6.31587 45.6278C5.77437 45.8981 5.21956 46.1816 4.71357 46.2436C4.64255 46.2524 4.57153 46.2569 4.50052 46.2569L4.50496 46.2613ZM4.01229 44.1394C3.83918 44.259 3.72378 44.4096 3.66165 44.5824C3.58619 44.7994 3.61282 45.0431 3.7371 45.2867C3.95014 45.7076 4.22534 45.8626 4.65587 45.8095C5.08196 45.7563 5.61015 45.4905 6.11614 45.238L6.23154 45.4285L6.12945 45.2292L6.18271 45.2026C7.39443 44.5957 8.06017 44.2059 7.62076 43.3376C7.48318 43.0674 7.06154 42.4915 6.09838 42.9744C5.65897 43.1959 5.3971 43.4484 5.31277 43.7275C5.24175 43.9622 5.31721 44.1704 5.37047 44.2723C5.45924 44.4539 5.56132 44.5514 5.65453 44.6046C5.60127 44.5469 5.55245 44.4761 5.5125 44.3964C5.26394 43.9002 5.4903 43.4705 6.18715 43.1161C7.10593 42.6554 7.47879 43.0541 7.62076 43.3376C7.76725 43.6255 7.73618 43.9135 7.53647 44.1704C7.40774 44.3343 7.20802 44.4849 6.9417 44.6179C6.6532 44.764 6.42239 44.8349 6.21378 44.8349C6.18715 44.8349 6.16052 44.8349 6.13833 44.8349L6.21378 44.9855L6.02293 45.0962C5.5125 45.3532 5.05978 45.5703 4.70913 45.6456C4.27859 45.7341 3.97234 45.6057 3.79924 45.2602C3.6217 44.9102 3.7371 44.5514 4.08774 44.2989L4.01229 44.1438V44.1394ZM6.38689 43.5104C5.72998 43.8426 5.84539 44.073 5.90753 44.197C5.97855 44.3343 6.06731 44.3874 6.20934 44.3919C6.34694 44.3919 6.52004 44.3343 6.7464 44.2191C6.95501 44.1128 7.10148 44.0065 7.19026 43.8958C7.28346 43.7762 7.29231 43.6698 7.22578 43.537C7.18137 43.4484 7.04822 43.1826 6.39132 43.5148L6.38689 43.5104Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.05544 48.2819C7.0479 48.9419 6.06255 49.6019 5.37458 48.5565C4.68662 47.511 5.68083 46.8687 6.68394 46.2043C7.72253 45.522 8.68127 44.8664 9.37808 45.9208C10.075 46.975 9.09407 47.5952 8.05544 48.2774V48.2819ZM6.92362 46.7845C6.27116 47.2142 5.42784 47.7104 5.80511 48.2774C6.17795 48.8444 6.97244 48.2685 7.62048 47.8389C8.65904 47.1567 9.29379 46.727 8.95204 46.2087C8.60583 45.686 7.96669 46.1023 6.92362 46.7845Z\",\n fill: \"white\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.25556 49.3295C5.86942 49.3295 5.50546 49.1523 5.19032 48.6783C4.38251 47.4557 5.53209 46.6982 6.54851 46.0293L6.61064 45.9894C7.14326 45.6394 7.64484 45.3072 8.12863 45.1921C8.71893 45.0503 9.20272 45.2541 9.56224 45.8033C9.92175 46.3526 9.92175 46.8754 9.55778 47.3582C9.2604 47.7569 8.75446 48.0847 8.22629 48.4347L8.17746 48.4657L8.05758 48.2796L8.16409 48.4745C7.54272 48.8821 6.86808 49.3251 6.25556 49.3251V49.3295ZM8.48369 45.5907C8.40379 45.5907 8.32389 45.604 8.23514 45.6217C7.82679 45.7192 7.35631 46.0293 6.85476 46.3571L6.80594 46.3881C5.67855 47.1323 5.02166 47.6196 5.55872 48.4302C6.09578 49.2409 6.80594 48.8333 7.91554 48.1024L7.97767 48.0626C8.47484 47.7348 8.94533 47.4247 9.19826 47.088C9.45127 46.7513 9.44688 46.4368 9.18941 46.0425C8.98524 45.7325 8.7633 45.5863 8.47923 45.5863L8.48369 45.5907ZM6.23337 48.7315C6.18011 48.7315 6.12685 48.727 6.07358 48.7137C5.88273 48.6739 5.73182 48.5675 5.61642 48.3948C5.50102 48.2221 5.46107 48.0359 5.50102 47.8499C5.59866 47.3803 6.14904 47.0215 6.68166 46.6716L6.8015 46.5963C7.88447 45.8875 8.66564 45.3692 9.13612 46.0824C9.60661 46.7956 8.82544 47.3095 7.74243 48.0227L7.62708 48.098C7.15658 48.4081 6.67278 48.7315 6.23781 48.7315H6.23337ZM7.04118 46.9684L6.92134 47.0437C6.50856 47.3139 5.99369 47.6506 5.93155 47.9385C5.92268 47.9828 5.91823 48.0537 5.98038 48.1511C6.04251 48.2486 6.11353 48.2707 6.15791 48.2796C6.45086 48.3416 6.96128 48.0006 7.37407 47.7259L7.49389 47.6461C8.55474 46.9462 8.96748 46.6317 8.7633 46.3216C8.55913 46.0071 8.10641 46.2641 7.04118 46.964V46.9684Z\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1837 50.8793C9.26054 51.6545 8.35948 52.4165 7.5517 51.4596C6.74831 50.5028 7.65821 49.7453 8.58142 48.9745C9.53569 48.1772 10.4101 47.4152 11.2223 48.3853C12.0345 49.351 11.1336 50.082 10.1837 50.8793ZM8.88326 49.5194C8.2885 50.02 7.50733 50.6136 7.94229 51.1318C8.37724 51.6501 9.10073 50.9856 9.69549 50.4895C10.6498 49.6921 11.2312 49.196 10.8273 48.7176C10.4234 48.2392 9.83307 48.7264 8.8788 49.5238L8.88326 49.5194Z\",\n fill: \"white\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.38379 52.134C8.01097 52.134 7.6736 51.9568 7.38068 51.6112C6.95901 51.1107 6.90574 50.5835 7.22534 50.052C7.48273 49.6178 7.96213 49.2147 8.42816 48.8249L8.48584 48.7762C8.97409 48.3686 9.43127 47.9833 9.90175 47.8105C10.4743 47.6023 10.9758 47.7485 11.3975 48.2491C11.8191 48.7496 11.8769 49.2723 11.5706 49.7951C11.3176 50.2247 10.8605 50.6102 10.3722 51.0177L10.3279 51.0531L10.1858 50.8848L10.3145 51.0664C9.85292 51.4562 9.37352 51.8549 8.89865 52.0365C8.72108 52.103 8.55243 52.134 8.38817 52.134H8.38379ZM10.3855 48.156C10.279 48.156 10.1725 48.1781 10.0526 48.2224C9.65759 48.3686 9.22709 48.7319 8.76991 49.1128L8.72554 49.1483C8.27728 49.5248 7.82894 49.9014 7.60701 50.2735C7.38514 50.65 7.42059 50.9601 7.72243 51.3233C8.02427 51.6866 8.3305 51.7707 8.73884 51.6201C9.14273 51.4696 9.59107 51.093 10.026 50.7253L10.0837 50.6766C10.5409 50.2956 10.9714 49.9324 11.1845 49.5691C11.3975 49.2058 11.3576 48.8958 11.0513 48.5326C10.8383 48.2801 10.6252 48.156 10.3855 48.156ZM8.3305 51.5448C8.3305 51.5448 8.28612 51.5448 8.2639 51.5448C8.0731 51.5271 7.90438 51.4385 7.77126 51.2791C7.63807 51.1196 7.57594 50.9423 7.5937 50.7475C7.63807 50.269 8.13963 49.8482 8.62788 49.4406L8.73439 49.3521C9.72865 48.5192 10.4432 47.9213 10.9936 48.5724C11.2511 48.878 11.2333 49.228 10.9448 49.6134C10.7095 49.9235 10.3056 50.2646 9.83516 50.6545L9.72865 50.743C9.26701 51.1328 8.78768 51.5359 8.32604 51.5359L8.3305 51.5448ZM10.4432 48.754C10.1769 48.754 9.75972 49.0774 9.02292 49.6931L8.91641 49.7818C8.53913 50.0962 8.06419 50.4905 8.03758 50.7873C8.03758 50.8316 8.03758 50.9025 8.11302 50.9911C8.18846 51.0797 8.25951 51.0974 8.30389 51.1018C8.60127 51.1329 9.06729 50.7297 9.44457 50.4108L9.55108 50.3177C9.98165 49.9589 10.39 49.6178 10.5942 49.3476C10.8027 49.073 10.7451 48.9578 10.6607 48.8559C10.603 48.785 10.532 48.7496 10.4432 48.7496V48.754Z\",\n fill: \"white\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.3325 54.2313L9.88867 53.8105L12.6095 50.9577L11.7884 50.8159L12.1923 50.3906C12.3476 50.4482 12.898 50.5102 13.1377 50.5279L13.5194 50.8912L10.3325 54.2313Z\",\n fill: \"white\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.3435 54.5483L9.58008 53.8219L12.1677 51.1108L11.3466 50.969L12.1367 50.1406L12.2743 50.1894C12.3808 50.2293 12.8602 50.2913 13.1619 50.3134H13.2418L13.8411 50.8893L10.3479 54.5483H10.3435ZM10.2059 53.8041L10.3302 53.9193L13.2108 50.8982L13.0466 50.7431C12.8646 50.7254 12.5007 50.6899 12.2698 50.6412L12.2432 50.6678L13.0643 50.8095L10.2059 53.8041Z\",\n fill: \"white\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.0661 2.64119C32.0661 2.41084 31.9552 2.15391 31.6401 2.14948L31.0231 2.14062L31.0098 3.15949L31.6223 3.16834C31.9152 3.16834 32.0617 2.92028 32.0617 2.64119H32.0661Z\",\n fill: \"white\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M49.6355 8.23081C49.5378 8.15107 49.165 7.87638 48.7389 8.3903L48.0554 9.22751C47.6115 9.76792 47.6559 10.0337 47.9577 10.2774C48.2551 10.521 48.5259 10.5122 48.9697 9.9717L49.6533 9.13449C50.0794 8.61619 49.7332 8.30611 49.6355 8.22636V8.23081Z\",\n fill: \"white\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.4645 0C14.0878 0 0 14.0603 0 31.4075C0 31.4296 6.2938 31.4296 6.2938 31.4075C6.2938 17.5333 17.5631 6.28151 31.469 6.28151C45.3748 6.28151 56.6442 17.5333 56.6442 31.4075V47.1113H62.938V31.4075C62.9335 14.0603 48.8457 0 31.4645 0ZM12.6808 12.8244C12.0328 13.511 11.5091 13.0104 11.296 12.7933L11.5756 12.501L11.6422 12.5675C11.9573 12.8686 12.2458 12.7668 12.4278 12.5763C12.6542 12.3415 12.7252 12.0669 12.45 11.8055C11.9352 11.3138 10.9986 12.4035 10.3018 11.7391C9.89342 11.3448 9.95556 10.8487 10.324 10.4589C10.7279 10.038 11.1628 9.99813 11.6156 10.4677L11.3226 10.7733C11.0741 10.5297 10.8299 10.45 10.5636 10.7247C10.395 10.9018 10.3106 11.1676 10.5636 11.4068C11.0741 11.8941 11.9973 10.7867 12.7296 11.491C13.2179 11.9561 13.0492 12.4434 12.6853 12.8244H12.6808ZM14.1899 11.2872L13.391 10.3658L11.438 9.43554L11.7842 9.13429L13.2711 9.89183L12.7429 8.30153L13.0536 8.03129L13.6928 10.1001L14.4917 11.0215L14.181 11.2872H14.1899ZM16.2094 9.7678C15.446 10.3259 15.0243 9.73679 14.8557 9.48428L15.1841 9.24949L15.2374 9.32479C15.4904 9.67922 15.7922 9.63049 16.0053 9.47545C16.2671 9.28495 16.3914 9.03244 16.1695 8.72236C15.7567 8.14649 14.6337 9.05017 14.0745 8.26607C13.7416 7.80534 13.8969 7.32694 14.332 7.01243C14.8068 6.67133 15.2374 6.7112 15.5969 7.2561L15.2507 7.50416C15.051 7.21619 14.8246 7.09659 14.5095 7.31811C14.3097 7.45987 14.181 7.70348 14.3852 7.987C14.798 8.55842 15.9031 7.64147 16.4979 8.46095C16.8929 9.00588 16.6399 9.45327 16.2094 9.76335V9.7678ZM17.9803 8.52741L16.5423 6.0733L15.8144 6.49857L15.6368 6.19291L17.4478 5.13861L17.6253 5.44427L16.8974 5.86953L18.3355 8.32364L17.9848 8.52741H17.9803ZM19.4451 7.70793L18.0736 4.81523L19.5694 4.11089L19.7202 4.42984L18.5973 4.96142L19.0367 5.89168L20.0798 5.39997L20.2307 5.71892L19.1876 6.21063L19.6626 7.21174L20.8122 6.67133L20.9631 6.99028L19.4451 7.70348V7.70793ZM23.8792 5.9537L22.9737 3.25593H22.9648L23.0181 6.24164L22.6497 6.36567L20.9098 3.94698H20.9009L21.8064 6.64918L21.4424 6.76879L20.426 3.73435L21.0563 3.52615L22.6763 5.81637H22.6852L22.6053 3.00786L23.2444 2.79523L24.2608 5.82966L23.8747 5.95813L23.8792 5.9537ZM26.9196 5.37339C26.5245 5.43541 25.9165 5.51071 25.7167 4.28365L25.5702 3.39325C25.4237 2.50286 25.7788 2.18391 26.4002 2.08202C27.0261 1.98014 27.319 2.26364 27.3811 2.88382L26.9639 2.95027C26.9373 2.76865 26.8973 2.59145 26.7952 2.50728C26.6976 2.41869 26.5023 2.41426 26.418 2.42755C26.0851 2.48071 25.9874 2.7022 25.9786 2.75092C25.9697 2.78637 25.9075 2.87939 25.9919 3.41983L26.1295 4.26593C26.2537 5.04115 26.5245 5.08988 26.8352 5.04115C26.9595 5.02343 27.3234 4.91712 27.2258 4.30137L27.643 4.23493C27.8205 5.22721 27.1193 5.34238 26.9106 5.37782L26.9196 5.37339ZM28.3842 5.1076L28.1578 1.91812L29.8045 1.80294L29.8312 2.15733L28.5929 2.24593L28.6638 3.27365L29.8135 3.19391L29.8401 3.5483L28.6905 3.62803L28.766 4.73106L30.0309 4.64247L30.0575 4.99685L28.3842 5.11646V5.1076ZM32.0815 5.00128C31.9706 4.77979 32.0016 4.36338 31.9705 3.93813C31.9439 3.5483 31.6288 3.52615 31.4911 3.52615H31.0118L30.9941 4.99243H30.5857L30.6257 1.78966L31.7309 1.80294C32.299 1.8118 32.4943 2.21049 32.4899 2.60917C32.4899 2.98571 32.2724 3.26922 31.8951 3.33124V3.34009C32.2635 3.40212 32.3922 3.52615 32.41 4.16847C32.41 4.3058 32.4499 4.80637 32.512 5.00571H32.086L32.0815 5.00128ZM35.0952 2.35667L34.2564 2.28579L34.0167 5.12089L33.6083 5.08545L33.848 2.25036L33.0092 2.17948L33.0403 1.82509L35.1263 2.00229L35.0952 2.35667ZM35.7388 5.32466L35.3349 5.26707L35.7832 2.09974L36.1872 2.15733L35.7388 5.32466ZM38.2421 4.29694L37.1458 4.07988L36.8617 5.51514L36.4623 5.43541L37.0881 2.29909L38.646 2.60917L38.575 2.95913L37.4166 2.72878L37.2169 3.73878L38.3132 3.95584L38.2421 4.30137V4.29694ZM38.868 5.97142L38.473 5.86953L39.2852 2.7775L39.6802 2.87939L38.868 5.97142ZM40.5147 6.54287C40.1374 6.4144 39.5648 6.19291 39.9643 5.019L40.2573 4.16404C40.5502 3.30909 41.0117 3.19391 41.6065 3.39325C42.2102 3.59703 42.3345 3.98685 42.0948 4.56273L41.6953 4.42541C41.7575 4.25264 41.8018 4.07988 41.7575 3.95584C41.7086 3.83181 41.54 3.73878 41.4601 3.7122C41.1405 3.60588 40.9496 3.75207 40.923 3.79194C40.9008 3.82295 40.7987 3.87167 40.6212 4.38996L40.346 5.20063C40.093 5.94484 40.306 6.11317 40.6034 6.21506C40.7233 6.25493 41.0916 6.33467 41.3003 5.7455L41.6997 5.88282C41.389 6.8441 40.7144 6.61817 40.5147 6.5473V6.54287ZM44.0166 7.9471L43.5994 7.75667L43.7104 6.96813L42.5875 6.44984L42.0504 7.03901L41.6776 6.86625L43.9456 4.38996L44.4161 4.60702L44.0166 7.9471ZM44.5537 8.2838L45.9784 5.82523L45.2506 5.4044L45.4281 5.09874L47.239 6.14418L47.0615 6.44984L46.3335 6.029L44.9087 8.48758L44.5537 8.2838ZM46.0317 9.19631L47.8426 6.55616L48.18 6.78651L46.369 9.42671L46.0317 9.19631ZM47.7272 10.5386C47.2035 10.1089 47.168 9.63049 47.7317 8.94387L48.3975 8.13314C48.8014 7.64147 49.3162 7.53072 49.8399 7.96045C50.3637 8.39011 50.3592 8.91286 49.9554 9.40453L49.2896 10.2152C48.7259 10.9018 48.251 10.9638 47.7272 10.5342V10.5386ZM50.6078 13.2009L50.2217 12.7978L51.358 9.96712H51.349L49.3384 11.8764L49.0854 11.6151L51.4023 9.40453L51.8018 9.82091L50.6788 12.6118H50.6833L52.6673 10.7247L52.9203 10.986L50.6034 13.1964L50.6078 13.2009Z\",\n fill: \"white\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.7656 6.60344L44.0186 4.84037L44.0096 4.83594L42.8379 6.17375L43.7656 6.60344Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIso9001);\nexport default __webpack_public_path__ + \"static/media/ISO9001.ca95cccad83f649bf66f463518e5b6e6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgIso14001(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 68,\n height: 66,\n viewBox: \"0 0 68 66\",\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: \"M32.2848 39.3777L26.9233 34.0265V25.9155L32.2848 31.2667L44.4907 19.0846C41.3658 15.9661 37.0522 14.0391 32.2805 14.0391C22.7464 14.0391 15.0195 21.7514 15.0195 31.2711C15.0195 40.7908 22.7464 48.5032 32.2805 48.5032C41.8146 48.5032 49.5465 40.7864 49.5465 31.2711C49.5465 28.6088 48.938 26.0838 47.86 23.8334L32.2805 39.3777H32.2848Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.8011 62.5909C41.2304 62.1081 40.9104 60.7569 41.0082 59.2597H43.2765C43.2765 60.2918 43.3211 61.1601 44.5724 61.1601C45.3405 61.1601 45.7131 60.6684 45.7131 59.933C45.7131 57.9839 41.1413 57.8643 41.1413 54.6482C41.1413 52.9561 41.9539 51.6094 44.7235 51.6094C46.9335 51.6094 48.0303 52.5972 47.8792 54.8564H45.6685C45.6685 54.0458 45.5311 53.2262 44.617 53.2262C43.8799 53.2262 43.4448 53.6294 43.4448 54.378C43.4448 56.429 48.0166 56.2519 48.0166 59.6495C48.0166 61.5233 47.0932 62.2897 45.9662 62.5909H42.8011Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.5395 55.1056C53.5574 54.1 53.3884 53.2184 52.186 53.2184C50.7742 53.2184 50.7742 55.1189 50.7742 57.2186C50.7742 60.5985 51.1072 61.201 52.3988 61.201C52.7764 61.201 53.1799 61.1124 53.5265 60.9928V58.5962H52.2924V56.935H55.7941V62.4148C55.5546 62.4635 55.1727 62.5255 54.7426 62.5876H50.8591C48.7548 62.0648 48.4707 60.4036 48.4707 57.099C48.4707 54.3746 48.6088 51.6016 52.319 51.6016C54.5427 51.6016 55.9278 52.8463 55.7941 55.1056H53.5395Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.0813 51.6016C62.0648 51.6016 63.1479 52.3723 63.2989 54.1133V54.8531H61.0889C61.0889 54.0645 60.8933 53.2229 59.9742 53.2229C59.2377 53.2229 58.7983 53.626 58.7983 54.3746C58.7983 56.2706 62.7042 56.2618 63.2946 58.933V60.5011C63.0551 61.7636 62.2604 62.3395 61.319 62.5919H58.1547C56.5833 62.1091 56.2639 60.758 56.3618 59.2608H58.6293C58.6293 60.2929 58.6739 61.1611 59.926 61.1611C60.689 61.1611 61.0666 60.6694 61.0666 59.9341C61.0666 57.9849 56.4948 57.8653 56.4948 54.6493C56.4948 52.9571 57.3067 51.6148 60.0763 51.6104L60.0813 51.6016Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.1797 62.5859H67.7659V63.02H34.1797V62.5859Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.293 49.6172H63.7281V65.2589H63.293V49.6172Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.02718 33.8281L1.24609 34.3304L1.31082 34.9384L6.09118 34.4361L6.02718 33.8281Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.11342 35.1851L1.00195 34.1352L6.22605 33.5859L6.33752 34.6358L1.11342 35.1851ZM1.49027 34.5295L1.50825 34.6978L5.8492 34.2415L5.83122 34.0732L1.49027 34.5295Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.24804 38.7983C4.74393 38.4927 4.15779 36.4151 5.19197 36.2024C5.70259 36.0961 5.96005 36.4239 6.03125 36.7827C6.14632 37.3498 5.83995 37.5801 5.32502 37.682L5.45376 38.3066C6.42177 38.1471 6.74108 37.5801 6.56344 36.7207C6.39947 35.9322 5.83563 35.4317 5.00139 35.6044C3.58533 35.8968 4.1355 37.9788 3.0927 38.1959C2.53318 38.311 2.25414 37.9876 2.15633 37.5136C2.0765 37.1283 2.19588 36.6852 2.83523 36.5524L2.97259 36.5258L2.85321 35.9322C2.40013 36.012 1.33503 36.229 1.63709 37.6111C1.79674 38.3864 2.25845 39.0021 3.24804 38.7983Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.88765 39.0625C2.5367 39.0625 2.23464 38.9562 1.99084 38.7391C1.71539 38.4999 1.52482 38.1322 1.42701 37.6538C1.31625 37.1311 1.36947 36.7014 1.5917 36.3691C1.9333 35.8642 2.55467 35.7579 2.82077 35.7091L3.03365 35.6737L3.24221 36.6925L2.88765 36.7634C2.66111 36.8121 2.50577 36.9051 2.42594 37.0425C2.34611 37.1842 2.35474 37.3482 2.38135 37.4633C2.49714 38.017 2.80279 38.0259 3.05594 37.9728C3.38892 37.9063 3.50471 37.5564 3.66436 36.9938C3.84632 36.3558 4.07286 35.5629 4.96463 35.3813C5.42635 35.2883 5.84778 35.368 6.17645 35.6205C6.48281 35.8553 6.69569 36.2185 6.78919 36.6704C6.89563 37.1798 6.83737 37.5962 6.62018 37.9107C6.40299 38.2297 6.02542 38.4334 5.50186 38.5176L5.2933 38.5531L5.07539 37.4987L5.29761 37.4545C5.55508 37.4057 5.71474 37.326 5.79025 37.2152C5.8521 37.1222 5.86145 36.9938 5.82549 36.8166C5.77658 36.5862 5.63922 36.3293 5.24871 36.409C4.92436 36.4755 4.81361 36.8121 4.66258 37.357C4.48063 38.0038 4.24977 38.8144 3.30478 39.0049C3.16238 39.0359 3.02502 39.0492 2.89628 39.0492L2.88765 39.0625ZM2.68772 36.192C2.40365 36.2584 2.12389 36.3736 1.95991 36.6216C1.80889 36.8476 1.77365 37.1665 1.86211 37.5652C1.94193 37.9418 2.08434 38.2341 2.28355 38.4069C2.5144 38.6062 2.81645 38.6638 3.21128 38.5841C3.89522 38.4423 4.05919 37.862 4.23251 37.2462C4.39217 36.6881 4.55614 36.1078 5.15522 35.9837C5.70611 35.8686 6.14049 36.1654 6.25627 36.7368C6.31812 37.0292 6.28288 37.2772 6.15415 37.4677C6.03908 37.6361 5.85713 37.7601 5.59463 37.8398L5.63491 38.0392C5.9233 37.9639 6.13186 37.8355 6.25196 37.6627C6.39795 37.45 6.4296 37.1488 6.35408 36.7634C6.28288 36.4179 6.12754 36.1432 5.90532 35.9749C5.67446 35.8021 5.39039 35.749 5.05309 35.8154C4.4231 35.9439 4.26344 36.5153 4.09011 37.1134C3.92614 37.6848 3.75714 38.2784 3.14512 38.4024C2.52375 38.5309 2.08433 38.2164 1.94625 37.5475C1.88872 37.2772 1.92396 37.0248 2.03974 36.8166C2.13252 36.6526 2.32382 36.4445 2.71865 36.3426L2.68772 36.1831V36.192Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.55727 40.2184C7.21494 39.2615 6.46987 39.0046 5.56874 39.328L4.0858 39.8596C2.83443 40.3069 2.50577 40.9493 2.84738 41.9061C3.18971 42.863 3.85063 43.1465 5.10703 42.6991L6.59357 42.1675C7.49469 41.8441 7.9075 41.1752 7.56158 40.2184H7.55727ZM4.86754 42.1187C3.87724 42.4732 3.52268 42.2739 3.32707 41.7334C3.13145 41.1885 3.27816 40.812 4.26775 40.4576L5.79456 39.9083C6.74028 39.5716 7.00637 40.2095 7.07326 40.3911C7.13942 40.5727 7.33935 41.2328 6.39435 41.5739L4.86754 42.1232V42.1187Z\",\n fill: \"white\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.09332 43.1257C3.38349 43.1257 2.91243 42.7492 2.63339 41.9784C2.43346 41.4202 2.4464 40.964 2.66863 40.5786C2.89086 40.1932 3.33027 39.8919 4.00486 39.6483L5.48709 39.1167C6.56154 38.7313 7.38715 39.1078 7.75968 40.14C7.95026 40.6672 7.93732 41.1323 7.72876 41.531C7.53314 41.9075 7.16924 42.191 6.65431 42.3726L5.16777 42.9042C4.75928 43.0504 4.39969 43.1257 4.08469 43.1257H4.09332ZM6.25516 39.4179C6.04157 39.4179 5.83301 39.4667 5.64243 39.5376L4.16021 40.0692C3.58774 40.2729 3.22815 40.5121 3.05915 40.8045C2.90381 41.0747 2.89949 41.3981 3.05915 41.8322C3.32093 42.5587 3.75603 42.9486 5.03472 42.4923L6.52126 41.9607C6.92975 41.8145 7.20951 41.6019 7.35119 41.3272C7.4979 41.0437 7.50222 40.6982 7.35119 40.295C7.1117 39.6262 6.68523 39.4224 6.25948 39.4224L6.25516 39.4179ZM4.05377 42.5188C3.5827 42.5188 3.29 42.2885 3.12171 41.81C2.85922 41.0791 3.17925 40.614 4.19544 40.2508L5.72225 39.7014C6.46372 39.4357 7.04914 39.6661 7.28503 40.3172C7.5202 40.9684 7.21383 41.5177 6.47235 41.7835L4.94554 42.3328C4.5953 42.4568 4.30188 42.5233 4.05808 42.5233L4.05377 42.5188ZM6.29903 40.0337C6.17534 40.0337 6.03294 40.0603 5.87328 40.1179L4.34647 40.6672C3.39212 41.0083 3.41442 41.3051 3.53884 41.6595C3.66254 42.0138 3.84017 42.2531 4.79452 41.912L6.32133 41.3627C6.83626 41.1766 7.0139 40.8843 6.86718 40.4634C6.76506 40.1755 6.57448 40.0293 6.29903 40.0293V40.0337Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.16275 44.4032C8.93621 44.319 8.42991 44.1019 8.29686 44L7.78697 44.288L8.53203 44.6601L5.10156 46.6092L5.4029 47.1408L9.4159 44.8594L9.1534 44.4032H9.16275Z\",\n fill: \"white\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.32239 47.4422L4.79883 46.5252L8.06101 44.6735L7.31523 44.3014L8.31416 43.7344L8.42923 43.823C8.52272 43.8894 8.95783 44.0888 9.2419 44.1951L9.31669 44.2217L9.72519 44.9393L5.3267 47.4377L5.32239 47.4422ZM5.40653 46.6935L5.49067 46.8397L9.11748 44.7798L9.00601 44.5849C8.82406 44.5096 8.49612 44.3723 8.29187 44.2616L8.25591 44.2793L9.0017 44.6514L5.40221 46.6935H5.40653Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.63178 49.0027L11.0511 47.2973L10.5807 46.6328L7.40702 47.2751L6.97192 47.5808L7.86442 48.8388L6.94531 49.4856L7.27398 49.9507L8.19237 49.304L8.50736 49.7469L8.94247 49.4413L8.62746 48.9983L8.63178 49.0027ZM8.30384 48.5376L7.72202 47.7136L10.2607 47.1422L10.2701 47.151L8.30815 48.5332L8.30384 48.5376Z\",\n fill: \"white\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.22871 50.2701L6.64258 49.4417L7.56169 48.7949L6.66919 47.5369L7.37039 47.0673L10.6865 46.3984L11.3654 47.3597L8.9461 49.0652L9.26182 49.5082L8.46281 50.0708L8.1471 49.6278L7.22871 50.2745V50.2701ZM7.25963 49.548L7.33514 49.6543L8.25425 49.0076L8.56925 49.4505L8.64045 49.3974L8.32473 48.9544L10.744 47.2489L10.4866 46.8857L10.3622 46.9123L10.5707 47.2002L10.3981 47.3419L8.25425 48.8526L7.36175 47.5945L7.29056 47.6476L8.18305 48.9057L7.26395 49.5525L7.25963 49.548ZM8.09387 47.8603L8.35638 48.2323L9.25679 47.5989L8.09387 47.8603ZM7.50415 47.4926L7.40635 47.5635L9.69188 47.0496L7.50415 47.4926Z\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5922 49.0355C11.7486 48.0964 10.8963 48.8849 9.96861 49.7133C9.07252 50.5151 8.18433 51.3036 9.0193 52.2339C9.85354 53.1642 10.7324 52.3668 11.6292 51.565C12.5562 50.7321 13.4307 49.9747 12.5878 49.0355H12.5922ZM9.40549 51.8928C8.95241 51.3877 9.71114 50.7676 10.293 50.2493C11.2207 49.4165 11.7932 48.9115 12.2146 49.3766C12.6317 49.8417 12.0686 50.3556 11.1409 51.1884C10.5591 51.7067 9.86217 52.3933 9.40981 51.8928H9.40549Z\",\n fill: \"white\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.82868 52.8816C9.50505 52.8816 9.17638 52.7398 8.85707 52.381C8.41765 51.8937 8.34645 51.371 8.64851 50.8261C8.89231 50.3831 9.35833 49.9667 9.80638 49.5636L9.8596 49.5149C10.335 49.0896 10.7787 48.691 11.2447 48.5005C11.8086 48.2701 12.3141 48.403 12.7536 48.8903C13.193 49.3776 13.2685 49.8959 12.9801 50.4318C12.7449 50.8704 12.2969 51.2735 11.8215 51.6944L11.7776 51.7342C11.1606 52.288 10.4946 52.886 9.82436 52.886L9.82868 52.8816ZM11.7683 48.8327C11.6575 48.8327 11.5374 48.8593 11.413 48.9125C11.0225 49.0719 10.6011 49.4484 10.1573 49.8471L10.1171 49.8825C9.68268 50.2724 9.24327 50.6666 9.03399 51.0432C8.82543 51.4242 8.87001 51.7387 9.18501 52.0886C9.83803 52.8107 10.4767 52.3057 11.4713 51.4153L11.5288 51.3665C11.9725 50.9679 12.394 50.5913 12.5939 50.2237C12.7938 49.8515 12.7449 49.5414 12.4299 49.1915C12.2171 48.9523 12.0078 48.8371 11.7726 48.8371L11.7683 48.8327ZM9.77546 52.2924C9.77546 52.2924 9.74885 52.2924 9.7359 52.2924C9.5446 52.2835 9.37631 52.1994 9.23392 52.0443C9.09656 51.8893 9.02967 51.7121 9.03902 51.5216C9.06563 51.0432 9.55827 50.6046 10.0329 50.1838L10.1394 50.0908C10.5968 49.6832 10.9916 49.3288 11.3289 49.1383C11.751 48.9036 12.1013 48.9346 12.3724 49.2358C12.9449 49.8693 12.248 50.4939 11.28 51.3577L11.1735 51.4507C10.7169 51.8627 10.2415 52.2924 9.77546 52.2924ZM9.56689 51.7475C9.64672 51.8361 9.71361 51.8494 9.76251 51.8494C10.0552 51.8715 10.5126 51.4552 10.8808 51.1229L10.9873 51.0254C11.933 50.1793 12.2919 49.8029 12.0437 49.5282C11.9546 49.4307 11.8524 49.3554 11.5468 49.5282C11.2491 49.6921 10.8542 50.0465 10.4371 50.4186L10.3307 50.5116C9.96173 50.8394 9.50073 51.2469 9.48707 51.5437C9.48707 51.588 9.48707 51.6589 9.56689 51.7475Z\",\n fill: \"white\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.8023 51.2321C13.8523 50.3993 13.1022 51.2764 12.2809 52.2111C11.4826 53.1148 10.6965 53.9963 11.6329 54.8203C12.57 55.6487 13.351 54.7538 14.1457 53.8545C14.9663 52.9243 15.748 52.0694 14.8023 51.2321ZM13.6085 53.5356C13.0936 54.1203 12.4808 54.8823 11.9702 54.4349C11.4603 53.9875 12.1435 53.2831 12.6584 52.7028C13.4797 51.7726 13.9947 51.2011 14.4607 51.6175C14.931 52.0295 14.4298 52.6098 13.6042 53.5401L13.6085 53.5356Z\",\n fill: \"white\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.389 55.3624C12.0783 55.3624 11.7806 55.2339 11.4879 54.9814C10.9952 54.5473 10.8665 54.0378 11.0973 53.462C11.2879 52.9924 11.7007 52.5228 12.0999 52.071L12.1488 52.0134C12.5709 51.5394 12.9658 51.0876 13.4052 50.8483C13.9381 50.556 14.4573 50.6269 14.95 51.061C15.4426 51.4951 15.58 52.0001 15.3534 52.5627C15.1672 53.0234 14.7723 53.4752 14.3502 53.9493L14.3106 53.9935C13.8978 54.4587 13.485 54.9282 13.0413 55.1763C12.8191 55.3004 12.5975 55.3624 12.3796 55.3624H12.389ZM14.0445 51.1141C13.9064 51.1141 13.7691 51.154 13.6224 51.2382C13.2542 51.4419 12.8816 51.8628 12.4861 52.3102L12.4465 52.3545C12.0603 52.7931 11.6698 53.2316 11.5101 53.6303C11.3455 54.0334 11.4253 54.3391 11.7806 54.6492C12.1358 54.9592 12.4465 55.0036 12.8284 54.7909C13.2052 54.5783 13.5914 54.1397 13.969 53.7189L14.0179 53.6613C14.4127 53.2139 14.7853 52.7931 14.9406 52.4032C15.096 52.0134 15.0118 51.7122 14.6565 51.3977C14.4437 51.2116 14.2488 51.1186 14.0445 51.1186V51.1141ZM12.3041 54.7865C12.1315 54.7865 11.9668 54.7244 11.8252 54.596C11.6698 54.4587 11.5857 54.2903 11.572 54.0998C11.5411 53.6214 11.9805 53.1297 12.4019 52.6558L12.4954 52.5495C12.8989 52.0887 13.2498 51.6944 13.5648 51.4686C13.9597 51.185 14.3106 51.1806 14.6076 51.4419C15.247 52.0045 14.6299 52.7045 13.7734 53.6746L13.6806 53.7809C13.2628 54.2593 12.8284 54.7511 12.3487 54.7821C12.3307 54.7821 12.3178 54.7821 12.2998 54.7821L12.3041 54.7865ZM14.1373 51.6944C14.0618 51.6944 13.9647 51.7299 13.8266 51.8274C13.5519 52.0223 13.2009 52.421 12.8284 52.8418L12.7349 52.9481C12.4062 53.3158 11.9978 53.7765 12.0157 54.0688C12.0157 54.1131 12.0337 54.184 12.1179 54.2593C12.207 54.3346 12.2775 54.3435 12.3221 54.3391C12.6198 54.3213 13.0233 53.8607 13.3476 53.4885L13.4404 53.3822C14.2797 52.4298 14.5947 52.0179 14.3149 51.7742C14.266 51.7299 14.2128 51.6944 14.133 51.6944H14.1373Z\",\n fill: \"white\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0488 53.0938C16.8093 53.1115 16.2584 53.1336 16.0944 53.0982L15.7571 53.5766L16.5914 53.5943L14.3281 56.8193L14.8294 57.1692L17.4796 53.395L17.0488 53.0938Z\",\n fill: \"white\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.8835 57.4729L14.0176 56.866L16.1701 53.8005L15.3358 53.7828L15.9932 52.8438L16.1348 52.8748C16.2456 52.8969 16.7296 52.888 17.0273 52.8659H17.1072L17.7861 53.3354L14.8784 57.4729H14.8835ZM14.6346 56.7597L14.772 56.8572L17.169 53.4417L16.9827 53.3132C16.7828 53.3266 16.4275 53.3399 16.1967 53.3266L16.1751 53.3576L17.0094 53.3753L14.6346 56.7597Z\",\n fill: \"white\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M50.4348 8.23081C50.337 8.15107 49.9644 7.87638 49.538 8.3903L48.8504 9.22751C48.4067 9.76792 48.4506 10.0337 48.7526 10.2774C49.0504 10.521 49.3208 10.5122 49.7645 9.9717L50.4484 9.13449C50.8742 8.61619 50.5283 8.30611 50.4305 8.22636L50.4348 8.23081Z\",\n fill: \"white\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.869 2.64119C32.869 2.41084 32.7582 2.15391 32.4432 2.14948L31.8262 2.14062L31.8125 3.15949L32.4252 3.16834C32.7179 3.16834 32.8647 2.92028 32.8647 2.64119H32.869Z\",\n fill: \"white\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.5649 6.60344L44.813 4.84037L44.8044 4.83594L43.6328 6.17375L44.5649 6.60344Z\",\n fill: \"white\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.2674 0C14.8907 0 0.802734 14.0603 0.802734 31.4075C0.802734 31.4296 7.09697 31.4296 7.09697 31.4075C7.09697 17.5333 18.3657 6.28151 32.2717 6.28151C46.1777 6.28151 57.4472 17.5333 57.4472 31.4075V47.1113H63.7407V31.4075C63.7364 14.0603 49.6485 0 32.2674 0ZM13.484 12.8244C12.836 13.511 12.3117 13.0104 12.0988 12.7933L12.3786 12.501L12.4448 12.5675C12.7605 12.8686 13.0489 12.7668 13.2308 12.5763C13.4574 12.3415 13.5278 12.0669 13.2531 11.8055C12.7382 11.3138 11.8018 12.4035 11.1049 11.7391C10.6964 11.3448 10.7583 10.8487 11.1265 10.4589C11.535 10.038 11.9658 9.99813 12.4182 10.4677L12.1211 10.7733C11.8723 10.5297 11.6285 10.45 11.3624 10.7247C11.1934 10.9018 11.1093 11.1676 11.3624 11.4068C11.8723 11.8941 12.7957 10.7867 13.5278 11.491C14.0162 11.9561 13.8479 12.4434 13.484 12.8244ZM14.9928 11.2872L14.1938 10.3658L12.2412 9.43554L12.5872 9.13429L14.0737 9.89183L13.5458 8.30153L13.8565 8.03129L14.4959 10.1001L15.2949 11.0215L14.9842 11.2872H14.9928ZM17.0079 9.7678C16.2442 10.3259 15.8227 9.73679 15.6544 9.48428L15.9824 9.24949L16.0356 9.32479C16.2888 9.67922 16.5908 9.63049 16.8037 9.47545C17.0655 9.28495 17.1899 9.03244 16.9677 8.72236C16.5549 8.14649 15.4322 9.05017 14.8727 8.26607C14.5397 7.80534 14.6951 7.32694 15.1302 7.01243C15.6055 6.67133 16.0399 6.7112 16.3952 7.2561L16.0493 7.50416C15.8493 7.21619 15.6228 7.09659 15.3078 7.31811C15.1079 7.45987 14.9791 7.70348 15.1834 7.987C15.5962 8.55842 16.7016 7.64147 17.2963 8.46095C17.6912 9.00588 17.4387 9.45327 17.0079 9.76335V9.7678ZM18.7785 8.52741L17.3409 6.0733L16.6131 6.49857L16.4355 6.19291L18.2464 5.13861L18.424 5.44427L17.6955 5.86953L19.1338 8.32364L18.7785 8.52741ZM20.2435 7.70793L18.8764 4.81523L20.3722 4.11089L20.5233 4.42984L19.3999 4.96142L19.8393 5.89168L20.8829 5.39997L21.0339 5.71892L19.9904 6.21063L20.4657 7.21174L21.615 6.67133L21.766 6.99028L20.2478 7.70348L20.2435 7.70793ZM24.6772 5.9537L23.7718 3.25593H23.7632L23.8164 6.24164L23.4482 6.36567L21.7085 3.94698H21.6991L22.6046 6.64918L22.2407 6.76879L21.2245 3.73435L21.8501 3.52615L23.4705 5.81637H23.4791L23.3993 3.00786L24.0386 2.79523L25.0548 5.82966L24.6686 5.95813L24.6772 5.9537ZM27.7179 5.37339C27.3231 5.43541 26.7147 5.51071 26.5154 4.28365L26.3687 3.39325C26.222 2.50286 26.5773 2.18391 27.1987 2.08202C27.8244 1.98014 28.1178 2.26364 28.1796 2.88382L27.7625 2.95027C27.7359 2.76865 27.6956 2.59145 27.5935 2.50728C27.4957 2.41869 27.3008 2.41426 27.2166 2.42755C26.8837 2.48071 26.7859 2.7022 26.7772 2.75092C26.7679 2.78637 26.706 2.87939 26.7902 3.41983L26.9283 4.26593C27.052 5.04115 27.3231 5.08988 27.6338 5.04115C27.7582 5.02343 28.1221 4.91712 28.0243 4.30137L28.4414 4.23493C28.619 5.22721 27.9178 5.34238 27.7093 5.37782L27.7179 5.37339ZM29.1829 5.1076L28.9563 1.91369L30.6032 1.79851L30.6299 2.1529L29.3914 2.24149L29.4626 3.26922L30.6119 3.18948L30.6385 3.54387L29.4892 3.62361L29.564 4.72663L30.8291 4.63804L30.8557 4.99243L29.1829 5.11203V5.1076ZM32.8802 5.00128C32.7687 4.77979 32.8003 4.36338 32.7687 3.93813C32.7421 3.5483 32.4271 3.52615 32.2897 3.52615H31.81L31.7928 4.99243H31.3843L31.4238 1.78966L32.5292 1.80294C33.0973 1.8118 33.293 2.21049 33.2879 2.60917C33.2879 2.98571 33.0707 3.26922 32.6932 3.33124V3.34009C33.0621 3.40212 33.1908 3.52615 33.2081 4.16847C33.2081 4.3058 33.2484 4.80637 33.3102 5.00571H32.8845L32.8802 5.00128ZM35.8935 2.35667L35.0549 2.28579L34.8155 5.12089L34.407 5.08545L34.6465 2.25036L33.8079 2.17948L33.8388 1.82509L35.9244 2.00229L35.8935 2.35667ZM36.5372 5.32466L36.1337 5.26707L36.5818 2.09974L36.9852 2.15733L36.5372 5.32466ZM39.0406 4.29694L37.9446 4.07988L37.6605 5.51514L37.2607 5.43541L37.8863 2.29909L39.4448 2.60917L39.3736 2.95913L38.215 2.72878L38.0151 3.73878L39.1118 3.95584L39.0406 4.30137V4.29694ZM39.6663 5.97142L39.2715 5.86953L40.0834 2.7775L40.479 2.87939L39.6663 5.97142ZM41.3175 6.54287C40.94 6.4144 40.3675 6.19291 40.7674 5.019L41.0601 4.16404C41.3528 3.30909 41.8145 3.19391 42.4092 3.39325C43.0134 3.59703 43.1371 3.98685 42.8976 4.56273L42.4984 4.42541C42.5603 4.25264 42.6092 4.07988 42.5603 3.95584C42.5114 3.83181 42.3431 3.73878 42.2632 3.7122C41.9432 3.60588 41.7526 3.75207 41.726 3.79194C41.7037 3.82295 41.6016 3.87167 41.424 4.38996L41.1485 5.20063C40.8961 5.94484 41.109 6.11317 41.406 6.21506C41.5218 6.25493 41.8943 6.33467 42.1029 5.7455L42.5027 5.88282C42.1921 6.8441 41.5175 6.61817 41.3175 6.5473V6.54287ZM44.8192 7.9471L44.4021 7.75667L44.5135 6.96813L43.3902 6.44984L42.853 7.03901L42.4804 6.86625L44.7487 4.38996L45.2191 4.60702L44.8192 7.9471ZM45.3564 8.2838L46.7811 5.82523L46.0533 5.4044L46.2309 5.09874L48.0418 6.14418L47.8642 6.44984L47.1364 6.029L45.7117 8.48758L45.3564 8.2838ZM46.8343 9.19631L48.6452 6.55616L48.9825 6.78651L47.1716 9.42671L46.8343 9.19631ZM48.5345 10.5386C48.0109 10.1089 47.9749 9.63049 48.5388 8.94387L49.2047 8.13314C49.6089 7.64147 50.1238 7.53072 50.6474 7.96045C51.171 8.39011 51.1667 8.91286 50.7625 9.40453L50.0972 10.2152C49.5334 10.9018 49.058 10.9638 48.5345 10.5342V10.5386ZM51.4148 13.2009L51.0293 12.7978L52.1656 9.96712H52.1606L50.1505 11.8764L49.8973 11.6151L52.2138 9.40453L52.6136 9.82091L51.4903 12.6118H51.4953L53.4788 10.7247L53.732 10.986L51.4148 13.1964V13.2009Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIso14001);\nexport default __webpack_public_path__ + \"static/media/ISO14001.c6a76d6863c0cd98368bb3e4d074a057.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMzuriLogo3(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 199,\n height: 19,\n viewBox: \"0 0 199 19\",\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, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_6216_6537)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.9553 18.8255V5.49711L13.868 5.56255L12.4266 9.0746L9.19436 16.0551H7.11962L3.84372 8.85646L2.44601 5.49711L2.35865 5.56255V18.8255H0V0.130859H2.35865L6.31157 8.85646L8.16791 13.1975H8.25527L10.1116 8.87828L13.999 0.130859H16.314V18.8255H13.9553Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.3281 18.8255V16.7531L33.4351 2.20319H24.6776V0.130859H36.1432V2.00686L26.9925 16.6441H36.1432V18.8255H24.3281Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.3502 0.130859V12.0631C57.3631 13.0349 57.208 14.0017 56.8915 14.9208C56.5959 15.7335 56.1348 16.4762 55.5375 17.1022C54.9215 17.7175 54.1752 18.1871 53.3536 18.4764C52.476 18.8125 51.5415 18.9755 50.6018 18.9563C49.6043 18.9752 48.6142 18.7819 47.6972 18.3892C46.8649 18.0583 46.1183 17.5438 45.5133 16.884C44.9534 16.2531 44.5363 15.5091 44.2903 14.7026C44.0077 13.8515 43.8675 12.9598 43.8753 12.0631V0.130859H46.234V11.8668C46.2395 12.4809 46.3351 13.0909 46.5179 13.6774C46.68 14.2427 46.9548 14.7696 47.3259 15.2262C47.6878 15.6797 48.1418 16.0515 48.6581 16.3169C49.2505 16.6011 49.9011 16.743 50.5581 16.7313C51.1376 16.7602 51.7164 16.664 52.2553 16.4495C52.7942 16.2349 53.2805 15.907 53.6812 15.4879C54.5017 14.4662 54.9071 13.1735 54.8168 11.8668V0.130859H57.3502Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.0935 5.23561C77.131 4.79934 77.0611 4.36054 76.8898 3.95749C76.7184 3.55444 76.451 3.19939 76.1107 2.92332C75.3859 2.40756 74.5103 2.14669 73.621 2.18164H68.7727V8.50771H73.5118C74.4343 8.53784 75.3383 8.24458 76.067 7.67877C76.4108 7.37468 76.6816 6.99713 76.8593 6.57417C77.037 6.15121 77.1171 5.69369 77.0935 5.23561ZM76.5694 18.8257L73.0095 10.6019H68.7727V18.8257H66.4141V0.131128H74.0578C74.8021 0.124245 75.5416 0.249819 76.2418 0.501966C76.8721 0.750873 77.4555 1.10494 77.9671 1.54904C78.4438 2.01105 78.8291 2.55869 79.1027 3.16327C79.4024 3.85033 79.5442 4.59571 79.5177 5.34468C79.5519 6.53359 79.1565 7.69509 78.4039 8.61678C77.6346 9.51164 76.6157 10.1572 75.4774 10.471L79.2774 18.9348L76.5694 18.8257Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.218 0.130859H87.8594V18.8255H90.218V0.130859Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.724 16.8839C106.303 16.8949 106.878 16.7757 107.405 16.5348C107.911 16.2892 108.369 15.957 108.759 15.5532C109.149 15.1364 109.453 14.6472 109.655 14.1135C109.874 13.5807 109.985 13.0098 109.982 12.4338V10.9068H106.029V8.72541H112.341V12.412C112.354 13.3147 112.191 14.2113 111.86 15.0515C111.559 15.8664 111.09 16.6094 110.485 17.2329C109.848 17.8224 109.108 18.2885 108.301 18.6072C107.437 18.9377 106.518 19.1006 105.593 19.0871C104.576 19.0869 103.571 18.8713 102.644 18.4545C101.861 18.0998 101.163 17.5812 100.598 16.9339C100.033 16.2866 99.6137 15.5256 99.3684 14.7025C99.0858 13.8514 98.9456 12.9596 98.9534 12.063V6.89304C98.9874 6.03047 99.1493 5.1777 99.4339 4.36261C99.6943 3.56238 100.11 2.82117 100.657 2.18121C101.188 1.49896 101.867 0.946832 102.644 0.566975C103.566 0.165863 104.565 -0.0277658 105.571 -0.000189014C106.932 -0.0517072 108.276 0.321918 109.414 1.0687C110.412 1.79145 111.172 2.79358 111.598 3.94815L109.414 4.92978C109.12 4.12888 108.578 3.44196 107.868 2.96771C107.158 2.49346 106.315 2.25629 105.462 2.29028C104.813 2.27115 104.17 2.40571 103.583 2.68293C103.08 2.94029 102.64 3.30525 102.295 3.75182C101.962 4.20656 101.71 4.71593 101.552 5.25699C101.398 5.82599 101.317 6.41252 101.312 7.00211V12.0193C101.305 12.6344 101.401 13.2464 101.596 13.8299C101.755 14.3921 102.022 14.9181 102.382 15.3787C102.751 15.8337 103.213 16.2055 103.736 16.4694C104.325 16.7643 104.978 16.9068 105.636 16.8839\",\n fill: \"#C7C7C7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.843 5.23561C131.881 4.79934 131.811 4.36054 131.64 3.95749C131.468 3.55444 131.201 3.19939 130.861 2.92332C130.136 2.40756 129.26 2.14669 128.371 2.18164H123.523V8.50771H128.262C129.184 8.53784 130.088 8.24458 130.817 7.67877C131.164 7.37235 131.436 6.99125 131.614 6.56425C131.792 6.13724 131.87 5.67548 131.843 5.21379V5.23561ZM131.319 18.8039L127.76 10.6019H123.523V18.8257H121.164V0.131128H128.852C129.596 0.124245 130.335 0.249819 131.035 0.501966C131.666 0.750873 132.249 1.10494 132.761 1.54904C133.237 2.01105 133.623 2.55869 133.896 3.16327C134.196 3.85033 134.338 4.59571 134.311 5.34468C134.346 6.53359 133.95 7.69509 133.198 8.61678C132.428 9.51164 131.409 10.1572 130.271 10.471L134.071 18.9348L131.319 18.8039Z\",\n fill: \"#C7C7C7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.504 2.18118C147.846 2.1582 147.193 2.30072 146.604 2.59565C146.086 2.83872 145.63 3.19686 145.272 3.64272C144.903 4.09284 144.629 4.61201 144.464 5.1697C144.283 5.73406 144.187 6.32224 144.18 6.91482V11.932C144.187 12.5532 144.283 13.1702 144.464 13.7644C144.629 14.3221 144.903 14.8413 145.272 15.2914C145.622 15.7566 146.079 16.1307 146.604 16.3821C147.193 16.677 147.846 16.8195 148.504 16.7966C149.122 16.8113 149.734 16.6844 150.295 16.4257C150.809 16.1864 151.264 15.8363 151.627 15.4005C152.011 14.9541 152.301 14.4347 152.479 13.8735C152.714 13.2518 152.847 12.5962 152.872 11.932V6.95845C152.878 6.33632 152.782 5.71745 152.588 5.12607C152.401 4.57554 152.112 4.06498 151.736 3.62091C151.363 3.19618 150.911 2.84798 150.404 2.59565C149.81 2.31662 149.161 2.17496 148.504 2.18118ZM148.504 -0.000219408C149.455 -0.0141368 150.398 0.16394 151.278 0.523317C152.099 0.844991 152.843 1.33551 153.462 1.96304C154.043 2.59294 154.489 3.3354 154.772 4.14444C155.083 5.02714 155.239 5.95719 155.231 6.89301V12.0629C155.244 13.0347 155.089 14.0015 154.772 14.9206C154.476 15.7333 154.015 16.476 153.418 17.102C152.802 17.7173 152.056 18.1869 151.234 18.4762C150.365 18.817 149.438 18.9873 148.504 18.978C147.507 18.9969 146.517 18.8035 145.6 18.4108C144.767 18.08 144.021 17.5654 143.416 16.9056C142.856 16.2747 142.439 15.5307 142.193 14.7242C141.967 13.8563 141.885 12.9572 141.952 12.0629V6.89301C141.941 6.03523 142.067 5.18115 142.324 4.36258C142.584 3.56235 143 2.82114 143.547 2.18118C144.152 1.5214 144.898 1.00685 145.731 0.676015C146.599 0.263545 147.543 0.0333912 148.504 -0.000219408Z\",\n fill: \"#C7C7C7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M176.896 0.130859V12.0631C176.902 13.0362 176.739 14.003 176.415 14.9208C176.128 15.7376 175.666 16.482 175.061 17.1022C174.445 17.7175 173.699 18.1871 172.877 18.4764C172.07 18.7933 171.212 18.9632 170.344 18.9782C169.346 18.9971 168.356 18.8037 167.439 18.411C166.61 18.0744 165.865 17.5606 165.255 16.9058C164.696 16.2749 164.279 15.5309 164.032 14.7244C163.75 13.8734 163.61 12.9816 163.617 12.0849V0.130859H165.976V11.8668C165.974 12.4799 166.063 13.0899 166.238 13.6774C166.468 14.5796 167.001 15.3756 167.749 15.9316C168.496 16.4877 169.413 16.77 170.344 16.7313C170.913 16.7521 171.479 16.6521 172.007 16.4377C172.534 16.2234 173.009 15.8996 173.402 15.4879C174.222 14.4662 174.627 13.1735 174.537 11.8668V0.130859H176.896Z\",\n fill: \"#C7C7C7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.553 5.71525C196.589 5.23977 196.515 4.76247 196.337 4.32003C196.159 3.87758 195.882 3.48177 195.527 3.16301C194.781 2.57976 193.853 2.27845 192.906 2.31226H188.341V9.11823H192.971C193.519 9.11065 194.057 8.97624 194.544 8.72558C194.964 8.54092 195.343 8.27387 195.658 7.94027C195.941 7.62016 196.164 7.25037 196.313 6.84957C196.461 6.45946 196.535 6.0452 196.531 5.62799L196.553 5.71525ZM198.999 5.62799C198.991 6.30109 198.858 6.96681 198.606 7.59125C198.346 8.2431 197.968 8.84192 197.492 9.35818C196.967 9.89342 196.345 10.323 195.658 10.6234C194.884 10.9752 194.04 11.1468 193.19 11.1251H188.341V18.8255H185.961V0.130859H192.818C193.558 0.139033 194.293 0.249143 195.002 0.458069C195.723 0.663437 196.397 1.00399 196.99 1.46151C197.575 1.94604 198.051 2.54806 198.388 3.22845C198.756 4.03541 198.935 4.91581 198.912 5.8025\",\n fill: \"#C7C7C7\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_6216_6537\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 199,\n height: 19,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMzuriLogo3);\nexport default __webpack_public_path__ + \"static/media/Mzuri_logo (3).29e915e20a4ed92bb09523c979fe8869.svg\";\nexport { ForwardRef as ReactComponent };","import {Link, useNavigate} from \"react-router-dom\";\r\nimport linkedinIcon from \"../../../assets/linked-in.svg\"\r\nimport facebookIcon from \"../../../assets/facebook.svg\"\r\nimport twitterIcon from \"../../../assets/twitter.svg\"\r\nimport ukasIcon from \"../../../assets/UKAS.svg\"\r\nimport isoIcon from \"../../../assets/ISO9001.svg\"\r\nimport isoIcon2 from \"../../../assets/ISO14001.svg\"\r\nimport mzuriLogo from \"../../../assets/Mzuri_logo (3).svg\"\r\n\r\nconst Footer = () => {\r\n const navigate = useNavigate();\r\n\r\n return(\r\n <div className=\"flex w-full h-full mt-44 bg-navy\">\r\n <div className=\"flex flex-col md:flex-row justify-center md:justify-between w-full px-5 lg:ml-32 lg:mr-32\">\r\n <img\r\n className=\"h-28 w-28 mt-24 md:mb-64 bg-white hover:cursor-pointer\"\r\n src=\"https://www.decora.co.uk/wp-content/themes/decora/assets/logo.png\"\r\n alt=\"\"\r\n onClick={() => navigate('/')}></img>\r\n <div className=\"flex flex-wrap md:space-x-20 justify-start md:justify-end\">\r\n <div className=\"text-white text-sm mt-24 w-1/2 lg:w-auto\">\r\n <h1 className=\"font-bold\">Contact </h1>\r\n <h2>Decora Blind Systems Ltd </h2>\r\n <h2>1 Ferguson Drive</h2>\r\n <h2>Knockmore Hill Industrial Park</h2>\r\n <h2>Lisburn</h2>\r\n <h2>BT28 2FL</h2>\r\n <h1 className=\"mt-6 font-bold\">General Enquiries</h1>\r\n <h2>email: info@decora.co.uk</h2>\r\n <h2>telephone: +44(0)28 9266 3600</h2>\r\n </div>\r\n <div className=\"text-white font-semibold mt-24 text-sm grid-cols-1 w-1/2 lg:w-auto flex flex-col items-end md:items-start\">\r\n <div>\r\n <Link to=\"/account\" onClick={() => window.scrollTo(0, 0)}>\r\n My Account\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"/details\" onClick={() => window.scrollTo(0, 0)}>\r\n My Details\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"/open-orders\" onClick={() => window.scrollTo(0, 0)}>\r\n Open Orders\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"/products/search\" onClick={() => window.scrollTo(0, 0)}>\r\n Order Products\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"/basket\" onClick={() => window.scrollTo(0, 0)}>\r\n View Basket\r\n </Link>\r\n </div>\r\n <div className=\"justify-between mt-4 w-1/2 md:w-full hidden lg:flex\">\r\n <div>\r\n <Link to=\"https://www.linkedin.com/company/decora-blind-systems\">\r\n <img className=\"h-6\" src={linkedinIcon} alt='' />\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"https://www.facebook.com/DecoraBlindSystemsLtd\">\r\n <img className=\"h-6\" src={facebookIcon} alt='' />\r\n </Link>\r\n </div>\r\n <div>\r\n <Link to=\"https://twitter.com/decorablindsni\">\r\n <img className=\"h-6\" src={twitterIcon} alt=''/>\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"text-white text-sm mt-24 mb-16 md:mb-0 w-1/2 lg:w-auto\">\r\n <span>PART OF</span>\r\n <Link to=\"https://mzurigroup.co.uk/\">\r\n <img src={mzuriLogo} alt=\"\"/>\r\n </Link>\r\n <div className=\"flex\">\r\n <Link to=\"https://www.sgs.com/en/certified-clients-and-products\">\r\n <img className=\"mt-10 mr-3\" src={isoIcon} alt=''/>\r\n </Link>\r\n <Link to=\"https://www.sgs.com/en/certified-clients-and-products\">\r\n <img className=\"mt-10 mr-3\" src={isoIcon2} alt=''/>\r\n </Link>\r\n <Link to=\"https://www.ukas.com/\">\r\n <img className=\"mt-10 mr-3\" src={ukasIcon} alt=''/>\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n );\r\n};\r\nexport default Footer;\r\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n };\n}\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const { store } = useReduxContext()\n * return <div>{store.getState()}</div>\n * }\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.');\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return <div>{counter}</div>\n * }\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return <div>{store.getState()}</div>\n * }\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n * <div>\n * <span>{value}</span>\n * <button onClick={increaseCounter}>Increase counter</button>\n * </div>\n * )\n * }\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\n * Infers the type of props that a connector will inject into a component.\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\n * Connects a React component to a Redux store.\n *\n * - Without arguments, just wraps the component, without changing the behavior / props\n *\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\n * is to override ownProps (as stated in the docs), so what remains is everything that's\n * not a state or dispatch prop\n *\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\n * should be valid component props, because it depends on mergeProps implementation.\n * As such, it is the user's responsibility to extend ownProps interface from state or\n * dispatch props or both when applicable\n *\n * @param mapStateToProps A function that extracts values from state\n * @param mapDispatchToProps Setup for dispatching actions\n * @param mergeProps Optional callback to merge state and dispatch props together\n * @param options Options for configuring the connection\n *\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgShoppingCartWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M6.29977 5H21L19 12H7.37671M20 16H8L6 3H3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z\",\n stroke: \"#FFFFFF\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgShoppingCartWhite);\nexport default __webpack_public_path__ + \"static/media/shopping-cart-white.0ccdaeceabf0532b3a1ce49e3cc3d32f.svg\";\nexport { ForwardRef as ReactComponent };","var _circle;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgRedCircleSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 36 36\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\",\n role: \"img\",\n className: \"iconify iconify--twemoji\",\n preserveAspectRatio: \"xMidYMid meet\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#DD2E44\",\n cx: 18,\n cy: 18,\n r: 18\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRedCircleSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/red-circle-svgrepo-com.7dc8018813480465c5a1900c7d31ce84.svg\";\nexport { ForwardRef as ReactComponent };","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator<any>[] | { [key: string]: ActionCreator<any> }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: <A extends Action>(action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: <S>(state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: <S, A extends Action>(state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | (<A extends Action>(action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n <StoreExt>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer<any>\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime<T>(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware<any, any>[]\r\n> extends Array<Middlewares[number]> {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer<any, any>[]\r\n> extends Array<Enhancers[number]> {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable<T>(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions<E = any> {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware<S, AnyAction, E>\r\n : ThunkMiddleware<S, AnyAction>\r\n\r\nexport type CurriedGetDefaultMiddleware<S = any> = <\r\n O extends Partial<GetDefaultMiddlewareOptions> = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware<S> {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial<GetDefaultMiddlewareOptions> = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray<Middleware[]>()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction<P> =\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction<any> | void,\r\n T extends string = string\r\n> = PA extends PrepareAction<infer P>\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters<PA>,\r\n P,\r\n T,\r\n ReturnType<PA> extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType<PA> extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator<P, T extends string, M = never, E = never> {\r\n type: T\r\n match: (action: Action<unknown>) => action is PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator<P, T, M, E> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string>\r\n extends BaseActionCreator<P, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload<T extends string = string>\r\n extends BaseActionCreator<undefined, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction<undefined, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload<P, T extends string = string>\r\n extends BaseActionCreator<P, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator<unknown, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n <PT extends unknown>(payload: PT): PayloadAction<PT, T>\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction<P> | void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload<PA, T>,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload<any, T>,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload<T>,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload<T>,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload<P, T>,\r\n // else\r\n ActionCreatorWithPayload<P, T>\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<P = void, T extends string = string>(\r\n type: T\r\n): PayloadActionCreator<P, T>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction<any>,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action<unknown>): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action<unknown> {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType<T extends string>(\r\n actionCreator: PayloadActionCreator<any, T>\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction<any> | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator<Type extends string> {\r\n (...args: any[]): Action<Type>\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder<State> {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase<ActionCreator extends TypedActionCreator<string>>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer<State, ReturnType<ActionCreator>>\r\n ): ActionReducerMapBuilder<State>\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase<Type extends string, A extends Action<Type>>(\r\n type: Type,\r\n reducer: CaseReducer<State, A>\r\n ): ActionReducerMapBuilder<State>\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\r\n\r\ntype PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\r\ntype RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\r\ntype FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\r\n\r\nconst initialState: Record<string, string> = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher<FulfilledAction>(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher<A>(\r\n matcher: TypeGuard<A> | ((action: any) => boolean),\r\n reducer: CaseReducer<State, A extends AnyAction ? A : A & AnyAction>\r\n ): Omit<ActionReducerMapBuilder<State>, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer<State, AnyAction>): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback<S>(\r\n builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): [\r\n CaseReducers<S, any>,\r\n ActionMatcherDescriptionCollection<S>,\r\n CaseReducer<S, AnyAction> | undefined\r\n] {\r\n const actionsMap: CaseReducers<S, any> = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection<S> = []\r\n let defaultCaseReducer: CaseReducer<S, AnyAction> | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator<any>,\r\n reducer: CaseReducer<S>\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior, \r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (type in actionsMap) {\r\n throw new Error(\r\n 'addCase cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher<A>(\r\n matcher: TypeGuard<A>,\r\n reducer: CaseReducer<S, A extends AnyAction ? A : A & AnyAction>\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer<S, AnyAction>) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator<P> = PayloadActionCreator<P>\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer<State>\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions<CaseReducers, Name>\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers<CaseReducers>\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers<State, CR>\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction<number>('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers<NoInfer<State>, any>\r\n | ((builder: ActionReducerMapBuilder<NoInfer<State>>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\r\n reducer: CaseReducer<State, Action>\r\n prepare: PrepareAction<Action['payload']>\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers<State> = {\r\n [K: string]:\r\n | CaseReducer<State, PayloadAction<any>>\r\n | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers<any>,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType<SliceName, Type>\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType<SliceName, Type>\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator<P, Type>\r\n : ActionCreatorWithoutPayload<Type>\r\n : ActionCreatorWithoutPayload<Type>\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers<S>\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit<A, 'type'>\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers<State>,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions<State, CaseReducers, Name>\r\n): Slice<State, CaseReducers, Name> {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record<string, CaseReducer> = {}\r\n const sliceCaseReducersByType: Record<string, CaseReducer> = {}\r\n const actionCreators: Record<string, Function> = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer<State, any>\r\n let prepareCallback: PrepareAction<any> | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer<any>)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState<State>\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions<T extends keyof any = string> = Record<T, Action>\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher<A extends AnyAction> {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription<S, A extends AnyAction> = {\r\n matcher: ActionMatcher<A>\r\n reducer: CaseReducer<S, NoInfer<A>>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<\r\n ActionMatcherDescription<S, any>\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection<S> = Array<\r\n ActionMatcherDescription<S, any>\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer<S = any, A extends Action = AnyAction> = (\r\n state: Draft<S>,\r\n action: A\r\n) => NoInfer<S> | void | Draft<NoInfer<S>>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers<S, AS extends Actions> = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void\r\n}\r\n\r\nexport type NotFunction<T> = T extends Function ? never : T\r\n\r\nfunction isStateFunction<S>(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction<number>(\"increment\");\r\nconst decrement = createAction<number>(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction<number> {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer<S extends NotFunction<any>>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): ReducerWithInitialState<S>\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction<any>,\r\n CR extends CaseReducers<S, any> = CaseReducers<S, any>\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection<S>,\r\n defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S>\r\n\r\nexport function createReducer<S extends NotFunction<any>>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers<S, any>\r\n | ((builder: ActionReducerMapBuilder<S>) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection<S> = [],\r\n defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S> {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft<S> // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\r\n // than an Immutable<S>, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft<S>) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState<S>\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload<any, unknown>\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = undefined,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue<RejectedValue, RejectedMeta>\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n <FulfilledValue>(value: FulfilledValue) => FulfilledValue,\r\n <FulfilledValue>(\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta<FulfilledValue, FulfilledMeta>\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array<keyof SerializedError> = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue<Payload, RejectedMeta> {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta<Payload, FulfilledMeta> {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState<ThunkApiConfig> = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState<ThunkApiConfig>,\r\n GetExtra<ThunkApiConfig>,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, AnyAction>\r\n\r\ntype GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<\r\n GetState<ThunkApiConfig>,\r\n GetExtra<ThunkApiConfig>,\r\n GetDispatch<ThunkApiConfig>,\r\n GetRejectValue<ThunkApiConfig>,\r\n GetRejectedMeta<ThunkApiConfig>,\r\n GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta<ThunkApiConfig>,\r\n Returned,\r\n FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue<ThunkApiConfig>,\r\n GetRejectedMeta<ThunkApiConfig>\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI<ThunkApiConfig>\r\n) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch<ThunkApiConfig>,\r\n getState: () => GetState<ThunkApiConfig>,\r\n extra: GetExtra<ThunkApiConfig>\r\n) => Promise<\r\n | ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>>\r\n | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise<Returned>\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): MaybePromise<boolean | undefined>\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta<ThunkApiConfig>,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): GetPendingMeta<ThunkApiConfig>\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): GetPendingMeta<ThunkApiConfig>\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta<ThunkApiConfig>?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta<ThunkApiConfig>\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue<ThunkApiConfig>?,\r\n GetRejectedMeta<ThunkApiConfig>?\r\n ],\r\n GetRejectValue<ThunkApiConfig> | undefined,\r\n string,\r\n GetSerializedErrorType<ThunkApiConfig>,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta<ThunkApiConfig>)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\r\n pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>\r\n rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<\r\n NewConfig & Omit<OldConfig, keyof NewConfig>\r\n>\r\n\r\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n <Returned, ThunkArg = void>(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>\r\n ): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n\r\n withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>\r\n ): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\r\n type RejectedValue = GetRejectValue<ThunkApiConfig>\r\n type PendingMeta = GetPendingMeta<ThunkApiConfig>\r\n type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>\r\n type RejectedMeta = GetRejectedMeta<ThunkApiConfig>\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType<ThunkApiConfig>,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType<typeof fulfilled | typeof rejected>\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise<never>((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise<any>, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then<any>(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult<R extends UnwrappableAction>(\r\n action: R\r\n): UnwrappedActionPayload<R> {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks<True, False> = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike<any> {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Middleware, StoreEnhancer } from 'redux'\r\nimport type { EnhancerArray, MiddlewareArray } from './utils'\r\n\r\n/**\r\n * return True if T is `any`, otherwise return False\r\n * taken from https://github.com/joonhocho/tsdef\r\n *\r\n * @internal\r\n */\r\nexport type IsAny<T, True, False = never> =\r\n // test if we are going the left AND right path in the condition\r\n true | false extends (T extends never ? true : false) ? True : False\r\n\r\n/**\r\n * return True if T is `unknown`, otherwise return False\r\n * taken from https://github.com/joonhocho/tsdef\r\n *\r\n * @internal\r\n */\r\nexport type IsUnknown<T, True, False = never> = unknown extends T\r\n ? IsAny<T, False, True>\r\n : False\r\n\r\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P]\r\n ? True\r\n : False\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IsEmptyObj<T, True, False = never> = T extends any\r\n ? keyof T extends never\r\n ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>>\r\n : False\r\n : never\r\n\r\n/**\r\n * returns True if TS version is above 3.5, False if below.\r\n * uses feature detection to detect TS version >= 3.5\r\n * * versions below 3.5 will return `{}` for unresolvable interference\r\n * * versions above will return `unknown`\r\n *\r\n * @internal\r\n */\r\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<\r\n ReturnType<<T>() => T>,\r\n 0,\r\n 1\r\n>]\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<\r\n IsUnknown<T, True, False>,\r\n IsEmptyObj<T, True, IsUnknown<T, True, False>>\r\n>\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection<U> = (\r\n U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n ? I\r\n : never\r\n\r\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\r\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [\r\n infer Head,\r\n ...infer Tail\r\n]\r\n ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]>\r\n : Acc\r\n\r\ntype ExtractDispatchFromMiddlewareTuple<\r\n MiddlewareTuple extends any[],\r\n Acc extends {}\r\n> = MiddlewareTuple extends [infer Head, ...infer Tail]\r\n ? ExtractDispatchFromMiddlewareTuple<\r\n Tail,\r\n Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})\r\n >\r\n : Acc\r\n\r\nexport type ExtractDispatchExtensions<M> = M extends MiddlewareArray<\r\n infer MiddlewareTuple\r\n>\r\n ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}>\r\n : M extends ReadonlyArray<Middleware>\r\n ? ExtractDispatchFromMiddlewareTuple<[...M], {}>\r\n : never\r\n\r\ntype ExtractStoreExtensionsFromEnhancerTuple<\r\n EnhancerTuple extends any[],\r\n Acc extends {}\r\n> = EnhancerTuple extends [infer Head, ...infer Tail]\r\n ? ExtractStoreExtensionsFromEnhancerTuple<\r\n Tail,\r\n Acc & (Head extends StoreEnhancer<infer Ext> ? IsAny<Ext, {}, Ext> : {})\r\n >\r\n : Acc\r\n\r\nexport type ExtractStoreExtensions<E> = E extends EnhancerArray<\r\n infer EnhancerTuple\r\n>\r\n ? ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple, {}>\r\n : E extends ReadonlyArray<StoreEnhancer>\r\n ? UnionToIntersection<\r\n E[number] extends StoreEnhancer<infer Ext>\r\n ? Ext extends {}\r\n ? IsAny<Ext, {}, Ext>\r\n : {}\r\n : {}\r\n >\r\n : never\r\n\r\ntype ExtractStateExtensionsFromEnhancerTuple<\r\n EnhancerTuple extends any[],\r\n Acc extends {}\r\n> = EnhancerTuple extends [infer Head, ...infer Tail]\r\n ? ExtractStateExtensionsFromEnhancerTuple<\r\n Tail,\r\n Acc &\r\n (Head extends StoreEnhancer<any, infer StateExt>\r\n ? IsAny<StateExt, {}, StateExt>\r\n : {})\r\n >\r\n : Acc\r\n\r\nexport type ExtractStateExtensions<E> = E extends EnhancerArray<\r\n infer EnhancerTuple\r\n>\r\n ? ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple, {}>\r\n : E extends ReadonlyArray<StoreEnhancer>\r\n ? UnionToIntersection<\r\n E[number] extends StoreEnhancer<any, infer StateExt>\r\n ? StateExt extends {}\r\n ? IsAny<StateExt, {}, StateExt>\r\n : {}\r\n : {}\r\n >\r\n : never\r\n\r\n/**\r\n * Helper type. Passes T out again, but boxes it in a way that it cannot\r\n * \"widen\" the type by accident if it is a generic that should be inferred\r\n * from elsewhere.\r\n *\r\n * @internal\r\n */\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>\r\n\r\nexport interface TypeGuard<T> {\r\n (value: any): value is T\r\n}\r\n\r\nexport interface HasMatchFunction<T> {\r\n match: TypeGuard<T>\r\n}\r\n\r\nexport const hasMatchFunction = <T>(\r\n v: Matcher<T>\r\n): v is HasMatchFunction<T> => {\r\n return v && typeof (v as HasMatchFunction<T>).match === 'function'\r\n}\r\n\r\n/** @public */\r\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>\r\n\r\n/** @public */\r\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<\r\n infer T\r\n>\r\n ? T\r\n : never\r\n\r\nexport type Id<T> = { [K in keyof T]: T[K] } & {}\r\n","import type {\r\n ActionFromMatcher,\r\n Matcher,\r\n UnionToIntersection,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport type {\r\n AsyncThunk,\r\n AsyncThunkFulfilledActionCreator,\r\n AsyncThunkPendingActionCreator,\r\n AsyncThunkRejectedActionCreator,\r\n} from './createAsyncThunk'\r\n\r\n/** @public */\r\nexport type ActionMatchingAnyOf<Matchers extends [...Matcher<any>[]]> =\r\n ActionFromMatcher<Matchers[number]>\r\n\r\n/** @public */\r\nexport type ActionMatchingAllOf<Matchers extends [...Matcher<any>[]]> =\r\n UnionToIntersection<ActionMatchingAnyOf<Matchers>>\r\n\r\nconst matches = (matcher: Matcher<any>, action: any) => {\r\n if (hasMatchFunction(matcher)) {\r\n return matcher.match(action)\r\n } else {\r\n return matcher(action)\r\n }\r\n}\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action matches any one of the supplied type guards or action\r\n * creators.\r\n *\r\n * @param matchers The type guards or action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAnyOf<Matchers extends [...Matcher<any>[]]>(\r\n ...matchers: Matchers\r\n) {\r\n return (action: any): action is ActionMatchingAnyOf<Matchers> => {\r\n return matchers.some((matcher) => matches(matcher, action))\r\n }\r\n}\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action matches all of the supplied type guards or action\r\n * creators.\r\n *\r\n * @param matchers The type guards or action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAllOf<Matchers extends [...Matcher<any>[]]>(\r\n ...matchers: Matchers\r\n) {\r\n return (action: any): action is ActionMatchingAllOf<Matchers> => {\r\n return matchers.every((matcher) => matches(matcher, action))\r\n }\r\n}\r\n\r\n/**\r\n * @param action A redux action\r\n * @param validStatus An array of valid meta.requestStatus values\r\n *\r\n * @internal\r\n */\r\nexport function hasExpectedRequestMetadata(\r\n action: any,\r\n validStatus: readonly string[]\r\n) {\r\n if (!action || !action.meta) return false\r\n\r\n const hasValidRequestId = typeof action.meta.requestId === 'string'\r\n const hasValidRequestStatus =\r\n validStatus.indexOf(action.meta.requestStatus) > -1\r\n\r\n return hasValidRequestId && hasValidRequestStatus\r\n}\r\n\r\nfunction isAsyncThunkArray(a: [any] | AnyAsyncThunk[]): a is AnyAsyncThunk[] {\r\n return (\r\n typeof a[0] === 'function' &&\r\n 'pending' in a[0] &&\r\n 'fulfilled' in a[0] &&\r\n 'rejected' in a[0]\r\n )\r\n}\r\n\r\nexport type UnknownAsyncThunkPendingAction = ReturnType<\r\n AsyncThunkPendingActionCreator<unknown>\r\n>\r\n\r\nexport type PendingActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n ActionFromMatcher<T['pending']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is pending.\r\n *\r\n * @public\r\n */\r\nexport function isPending(): (\r\n action: any\r\n) => action is UnknownAsyncThunkPendingAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is pending.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isPending<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n ...asyncThunks: AsyncThunks\r\n): (action: any) => action is PendingActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a pending thunk action\r\n * @public\r\n */\r\nexport function isPending(action: any): action is UnknownAsyncThunkPendingAction\r\nexport function isPending<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n if (asyncThunks.length === 0) {\r\n return (action: any) => hasExpectedRequestMetadata(action, ['pending'])\r\n }\r\n\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isPending()(asyncThunks[0])\r\n }\r\n\r\n return (\r\n action: any\r\n ): action is PendingActionFromAsyncThunk<AsyncThunks[number]> => {\r\n // note: this type will be correct because we have at least 1 asyncThunk\r\n const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n (asyncThunk) => asyncThunk.pending\r\n ) as any\r\n\r\n const combinedMatcher = isAnyOf(...matchers)\r\n\r\n return combinedMatcher(action)\r\n }\r\n}\r\n\r\nexport type UnknownAsyncThunkRejectedAction = ReturnType<\r\n AsyncThunkRejectedActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type RejectedActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n ActionFromMatcher<T['rejected']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is rejected.\r\n *\r\n * @public\r\n */\r\nexport function isRejected(): (\r\n action: any\r\n) => action is UnknownAsyncThunkRejectedAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is rejected.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isRejected<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n ...asyncThunks: AsyncThunks\r\n): (action: any) => action is RejectedActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a rejected thunk action\r\n * @public\r\n */\r\nexport function isRejected(\r\n action: any\r\n): action is UnknownAsyncThunkRejectedAction\r\nexport function isRejected<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n if (asyncThunks.length === 0) {\r\n return (action: any) => hasExpectedRequestMetadata(action, ['rejected'])\r\n }\r\n\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejected()(asyncThunks[0])\r\n }\r\n\r\n return (\r\n action: any\r\n ): action is RejectedActionFromAsyncThunk<AsyncThunks[number]> => {\r\n // note: this type will be correct because we have at least 1 asyncThunk\r\n const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n (asyncThunk) => asyncThunk.rejected\r\n ) as any\r\n\r\n const combinedMatcher = isAnyOf(...matchers)\r\n\r\n return combinedMatcher(action)\r\n }\r\n}\r\n\r\nexport type UnknownAsyncThunkRejectedWithValueAction = ReturnType<\r\n AsyncThunkRejectedActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type RejectedWithValueActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n ActionFromMatcher<T['rejected']> &\r\n (T extends AsyncThunk<any, any, { rejectValue: infer RejectedValue }>\r\n ? { payload: RejectedValue }\r\n : unknown)\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is rejected with value.\r\n *\r\n * @public\r\n */\r\nexport function isRejectedWithValue(): (\r\n action: any\r\n) => action is UnknownAsyncThunkRejectedAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is rejected with value.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isRejectedWithValue<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n ...asyncThunks: AsyncThunks\r\n): (\r\n action: any\r\n) => action is RejectedWithValueActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a rejected thunk action with value\r\n * @public\r\n */\r\nexport function isRejectedWithValue(\r\n action: any\r\n): action is UnknownAsyncThunkRejectedAction\r\nexport function isRejectedWithValue<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n const hasFlag = (action: any): action is any => {\r\n return action && action.meta && action.meta.rejectedWithValue\r\n }\r\n\r\n if (asyncThunks.length === 0) {\r\n return (action: any) => {\r\n const combinedMatcher = isAllOf(isRejected(...asyncThunks), hasFlag)\r\n\r\n return combinedMatcher(action)\r\n }\r\n }\r\n\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejectedWithValue()(asyncThunks[0])\r\n }\r\n\r\n return (\r\n action: any\r\n ): action is RejectedActionFromAsyncThunk<AsyncThunks[number]> => {\r\n const combinedMatcher = isAllOf(isRejected(...asyncThunks), hasFlag)\r\n\r\n return combinedMatcher(action)\r\n }\r\n}\r\n\r\nexport type UnknownAsyncThunkFulfilledAction = ReturnType<\r\n AsyncThunkFulfilledActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type FulfilledActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n ActionFromMatcher<T['fulfilled']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is fulfilled.\r\n *\r\n * @public\r\n */\r\nexport function isFulfilled(): (\r\n action: any\r\n) => action is UnknownAsyncThunkFulfilledAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is fulfilled.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isFulfilled<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n ...asyncThunks: AsyncThunks\r\n): (action: any) => action is FulfilledActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a fulfilled thunk action\r\n * @public\r\n */\r\nexport function isFulfilled(\r\n action: any\r\n): action is UnknownAsyncThunkFulfilledAction\r\nexport function isFulfilled<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n if (asyncThunks.length === 0) {\r\n return (action: any) => hasExpectedRequestMetadata(action, ['fulfilled'])\r\n }\r\n\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isFulfilled()(asyncThunks[0])\r\n }\r\n\r\n return (\r\n action: any\r\n ): action is FulfilledActionFromAsyncThunk<AsyncThunks[number]> => {\r\n // note: this type will be correct because we have at least 1 asyncThunk\r\n const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n (asyncThunk) => asyncThunk.fulfilled\r\n ) as any\r\n\r\n const combinedMatcher = isAnyOf(...matchers)\r\n\r\n return combinedMatcher(action)\r\n }\r\n}\r\n\r\nexport type UnknownAsyncThunkAction =\r\n | UnknownAsyncThunkPendingAction\r\n | UnknownAsyncThunkRejectedAction\r\n | UnknownAsyncThunkFulfilledAction\r\n\r\nexport type AnyAsyncThunk = {\r\n pending: { match: (action: any) => action is any }\r\n fulfilled: { match: (action: any) => action is any }\r\n rejected: { match: (action: any) => action is any }\r\n}\r\n\r\nexport type ActionsFromAsyncThunk<T extends AnyAsyncThunk> =\r\n | ActionFromMatcher<T['pending']>\r\n | ActionFromMatcher<T['fulfilled']>\r\n | ActionFromMatcher<T['rejected']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator.\r\n *\r\n * @public\r\n */\r\nexport function isAsyncThunkAction(): (\r\n action: any\r\n) => action is UnknownAsyncThunkAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAsyncThunkAction<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n ...asyncThunks: AsyncThunks\r\n): (action: any) => action is ActionsFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a thunk action\r\n * @public\r\n */\r\nexport function isAsyncThunkAction(\r\n action: any\r\n): action is UnknownAsyncThunkAction\r\nexport function isAsyncThunkAction<\r\n AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n if (asyncThunks.length === 0) {\r\n return (action: any) =>\r\n hasExpectedRequestMetadata(action, ['pending', 'fulfilled', 'rejected'])\r\n }\r\n\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isAsyncThunkAction()(asyncThunks[0])\r\n }\r\n\r\n return (\r\n action: any\r\n ): action is ActionsFromAsyncThunk<AsyncThunks[number]> => {\r\n // note: this type will be correct because we have at least 1 asyncThunk\r\n const matchers: [Matcher<any>, ...Matcher<any>[]] = [] as any\r\n\r\n for (const asyncThunk of asyncThunks) {\r\n matchers.push(\r\n asyncThunk.pending,\r\n asyncThunk.rejected,\r\n asyncThunk.fulfilled\r\n )\r\n }\r\n\r\n const combinedMatcher = isAnyOf(...matchers)\r\n\r\n return combinedMatcher(action)\r\n }\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (parentAbortSignal: AbortSignalWithReason<unknown>) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return <T>(taskExecutor: ForkedTaskExecutor<T>): ForkedTask<T> => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask<T>(\r\n async (): Promise<T> => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n return {\r\n result: createPause<TaskResult<T>>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = <S>(\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch<AnyAction>\r\n >,\r\n signal: AbortSignal\r\n): TakePattern<S> => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async <P extends AnyListenerPredicate<S>>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise<null> | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise<null>((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate<S>, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern<S>\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry<unknown> = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set<AbortController>(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry<unknown, Dispatch<AnyAction>>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map<string, ListenerEntry>\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener<unknown>\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener<unknown>\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch<AnyAction> = ThunkDispatch<S, unknown, AnyAction>,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) {\r\n const listenerMap = new Map<string, ListenerEntry>()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry<unknown, Dispatch<AnyAction>>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate<any>,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause<any>(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware<S, D, ExtraArgument> =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance<S, D, ExtraArgument>\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason<string>).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal<T>(\r\n signal: AbortSignalWithReason<string>,\r\n promise: Promise<T>\r\n): Promise<T> {\r\n let cleanup = noop\r\n return new Promise<T>((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async <T>(\r\n task: () => Promise<T>,\r\n cleanUp?: () => void\r\n): Promise<TaskResult<T>> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = <T>(signal: AbortSignal) => {\r\n return (promise: Promise<T>): Promise<T> => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause<void>(signal)\r\n return (timeoutMs: number): Promise<void> => {\r\n return pause(new Promise<void>((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n <T>() =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { RootState } from '../../../app/store';\r\n\r\nexport type AuthState = {\r\n token: string | null;\r\n refresh: string | null;\r\n user: User | null;\r\n};\r\n\r\nexport type User = {\r\n customerNumber: string;\r\n currencySymbol: string;\r\n isProforma: boolean;\r\n name: string;\r\n address1: string;\r\n city: string;\r\n county: string;\r\n postcode: string;\r\n contact: string;\r\n email: string;\r\n phoneNumber: string;\r\n faxNumber: string;\r\n country: string;\r\n currencyCode: string;\r\n onStop: string;\r\n creditLimit: number;\r\n balance: number;\r\n statements: [\r\n {\r\n name: string;\r\n filename: string;\r\n }\r\n ];\r\n deliveryAddresses: [\r\n {\r\n reference: string;\r\n name: string;\r\n address1: string;\r\n address2: string;\r\n country: string;\r\n city: string;\r\n phoneNumber: string;\r\n contact: string;\r\n county: string;\r\n postcode: string;\r\n }\r\n ];\r\n};\r\n\r\nconst initialState: AuthState = {\r\n token: null,\r\n refresh: null,\r\n user: null\r\n};\r\n\r\nexport const clearTokenAndRedirect = createAsyncThunk(\r\n 'auth/clearTokenAndRedirect',\r\n async (_, { dispatch }) => {\r\n // Dispatch the action to clear the token\r\n dispatch(logout());\r\n }\r\n);\r\n\r\nexport const authSlice = createSlice({\r\n name: 'auth',\r\n initialState,\r\n reducers: {\r\n setCredentials: (state, action) => {\r\n const { token, refresh, user } = action.payload;\r\n if (token && refresh && user) {\r\n state.token = token;\r\n state.refresh = refresh;\r\n state.user = user;\r\n } else {\r\n state.token = null;\r\n state.refresh = null;\r\n state.user = null;\r\n }\r\n },\r\n logout: (state) => {\r\n state.token = null;\r\n state.refresh = null;\r\n state.user = null;\r\n }\r\n }\r\n});\r\n\r\nexport const { setCredentials, logout } = authSlice.actions;\r\n\r\nexport default authSlice.reducer;\r\n\r\nexport const selectToken = (state: RootState) => state.auth.token;\r\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport type { RootState, AppDispatch } from './store';\r\n\r\nexport const useAppDispatch: () => AppDispatch = useDispatch;\r\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","import type { SerializedError } from '@reduxjs/toolkit'\r\nimport type { BaseQueryError } from '../baseQueryTypes'\r\nimport type {\r\n QueryDefinition,\r\n MutationDefinition,\r\n EndpointDefinitions,\r\n BaseEndpointDefinition,\r\n ResultTypeFrom,\r\n QueryArgFrom,\r\n} from '../endpointDefinitions'\r\nimport type { Id, WithRequiredProp } from '../tsHelpers'\r\n\r\nexport type QueryCacheKey = string & { _type: 'queryCacheKey' }\r\nexport type QuerySubstateIdentifier = { queryCacheKey: QueryCacheKey }\r\nexport type MutationSubstateIdentifier =\r\n | {\r\n requestId: string\r\n fixedCacheKey?: string\r\n }\r\n | {\r\n requestId?: string\r\n fixedCacheKey: string\r\n }\r\n\r\nexport type RefetchConfigOptions = {\r\n refetchOnMountOrArgChange: boolean | number\r\n refetchOnReconnect: boolean\r\n refetchOnFocus: boolean\r\n}\r\n\r\n/**\r\n * Strings describing the query state at any given time.\r\n */\r\nexport enum QueryStatus {\r\n uninitialized = 'uninitialized',\r\n pending = 'pending',\r\n fulfilled = 'fulfilled',\r\n rejected = 'rejected',\r\n}\r\n\r\nexport type RequestStatusFlags =\r\n | {\r\n status: QueryStatus.uninitialized\r\n isUninitialized: true\r\n isLoading: false\r\n isSuccess: false\r\n isError: false\r\n }\r\n | {\r\n status: QueryStatus.pending\r\n isUninitialized: false\r\n isLoading: true\r\n isSuccess: false\r\n isError: false\r\n }\r\n | {\r\n status: QueryStatus.fulfilled\r\n isUninitialized: false\r\n isLoading: false\r\n isSuccess: true\r\n isError: false\r\n }\r\n | {\r\n status: QueryStatus.rejected\r\n isUninitialized: false\r\n isLoading: false\r\n isSuccess: false\r\n isError: true\r\n }\r\n\r\nexport function getRequestStatusFlags(status: QueryStatus): RequestStatusFlags {\r\n return {\r\n status,\r\n isUninitialized: status === QueryStatus.uninitialized,\r\n isLoading: status === QueryStatus.pending,\r\n isSuccess: status === QueryStatus.fulfilled,\r\n isError: status === QueryStatus.rejected,\r\n } as any\r\n}\r\n\r\nexport type SubscriptionOptions = {\r\n /**\r\n * How frequently to automatically re-fetch data (in milliseconds). Defaults to `0` (off).\r\n */\r\n pollingInterval?: number\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n *\r\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n */\r\n refetchOnReconnect?: boolean\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n *\r\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n */\r\n refetchOnFocus?: boolean\r\n}\r\nexport type Subscribers = { [requestId: string]: SubscriptionOptions }\r\nexport type QueryKeys<Definitions extends EndpointDefinitions> = {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n any,\r\n any,\r\n any,\r\n any\r\n >\r\n ? K\r\n : never\r\n}[keyof Definitions]\r\nexport type MutationKeys<Definitions extends EndpointDefinitions> = {\r\n [K in keyof Definitions]: Definitions[K] extends MutationDefinition<\r\n any,\r\n any,\r\n any,\r\n any\r\n >\r\n ? K\r\n : never\r\n}[keyof Definitions]\r\n\r\ntype BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {\r\n /**\r\n * The argument originally passed into the hook or `initiate` action call\r\n */\r\n originalArgs: QueryArgFrom<D>\r\n /**\r\n * A unique ID associated with the request\r\n */\r\n requestId: string\r\n /**\r\n * The received data from the query\r\n */\r\n data?: ResultTypeFrom<D>\r\n /**\r\n * The received error if applicable\r\n */\r\n error?:\r\n | SerializedError\r\n | (D extends QueryDefinition<any, infer BaseQuery, any, any>\r\n ? BaseQueryError<BaseQuery>\r\n : never)\r\n /**\r\n * The name of the endpoint associated with the query\r\n */\r\n endpointName: string\r\n /**\r\n * Time that the latest query started\r\n */\r\n startedTimeStamp: number\r\n /**\r\n * Time that the latest query was fulfilled\r\n */\r\n fulfilledTimeStamp?: number\r\n}\r\n\r\nexport type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<\r\n | ({\r\n status: QueryStatus.fulfilled\r\n } & WithRequiredProp<\r\n BaseQuerySubState<D>,\r\n 'data' | 'fulfilledTimeStamp'\r\n > & { error: undefined })\r\n | ({\r\n status: QueryStatus.pending\r\n } & BaseQuerySubState<D>)\r\n | ({\r\n status: QueryStatus.rejected\r\n } & WithRequiredProp<BaseQuerySubState<D>, 'error'>)\r\n | {\r\n status: QueryStatus.uninitialized\r\n originalArgs?: undefined\r\n data?: undefined\r\n error?: undefined\r\n requestId?: undefined\r\n endpointName?: string\r\n startedTimeStamp?: undefined\r\n fulfilledTimeStamp?: undefined\r\n }\r\n>\r\n\r\ntype BaseMutationSubState<D extends BaseEndpointDefinition<any, any, any>> = {\r\n requestId: string\r\n data?: ResultTypeFrom<D>\r\n error?:\r\n | SerializedError\r\n | (D extends MutationDefinition<any, infer BaseQuery, any, any>\r\n ? BaseQueryError<BaseQuery>\r\n : never)\r\n endpointName: string\r\n startedTimeStamp: number\r\n fulfilledTimeStamp?: number\r\n}\r\n\r\nexport type MutationSubState<D extends BaseEndpointDefinition<any, any, any>> =\r\n | (({\r\n status: QueryStatus.fulfilled\r\n } & WithRequiredProp<\r\n BaseMutationSubState<D>,\r\n 'data' | 'fulfilledTimeStamp'\r\n >) & { error: undefined })\r\n | (({\r\n status: QueryStatus.pending\r\n } & BaseMutationSubState<D>) & { data?: undefined })\r\n | ({\r\n status: QueryStatus.rejected\r\n } & WithRequiredProp<BaseMutationSubState<D>, 'error'>)\r\n | {\r\n requestId?: undefined\r\n status: QueryStatus.uninitialized\r\n data?: undefined\r\n error?: undefined\r\n endpointName?: string\r\n startedTimeStamp?: undefined\r\n fulfilledTimeStamp?: undefined\r\n }\r\n\r\nexport type CombinedState<\r\n D extends EndpointDefinitions,\r\n E extends string,\r\n ReducerPath extends string\r\n> = {\r\n queries: QueryState<D>\r\n mutations: MutationState<D>\r\n provided: InvalidationState<E>\r\n subscriptions: SubscriptionState\r\n config: ConfigState<ReducerPath>\r\n}\r\n\r\nexport type InvalidationState<TagTypes extends string> = {\r\n [_ in TagTypes]: {\r\n [id: string]: Array<QueryCacheKey>\r\n [id: number]: Array<QueryCacheKey>\r\n }\r\n}\r\n\r\nexport type QueryState<D extends EndpointDefinitions> = {\r\n [queryCacheKey: string]: QuerySubState<D[string]> | undefined\r\n}\r\n\r\nexport type SubscriptionState = {\r\n [queryCacheKey: string]: Subscribers | undefined\r\n}\r\n\r\nexport type ConfigState<ReducerPath> = RefetchConfigOptions & {\r\n reducerPath: ReducerPath\r\n online: boolean\r\n focused: boolean\r\n middlewareRegistered: boolean | 'conflict'\r\n} & ModifiableConfigState\r\n\r\nexport type ModifiableConfigState = {\r\n keepUnusedDataFor: number\r\n} & RefetchConfigOptions\r\n\r\nexport type MutationState<D extends EndpointDefinitions> = {\r\n [requestId: string]: MutationSubState<D[string]> | undefined\r\n}\r\n\r\nexport type RootState<\r\n Definitions extends EndpointDefinitions,\r\n TagTypes extends string,\r\n ReducerPath extends string\r\n> = {\r\n [P in ReducerPath]: CombinedState<Definitions, TagTypes, P>\r\n}\r\n","import { isAbsoluteUrl } from './isAbsoluteUrl'\r\n\r\nconst withoutTrailingSlash = (url: string) => url.replace(/\\/$/, '')\r\nconst withoutLeadingSlash = (url: string) => url.replace(/^\\//, '')\r\n\r\nexport function joinUrls(\r\n base: string | undefined,\r\n url: string | undefined\r\n): string {\r\n if (!base) {\r\n return url!\r\n }\r\n if (!url) {\r\n return base\r\n }\r\n\r\n if (isAbsoluteUrl(url)) {\r\n return url\r\n }\r\n\r\n const delimiter = base.endsWith('/') || !url.startsWith('?') ? '/' : ''\r\n base = withoutTrailingSlash(base)\r\n url = withoutLeadingSlash(url)\r\n\r\n return `${base}${delimiter}${url}`;\r\n}\r\n","/**\r\n * If either :// or // is present consider it to be an absolute url\r\n *\r\n * @param url string\r\n */\r\n\r\nexport function isAbsoluteUrl(url: string) {\r\n return new RegExp(`(^|:)//`).test(url)\r\n}\r\n","/**\r\n * Alternative to `Array.flat(1)`\r\n * @param arr An array like [1,2,3,[1,2]]\r\n * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\r\n */\r\nexport const flatten = (arr: readonly any[]) => [].concat(...arr)\r\n","import { isPlainObject as _iPO } from '@reduxjs/toolkit'\r\n\r\n// remove type guard\r\nconst isPlainObject: (_: any) => boolean = _iPO\r\n\r\nexport function copyWithStructuralSharing<T>(oldObj: any, newObj: T): T\r\nexport function copyWithStructuralSharing(oldObj: any, newObj: any): any {\r\n if (\r\n oldObj === newObj ||\r\n !(\r\n (isPlainObject(oldObj) && isPlainObject(newObj)) ||\r\n (Array.isArray(oldObj) && Array.isArray(newObj))\r\n )\r\n ) {\r\n return newObj\r\n }\r\n const newKeys = Object.keys(newObj)\r\n const oldKeys = Object.keys(oldObj)\r\n\r\n let isSameObject = newKeys.length === oldKeys.length\r\n const mergeObj: any = Array.isArray(newObj) ? [] : {}\r\n for (const key of newKeys) {\r\n mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key])\r\n if (isSameObject) isSameObject = oldObj[key] === mergeObj[key]\r\n }\r\n return isSameObject ? oldObj : mergeObj\r\n}\r\n","import { joinUrls } from './utils'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\nimport type { BaseQueryApi, BaseQueryFn } from './baseQueryTypes'\r\nimport type { MaybePromise, Override } from './tsHelpers'\r\n\r\nexport type ResponseHandler =\r\n | 'content-type'\r\n | 'json'\r\n | 'text'\r\n | ((response: Response) => Promise<any>)\r\n\r\ntype CustomRequestInit = Override<\r\n RequestInit,\r\n {\r\n headers?:\r\n | Headers\r\n | string[][]\r\n | Record<string, string | undefined>\r\n | undefined\r\n }\r\n>\r\n\r\nexport interface FetchArgs extends CustomRequestInit {\r\n url: string\r\n params?: Record<string, any>\r\n body?: any\r\n responseHandler?: ResponseHandler\r\n validateStatus?: (response: Response, body: any) => boolean\r\n /**\r\n * A number in milliseconds that represents that maximum time a request can take before timing out.\r\n */\r\n timeout?: number\r\n}\r\n\r\n/**\r\n * A mini-wrapper that passes arguments straight through to\r\n * {@link [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)}.\r\n * Avoids storing `fetch` in a closure, in order to permit mocking/monkey-patching.\r\n */\r\nconst defaultFetchFn: typeof fetch = (...args) => fetch(...args)\r\n\r\nconst defaultValidateStatus = (response: Response) =>\r\n response.status >= 200 && response.status <= 299\r\n\r\nconst defaultIsJsonContentType = (headers: Headers) =>\r\n /*applicat*/ /ion\\/(vnd\\.api\\+)?json/.test(headers.get('content-type') || '')\r\n\r\nexport type FetchBaseQueryError =\r\n | {\r\n /**\r\n * * `number`:\r\n * HTTP status code\r\n */\r\n status: number\r\n data: unknown\r\n }\r\n | {\r\n /**\r\n * * `\"FETCH_ERROR\"`:\r\n * An error that occurred during execution of `fetch` or the `fetchFn` callback option\r\n **/\r\n status: 'FETCH_ERROR'\r\n data?: undefined\r\n error: string\r\n }\r\n | {\r\n /**\r\n * * `\"PARSING_ERROR\"`:\r\n * An error happened during parsing.\r\n * Most likely a non-JSON-response was returned with the default `responseHandler` \"JSON\",\r\n * or an error occurred while executing a custom `responseHandler`.\r\n **/\r\n status: 'PARSING_ERROR'\r\n originalStatus: number\r\n data: string\r\n error: string\r\n }\r\n | {\r\n /**\r\n * * `\"TIMEOUT_ERROR\"`:\r\n * Request timed out\r\n **/\r\n status: 'TIMEOUT_ERROR'\r\n data?: undefined\r\n error: string\r\n }\r\n | {\r\n /**\r\n * * `\"CUSTOM_ERROR\"`:\r\n * A custom error type that you can return from your `queryFn` where another error might not make sense.\r\n **/\r\n status: 'CUSTOM_ERROR'\r\n data?: unknown\r\n error: string\r\n }\r\n\r\nfunction stripUndefined(obj: any) {\r\n if (!isPlainObject(obj)) {\r\n return obj\r\n }\r\n const copy: Record<string, any> = { ...obj }\r\n for (const [k, v] of Object.entries(copy)) {\r\n if (v === undefined) delete copy[k]\r\n }\r\n return copy\r\n}\r\n\r\nexport type FetchBaseQueryArgs = {\r\n baseUrl?: string\r\n prepareHeaders?: (\r\n headers: Headers,\r\n api: Pick<\r\n BaseQueryApi,\r\n 'getState' | 'extra' | 'endpoint' | 'type' | 'forced'\r\n >\r\n ) => MaybePromise<Headers | void>\r\n fetchFn?: (\r\n input: RequestInfo,\r\n init?: RequestInit | undefined\r\n ) => Promise<Response>\r\n paramsSerializer?: (params: Record<string, any>) => string\r\n /**\r\n * By default, we only check for 'application/json' and 'application/vnd.api+json' as the content-types for json. If you need to support another format, you can pass\r\n * in a predicate function for your given api to get the same automatic stringifying behavior\r\n * @example\r\n * ```ts\r\n * const isJsonContentType = (headers: Headers) => [\"application/vnd.api+json\", \"application/json\", \"application/vnd.hal+json\"].includes(headers.get(\"content-type\")?.trim());\r\n * ```\r\n */\r\n isJsonContentType?: (headers: Headers) => boolean\r\n /**\r\n * Defaults to `application/json`;\r\n */\r\n jsonContentType?: string\r\n\r\n /**\r\n * Custom replacer function used when calling `JSON.stringify()`;\r\n */\r\n jsonReplacer?: (this: any, key: string, value: any) => any\r\n} & RequestInit &\r\n Pick<FetchArgs, 'responseHandler' | 'validateStatus' | 'timeout'>\r\n\r\nexport type FetchBaseQueryMeta = { request: Request; response?: Response }\r\n\r\n/**\r\n * This is a very small wrapper around fetch that aims to simplify requests.\r\n *\r\n * @example\r\n * ```ts\r\n * const baseQuery = fetchBaseQuery({\r\n * baseUrl: 'https://api.your-really-great-app.com/v1/',\r\n * prepareHeaders: (headers, { getState }) => {\r\n * const token = (getState() as RootState).auth.token;\r\n * // If we have a token set in state, let's assume that we should be passing it.\r\n * if (token) {\r\n * headers.set('authorization', `Bearer ${token}`);\r\n * }\r\n * return headers;\r\n * },\r\n * })\r\n * ```\r\n *\r\n * @param {string} baseUrl\r\n * The base URL for an API service.\r\n * Typically in the format of https://example.com/\r\n *\r\n * @param {(headers: Headers, api: { getState: () => unknown; extra: unknown; endpoint: string; type: 'query' | 'mutation'; forced: boolean; }) => Headers} prepareHeaders\r\n * An optional function that can be used to inject headers on requests.\r\n * Provides a Headers object, as well as most of the `BaseQueryApi` (`dispatch` is not available).\r\n * Useful for setting authentication or headers that need to be set conditionally.\r\n *\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Headers\r\n *\r\n * @param {(input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>} fetchFn\r\n * Accepts a custom `fetch` function if you do not want to use the default on the window.\r\n * Useful in SSR environments if you need to use a library such as `isomorphic-fetch` or `cross-fetch`\r\n *\r\n * @param {(params: Record<string, unknown>) => string} paramsSerializer\r\n * An optional function that can be used to stringify querystring parameters.\r\n *\r\n * @param {(headers: Headers) => boolean} isJsonContentType\r\n * An optional predicate function to determine if `JSON.stringify()` should be called on the `body` arg of `FetchArgs`\r\n *\r\n * @param {string} jsonContentType Used when automatically setting the content-type header for a request with a jsonifiable body that does not have an explicit content-type header. Defaults to `application/json`.\r\n *\r\n * @param {(this: any, key: string, value: any) => any} jsonReplacer Custom replacer function used when calling `JSON.stringify()`.\r\n *\r\n * @param {number} timeout\r\n * A number in milliseconds that represents the maximum time a request can take before timing out.\r\n */\r\nexport function fetchBaseQuery({\r\n baseUrl,\r\n prepareHeaders = (x) => x,\r\n fetchFn = defaultFetchFn,\r\n paramsSerializer,\r\n isJsonContentType = defaultIsJsonContentType,\r\n jsonContentType = 'application/json',\r\n jsonReplacer,\r\n timeout: defaultTimeout,\r\n responseHandler: globalResponseHandler,\r\n validateStatus: globalValidateStatus,\r\n ...baseFetchOptions\r\n}: FetchBaseQueryArgs = {}): BaseQueryFn<\r\n string | FetchArgs,\r\n unknown,\r\n FetchBaseQueryError,\r\n {},\r\n FetchBaseQueryMeta\r\n> {\r\n if (typeof fetch === 'undefined' && fetchFn === defaultFetchFn) {\r\n console.warn(\r\n 'Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.'\r\n )\r\n }\r\n return async (arg, api) => {\r\n const { signal, getState, extra, endpoint, forced, type } = api\r\n let meta: FetchBaseQueryMeta | undefined\r\n let {\r\n url,\r\n headers = new Headers(baseFetchOptions.headers),\r\n params = undefined,\r\n responseHandler = globalResponseHandler ?? ('json' as const),\r\n validateStatus = globalValidateStatus ?? defaultValidateStatus,\r\n timeout = defaultTimeout,\r\n ...rest\r\n } = typeof arg == 'string' ? { url: arg } : arg\r\n let config: RequestInit = {\r\n ...baseFetchOptions,\r\n signal,\r\n ...rest,\r\n }\r\n\r\n headers = new Headers(stripUndefined(headers))\r\n config.headers =\r\n (await prepareHeaders(headers, {\r\n getState,\r\n extra,\r\n endpoint,\r\n forced,\r\n type,\r\n })) || headers\r\n\r\n // Only set the content-type to json if appropriate. Will not be true for FormData, ArrayBuffer, Blob, etc.\r\n const isJsonifiable = (body: any) =>\r\n typeof body === 'object' &&\r\n (isPlainObject(body) ||\r\n Array.isArray(body) ||\r\n typeof body.toJSON === 'function')\r\n\r\n if (!config.headers.has('content-type') && isJsonifiable(config.body)) {\r\n config.headers.set('content-type', jsonContentType)\r\n }\r\n\r\n if (isJsonifiable(config.body) && isJsonContentType(config.headers)) {\r\n config.body = JSON.stringify(config.body, jsonReplacer)\r\n }\r\n\r\n if (params) {\r\n const divider = ~url.indexOf('?') ? '&' : '?'\r\n const query = paramsSerializer\r\n ? paramsSerializer(params)\r\n : new URLSearchParams(stripUndefined(params))\r\n url += divider + query\r\n }\r\n\r\n url = joinUrls(baseUrl, url)\r\n\r\n const request = new Request(url, config)\r\n const requestClone = request.clone()\r\n meta = { request: requestClone }\r\n\r\n let response,\r\n timedOut = false,\r\n timeoutId =\r\n timeout &&\r\n setTimeout(() => {\r\n timedOut = true\r\n api.abort()\r\n }, timeout)\r\n try {\r\n response = await fetchFn(request)\r\n } catch (e) {\r\n return {\r\n error: {\r\n status: timedOut ? 'TIMEOUT_ERROR' : 'FETCH_ERROR',\r\n error: String(e),\r\n },\r\n meta,\r\n }\r\n } finally {\r\n if (timeoutId) clearTimeout(timeoutId)\r\n }\r\n const responseClone = response.clone()\r\n\r\n meta.response = responseClone\r\n\r\n let resultData: any\r\n let responseText: string = ''\r\n try {\r\n let handleResponseError\r\n await Promise.all([\r\n handleResponse(response, responseHandler).then(\r\n (r) => (resultData = r),\r\n (e) => (handleResponseError = e)\r\n ),\r\n // see https://github.com/node-fetch/node-fetch/issues/665#issuecomment-538995182\r\n // we *have* to \"use up\" both streams at the same time or they will stop running in node-fetch scenarios\r\n responseClone.text().then(\r\n (r) => (responseText = r),\r\n () => {}\r\n ),\r\n ])\r\n if (handleResponseError) throw handleResponseError\r\n } catch (e) {\r\n return {\r\n error: {\r\n status: 'PARSING_ERROR',\r\n originalStatus: response.status,\r\n data: responseText,\r\n error: String(e),\r\n },\r\n meta,\r\n }\r\n }\r\n\r\n return validateStatus(response, resultData)\r\n ? {\r\n data: resultData,\r\n meta,\r\n }\r\n : {\r\n error: {\r\n status: response.status,\r\n data: resultData,\r\n },\r\n meta,\r\n }\r\n }\r\n\r\n async function handleResponse(\r\n response: Response,\r\n responseHandler: ResponseHandler\r\n ) {\r\n if (typeof responseHandler === 'function') {\r\n return responseHandler(response)\r\n }\r\n\r\n if (responseHandler === 'content-type') {\r\n responseHandler = isJsonContentType(response.headers) ? 'json' : 'text'\r\n }\r\n\r\n if (responseHandler === 'json') {\r\n const text = await response.text()\r\n return text.length ? JSON.parse(text) : null\r\n }\r\n\r\n return response.text()\r\n }\r\n}\r\n","export class HandledError {\r\n constructor(\r\n public readonly value: any,\r\n public readonly meta: any = undefined\r\n ) {}\r\n}\r\n","import type {\r\n BaseQueryApi,\r\n BaseQueryArg,\r\n BaseQueryEnhancer,\r\n BaseQueryExtraOptions,\r\n BaseQueryFn,\r\n} from './baseQueryTypes'\r\nimport type { FetchBaseQueryError } from './fetchBaseQuery'\r\nimport { HandledError } from './HandledError'\r\n\r\n/**\r\n * Exponential backoff based on the attempt number.\r\n *\r\n * @remarks\r\n * 1. 600ms * random(0.4, 1.4)\r\n * 2. 1200ms * random(0.4, 1.4)\r\n * 3. 2400ms * random(0.4, 1.4)\r\n * 4. 4800ms * random(0.4, 1.4)\r\n * 5. 9600ms * random(0.4, 1.4)\r\n *\r\n * @param attempt - Current attempt\r\n * @param maxRetries - Maximum number of retries\r\n */\r\nasync function defaultBackoff(attempt: number = 0, maxRetries: number = 5) {\r\n const attempts = Math.min(attempt, maxRetries)\r\n\r\n const timeout = ~~((Math.random() + 0.4) * (300 << attempts)) // Force a positive int in the case we make this an option\r\n await new Promise((resolve) =>\r\n setTimeout((res: any) => resolve(res), timeout)\r\n )\r\n}\r\n\r\ntype RetryConditionFunction = (\r\n error: FetchBaseQueryError,\r\n args: BaseQueryArg<BaseQueryFn>,\r\n extraArgs: {\r\n attempt: number\r\n baseQueryApi: BaseQueryApi\r\n extraOptions: BaseQueryExtraOptions<BaseQueryFn> & RetryOptions\r\n }\r\n) => boolean\r\n\r\nexport type RetryOptions = {\r\n /**\r\n * Function used to determine delay between retries\r\n */\r\n backoff?: (attempt: number, maxRetries: number) => Promise<void>\r\n} & (\r\n | {\r\n /**\r\n * How many times the query will be retried (default: 5)\r\n */\r\n maxRetries?: number\r\n retryCondition?: undefined\r\n }\r\n | {\r\n /**\r\n * Callback to determine if a retry should be attempted.\r\n * Return `true` for another retry and `false` to quit trying prematurely.\r\n */\r\n retryCondition?: RetryConditionFunction\r\n maxRetries?: undefined\r\n }\r\n)\r\n\r\nfunction fail(e: any): never {\r\n throw Object.assign(new HandledError({ error: e }), {\r\n throwImmediately: true,\r\n })\r\n}\r\n\r\nconst EMPTY_OPTIONS = {}\r\n\r\nconst retryWithBackoff: BaseQueryEnhancer<\r\n unknown,\r\n RetryOptions,\r\n RetryOptions | void\r\n> = (baseQuery, defaultOptions) => async (args, api, extraOptions) => {\r\n // We need to figure out `maxRetries` before we define `defaultRetryCondition.\r\n // This is probably goofy, but ought to work.\r\n // Put our defaults in one array, filter out undefineds, grab the last value.\r\n const possibleMaxRetries: number[] = [\r\n 5,\r\n ((defaultOptions as any) || EMPTY_OPTIONS).maxRetries,\r\n ((extraOptions as any) || EMPTY_OPTIONS).maxRetries,\r\n ].filter(x => x !== undefined)\r\n const [maxRetries] = possibleMaxRetries.slice(-1)\r\n\r\n const defaultRetryCondition: RetryConditionFunction = (_, __, { attempt }) =>\r\n attempt <= maxRetries\r\n\r\n const options: {\r\n maxRetries: number\r\n backoff: typeof defaultBackoff\r\n retryCondition: typeof defaultRetryCondition\r\n } = {\r\n maxRetries,\r\n backoff: defaultBackoff,\r\n retryCondition: defaultRetryCondition,\r\n ...defaultOptions,\r\n ...extraOptions,\r\n }\r\n let retry = 0\r\n\r\n while (true) {\r\n try {\r\n const result = await baseQuery(args, api, extraOptions)\r\n // baseQueries _should_ return an error property, so we should check for that and throw it to continue retrying\r\n if (result.error) {\r\n throw new HandledError(result)\r\n }\r\n return result\r\n } catch (e: any) {\r\n retry++\r\n\r\n if (e.throwImmediately) {\r\n if (e instanceof HandledError) {\r\n return e.value\r\n }\r\n\r\n // We don't know what this is, so we have to rethrow it\r\n throw e\r\n }\r\n\r\n if (\r\n e instanceof HandledError &&\r\n !options.retryCondition(e.value.error as FetchBaseQueryError, args, {\r\n attempt: retry,\r\n baseQueryApi: api,\r\n extraOptions,\r\n })\r\n ) {\r\n return e.value\r\n }\r\n await options.backoff(retry, options.maxRetries)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A utility that can wrap `baseQuery` in the API definition to provide retries with a basic exponential backoff.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"Retry every request 5 times by default\"\r\n * import { createApi, fetchBaseQuery, retry } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * // maxRetries: 5 is the default, and can be omitted. Shown for documentation purposes.\r\n * const staggeredBaseQuery = retry(fetchBaseQuery({ baseUrl: '/' }), { maxRetries: 5 });\r\n * export const api = createApi({\r\n * baseQuery: staggeredBaseQuery,\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * query: () => ({ url: 'posts' }),\r\n * }),\r\n * getPost: build.query<PostsResponse, string>({\r\n * query: (id) => ({ url: `post/${id}` }),\r\n * extraOptions: { maxRetries: 8 }, // You can override the retry behavior on each endpoint\r\n * }),\r\n * }),\r\n * });\r\n *\r\n * export const { useGetPostsQuery, useGetPostQuery } = api;\r\n * ```\r\n */\r\nexport const retry = /* @__PURE__ */ Object.assign(retryWithBackoff, { fail })\r\n","import type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport type { QuerySubState, RootState } from './core/apiState'\r\nimport type {\r\n BaseQueryExtraOptions,\r\n BaseQueryFn,\r\n BaseQueryResult,\r\n BaseQueryArg,\r\n BaseQueryApi,\r\n QueryReturnValue,\r\n BaseQueryError,\r\n BaseQueryMeta,\r\n} from './baseQueryTypes'\r\nimport type {\r\n HasRequiredProps,\r\n MaybePromise,\r\n OmitFromUnion,\r\n CastAny,\r\n NonUndefined,\r\n} from './tsHelpers'\r\nimport type { NEVER } from './fakeBaseQuery'\r\nimport type { Api } from '@reduxjs/toolkit/query'\r\n\r\nconst resultType = /* @__PURE__ */ Symbol()\r\nconst baseQuery = /* @__PURE__ */ Symbol()\r\n\r\ninterface EndpointDefinitionWithQuery<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n /**\r\n * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"query example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Post'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * // highlight-start\r\n * query: () => 'posts',\r\n * // highlight-end\r\n * }),\r\n * addPost: build.mutation<Post, Partial<Post>>({\r\n * // highlight-start\r\n * query: (body) => ({\r\n * url: `posts`,\r\n * method: 'POST',\r\n * body,\r\n * }),\r\n * // highlight-end\r\n * invalidatesTags: [{ type: 'Post', id: 'LIST' }],\r\n * }),\r\n * })\r\n * })\r\n * ```\r\n */\r\n query(arg: QueryArg): BaseQueryArg<BaseQuery>\r\n queryFn?: never\r\n /**\r\n * A function to manipulate the data returned by a query or mutation.\r\n */\r\n transformResponse?(\r\n baseQueryReturnValue: BaseQueryResult<BaseQuery>,\r\n meta: BaseQueryMeta<BaseQuery>,\r\n arg: QueryArg\r\n ): ResultType | Promise<ResultType>\r\n /**\r\n * A function to manipulate the data returned by a failed query or mutation.\r\n */\r\n transformErrorResponse?(\r\n baseQueryReturnValue: BaseQueryError<BaseQuery>,\r\n meta: BaseQueryMeta<BaseQuery>,\r\n arg: QueryArg\r\n ): unknown\r\n /**\r\n * Defaults to `true`.\r\n *\r\n * Most apps should leave this setting on. The only time it can be a performance issue\r\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n * you're unable to paginate it.\r\n *\r\n * For details of how this works, please see the below. When it is set to `false`,\r\n * every request will cause subscribed components to rerender, even when the data has not changed.\r\n *\r\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n */\r\n structuralSharing?: boolean\r\n}\r\n\r\ninterface EndpointDefinitionWithQueryFn<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n /**\r\n * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Basic queryFn example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * query: () => 'posts',\r\n * }),\r\n * flipCoin: build.query<'heads' | 'tails', void>({\r\n * // highlight-start\r\n * queryFn(arg, queryApi, extraOptions, baseQuery) {\r\n * const randomVal = Math.random()\r\n * if (randomVal < 0.45) {\r\n * return { data: 'heads' }\r\n * }\r\n * if (randomVal < 0.9) {\r\n * return { data: 'tails' }\r\n * }\r\n * return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on it's edge!\" } }\r\n * }\r\n * // highlight-end\r\n * })\r\n * })\r\n * })\r\n * ```\r\n */\r\n queryFn(\r\n arg: QueryArg,\r\n api: BaseQueryApi,\r\n extraOptions: BaseQueryExtraOptions<BaseQuery>,\r\n baseQuery: (arg: Parameters<BaseQuery>[0]) => ReturnType<BaseQuery>\r\n ): MaybePromise<QueryReturnValue<ResultType, BaseQueryError<BaseQuery>>>\r\n query?: never\r\n transformResponse?: never\r\n transformErrorResponse?: never\r\n /**\r\n * Defaults to `true`.\r\n *\r\n * Most apps should leave this setting on. The only time it can be a performance issue\r\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n * you're unable to paginate it.\r\n *\r\n * For details of how this works, please see the below. When it is set to `false`,\r\n * every request will cause subscribed components to rerender, even when the data has not changed.\r\n *\r\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n */\r\n structuralSharing?: boolean\r\n}\r\n\r\nexport interface BaseEndpointTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n QueryArg: QueryArg\r\n BaseQuery: BaseQuery\r\n ResultType: ResultType\r\n}\r\n\r\nexport type BaseEndpointDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> = (\r\n | ([CastAny<BaseQueryResult<BaseQuery>, {}>] extends [NEVER]\r\n ? never\r\n : EndpointDefinitionWithQuery<QueryArg, BaseQuery, ResultType>)\r\n | EndpointDefinitionWithQueryFn<QueryArg, BaseQuery, ResultType>\r\n) & {\r\n /* phantom type */\r\n [resultType]?: ResultType\r\n /* phantom type */\r\n [baseQuery]?: BaseQuery\r\n} & HasRequiredProps<\r\n BaseQueryExtraOptions<BaseQuery>,\r\n { extraOptions: BaseQueryExtraOptions<BaseQuery> },\r\n { extraOptions?: BaseQueryExtraOptions<BaseQuery> }\r\n >\r\n\r\nexport enum DefinitionType {\r\n query = 'query',\r\n mutation = 'mutation',\r\n}\r\n\r\nexport type GetResultDescriptionFn<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n ErrorType,\r\n MetaType\r\n> = (\r\n result: ResultType | undefined,\r\n error: ErrorType | undefined,\r\n arg: QueryArg,\r\n meta: MetaType\r\n) => ReadonlyArray<TagDescription<TagTypes>>\r\n\r\nexport type FullTagDescription<TagType> = {\r\n type: TagType\r\n id?: number | string\r\n}\r\nexport type TagDescription<TagType> = TagType | FullTagDescription<TagType>\r\nexport type ResultDescription<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n ErrorType,\r\n MetaType\r\n> =\r\n | ReadonlyArray<TagDescription<TagTypes>>\r\n | GetResultDescriptionFn<TagTypes, ResultType, QueryArg, ErrorType, MetaType>\r\n\r\n/** @deprecated please use `onQueryStarted` instead */\r\nexport interface QueryApi<ReducerPath extends string, Context extends {}> {\r\n /** @deprecated please use `onQueryStarted` instead */\r\n dispatch: ThunkDispatch<any, any, AnyAction>\r\n /** @deprecated please use `onQueryStarted` instead */\r\n getState(): RootState<any, any, ReducerPath>\r\n /** @deprecated please use `onQueryStarted` instead */\r\n extra: unknown\r\n /** @deprecated please use `onQueryStarted` instead */\r\n requestId: string\r\n /** @deprecated please use `onQueryStarted` instead */\r\n context: Context\r\n}\r\n\r\nexport interface QueryTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n /**\r\n * The endpoint definition type. To be used with some internal generic types.\r\n * @example\r\n * ```ts\r\n * const useMyWrappedHook: UseQuery<typeof api.endpoints.query.Types.QueryDefinition> = ...\r\n * ```\r\n */\r\n QueryDefinition: QueryDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >\r\n TagTypes: TagTypes\r\n ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface QueryExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n> {\r\n type: DefinitionType.query\r\n /**\r\n * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\r\n * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\r\n * 1. `['Post']` - equivalent to `2`\r\n * 2. `[{ type: 'Post' }]` - equivalent to `1`\r\n * 3. `[{ type: 'Post', id: 1 }]`\r\n * 4. `(result, error, arg) => ['Post']` - equivalent to `5`\r\n * 5. `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\r\n * 6. `(result, error, arg) => [{ type: 'Post', id: 1 }]`\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"providesTags example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Posts'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * query: () => 'posts',\r\n * // highlight-start\r\n * providesTags: (result) =>\r\n * result\r\n * ? [\r\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n * { type: 'Posts', id: 'LIST' },\r\n * ]\r\n * : [{ type: 'Posts', id: 'LIST' }],\r\n * // highlight-end\r\n * })\r\n * })\r\n * })\r\n * ```\r\n */\r\n providesTags?: ResultDescription<\r\n TagTypes,\r\n ResultType,\r\n QueryArg,\r\n BaseQueryError<BaseQuery>,\r\n BaseQueryMeta<BaseQuery>\r\n >\r\n /**\r\n * Not to be used. A query should not invalidate tags in the cache.\r\n */\r\n invalidatesTags?: never\r\n\r\n /**\r\n * Can be provided to return a custom cache key value based on the query arguments.\r\n *\r\n * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key. It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\r\n *\r\n * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean. If it returns a string, that value will be used as the cache key directly. If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`. This simplifies the use case of stripping out args you don't want included in the cache key.\r\n *\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * interface MyApiClient {\r\n * fetchPost: (id: string) => Promise<Post>\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * // Example: an endpoint with an API client passed in as an argument,\r\n * // but only the item ID should be used as the cache key\r\n * getPost: build.query<Post, { id: string; client: MyApiClient }>({\r\n * queryFn: async ({ id, client }) => {\r\n * const post = await client.fetchPost(id)\r\n * return { data: post }\r\n * },\r\n * // highlight-start\r\n * serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\r\n * const { id } = queryArgs\r\n * // This can return a string, an object, a number, or a boolean.\r\n * // If it returns an object, number or boolean, that value\r\n * // will be serialized automatically via `defaultSerializeQueryArgs`\r\n * return { id } // omit `client` from the cache key\r\n *\r\n * // Alternately, you can use `defaultSerializeQueryArgs` yourself:\r\n * // return defaultSerializeQueryArgs({\r\n * // endpointName,\r\n * // queryArgs: { id },\r\n * // endpointDefinition\r\n * // })\r\n * // Or create and return a string yourself:\r\n * // return `getPost(${id})`\r\n * },\r\n * // highlight-end\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n serializeQueryArgs?: SerializeQueryArgs<\r\n QueryArg,\r\n string | number | boolean | Record<any, any>\r\n >\r\n\r\n /**\r\n * Can be provided to merge an incoming response value into the current cache data.\r\n * If supplied, no automatic structural sharing will be applied - it's up to\r\n * you to update the cache appropriately.\r\n *\r\n * Since RTKQ normally replaces cache entries with the new response, you will usually\r\n * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\r\n * an existing cache entry so that it can be updated.\r\n *\r\n * Since this is wrapped with Immer, you , you may either mutate the `currentCacheValue` directly,\r\n * or return a new value, but _not_ both at once.\r\n *\r\n * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\r\n * the cache entry will just save the response data directly.\r\n *\r\n * Useful if you don't want a new request to completely override the current cache value,\r\n * maybe because you have manually updated it from another source and don't want those\r\n * updates to get lost.\r\n *\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"merge: pagination\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * listItems: build.query<string[], number>({\r\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n * // Only have one cache entry because the arg always maps to one string\r\n * serializeQueryArgs: ({ endpointName }) => {\r\n * return endpointName\r\n * },\r\n * // Always merge incoming data to the cache entry\r\n * merge: (currentCache, newItems) => {\r\n * currentCache.push(...newItems)\r\n * },\r\n * // Refetch when the page arg changes\r\n * forceRefetch({ currentArg, previousArg }) {\r\n * return currentArg !== previousArg\r\n * },\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n merge?(\r\n currentCacheData: ResultType,\r\n responseData: ResultType,\r\n otherArgs: {\r\n arg: QueryArg\r\n baseQueryMeta: BaseQueryMeta<BaseQuery>\r\n requestId: string\r\n fulfilledTimeStamp: number\r\n }\r\n ): ResultType | void\r\n\r\n /**\r\n * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\r\n * This is primarily useful for \"infinite scroll\" / pagination use cases where\r\n * RTKQ is keeping a single cache entry that is added to over time, in combination\r\n * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\r\n * set to add incoming data to the cache entry each time.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"forceRefresh: pagination\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * listItems: build.query<string[], number>({\r\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n * // Only have one cache entry because the arg always maps to one string\r\n * serializeQueryArgs: ({ endpointName }) => {\r\n * return endpointName\r\n * },\r\n * // Always merge incoming data to the cache entry\r\n * merge: (currentCache, newItems) => {\r\n * currentCache.push(...newItems)\r\n * },\r\n * // Refetch when the page arg changes\r\n * forceRefetch({ currentArg, previousArg }) {\r\n * return currentArg !== previousArg\r\n * },\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n forceRefetch?(params: {\r\n currentArg: QueryArg | undefined\r\n previousArg: QueryArg | undefined\r\n state: RootState<any, any, string>\r\n endpointState?: QuerySubState<any>\r\n }): boolean\r\n\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types?: QueryTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type QueryDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n QueryExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport interface MutationTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n /**\r\n * The endpoint definition type. To be used with some internal generic types.\r\n * @example\r\n * ```ts\r\n * const useMyWrappedHook: UseMutation<typeof api.endpoints.query.Types.MutationDefinition> = ...\r\n * ```\r\n */\r\n MutationDefinition: MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >\r\n TagTypes: TagTypes\r\n ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface MutationExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n> {\r\n type: DefinitionType.mutation\r\n /**\r\n * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\r\n * Expects the same shapes as `providesTags`.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"invalidatesTags example\"\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Posts'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * query: () => 'posts',\r\n * providesTags: (result) =>\r\n * result\r\n * ? [\r\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n * { type: 'Posts', id: 'LIST' },\r\n * ]\r\n * : [{ type: 'Posts', id: 'LIST' }],\r\n * }),\r\n * addPost: build.mutation<Post, Partial<Post>>({\r\n * query(body) {\r\n * return {\r\n * url: `posts`,\r\n * method: 'POST',\r\n * body,\r\n * }\r\n * },\r\n * // highlight-start\r\n * invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\r\n * // highlight-end\r\n * }),\r\n * })\r\n * })\r\n * ```\r\n */\r\n invalidatesTags?: ResultDescription<\r\n TagTypes,\r\n ResultType,\r\n QueryArg,\r\n BaseQueryError<BaseQuery>,\r\n BaseQueryMeta<BaseQuery>\r\n >\r\n /**\r\n * Not to be used. A mutation should not provide tags to the cache.\r\n */\r\n providesTags?: never\r\n\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types?: MutationTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type MutationDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n MutationExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport type EndpointDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> =\r\n | QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n | MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n\r\nexport type EndpointDefinitions = Record<\r\n string,\r\n EndpointDefinition<any, any, any, any>\r\n>\r\n\r\nexport function isQueryDefinition(\r\n e: EndpointDefinition<any, any, any, any>\r\n): e is QueryDefinition<any, any, any, any> {\r\n return e.type === DefinitionType.query\r\n}\r\n\r\nexport function isMutationDefinition(\r\n e: EndpointDefinition<any, any, any, any>\r\n): e is MutationDefinition<any, any, any, any> {\r\n return e.type === DefinitionType.mutation\r\n}\r\n\r\nexport type EndpointBuilder<\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ReducerPath extends string\r\n> = {\r\n /**\r\n * An endpoint definition that retrieves data, and may provide tags to the cache.\r\n *\r\n * @example\r\n * ```js\r\n * // codeblock-meta title=\"Example of all query endpoint options\"\r\n * const api = createApi({\r\n * baseQuery,\r\n * endpoints: (build) => ({\r\n * getPost: build.query({\r\n * query: (id) => ({ url: `post/${id}` }),\r\n * // Pick out data and prevent nested properties in a hook or selector\r\n * transformResponse: (response) => response.data,\r\n * // Pick out error and prevent nested properties in a hook or selector\r\n * transformErrorResponse: (response) => response.error,\r\n * // `result` is the server response\r\n * providesTags: (result, error, id) => [{ type: 'Post', id }],\r\n * // trigger side effects or optimistic updates\r\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\r\n * // handle subscriptions etc\r\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\r\n * }),\r\n * }),\r\n *});\r\n *```\r\n */\r\n query<ResultType, QueryArg>(\r\n definition: OmitFromUnion<\r\n QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>,\r\n 'type'\r\n >\r\n ): QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n /**\r\n * An endpoint definition that alters data on the server or will possibly invalidate the cache.\r\n *\r\n * @example\r\n * ```js\r\n * // codeblock-meta title=\"Example of all mutation endpoint options\"\r\n * const api = createApi({\r\n * baseQuery,\r\n * endpoints: (build) => ({\r\n * updatePost: build.mutation({\r\n * query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\r\n * // Pick out data and prevent nested properties in a hook or selector\r\n * transformResponse: (response) => response.data,\r\n * // Pick out error and prevent nested properties in a hook or selector\r\n * transformErrorResponse: (response) => response.error,\r\n * // `result` is the server response\r\n * invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\r\n * // trigger side effects or optimistic updates\r\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\r\n * // handle subscriptions etc\r\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\r\n * }),\r\n * }),\r\n * });\r\n * ```\r\n */\r\n mutation<ResultType, QueryArg>(\r\n definition: OmitFromUnion<\r\n MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >,\r\n 'type'\r\n >\r\n ): MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type AssertTagTypes = <T extends FullTagDescription<string>>(t: T) => T\r\n\r\nexport function calculateProvidedBy<ResultType, QueryArg, ErrorType, MetaType>(\r\n description:\r\n | ResultDescription<string, ResultType, QueryArg, ErrorType, MetaType>\r\n | undefined,\r\n result: ResultType | undefined,\r\n error: ErrorType | undefined,\r\n queryArg: QueryArg,\r\n meta: MetaType | undefined,\r\n assertTagTypes: AssertTagTypes\r\n): readonly FullTagDescription<string>[] {\r\n if (isFunction(description)) {\r\n return description(\r\n result as ResultType,\r\n error as undefined,\r\n queryArg,\r\n meta as MetaType\r\n )\r\n .map(expandTagDescription)\r\n .map(assertTagTypes)\r\n }\r\n if (Array.isArray(description)) {\r\n return description.map(expandTagDescription).map(assertTagTypes)\r\n }\r\n return []\r\n}\r\n\r\nfunction isFunction<T>(t: T): t is Extract<T, Function> {\r\n return typeof t === 'function'\r\n}\r\n\r\nexport function expandTagDescription(\r\n description: TagDescription<string>\r\n): FullTagDescription<string> {\r\n return typeof description === 'string' ? { type: description } : description\r\n}\r\n\r\nexport type QueryArgFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n D extends BaseEndpointDefinition<infer QA, any, any> ? QA : unknown\r\nexport type ResultTypeFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n D extends BaseEndpointDefinition<any, any, infer RT> ? RT : unknown\r\n\r\nexport type ReducerPathFrom<\r\n D extends EndpointDefinition<any, any, any, any, any>\r\n> = D extends EndpointDefinition<any, any, any, any, infer RP> ? RP : unknown\r\n\r\nexport type TagTypesFrom<D extends EndpointDefinition<any, any, any, any>> =\r\n D extends EndpointDefinition<any, any, infer RP, any> ? RP : unknown\r\n\r\nexport type TagTypesFromApi<T> = T extends Api<any, any, any, infer TagTypes>\r\n ? TagTypes\r\n : never\r\n\r\nexport type DefinitionsFromApi<T> = T extends Api<\r\n any,\r\n infer Definitions,\r\n any,\r\n any\r\n>\r\n ? Definitions\r\n : never\r\n\r\nexport type TransformedResponse<\r\n NewDefinitions extends EndpointDefinitions,\r\n K,\r\n ResultType\r\n> = K extends keyof NewDefinitions\r\n ? NewDefinitions[K]['transformResponse'] extends undefined\r\n ? ResultType\r\n : ReturnType<NonUndefined<NewDefinitions[K]['transformResponse']>>\r\n : ResultType\r\n\r\nexport type OverrideResultType<Definition, NewResultType> =\r\n Definition extends QueryDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n infer TagTypes,\r\n any,\r\n infer ReducerPath\r\n >\r\n ? QueryDefinition<QueryArg, BaseQuery, TagTypes, NewResultType, ReducerPath>\r\n : Definition extends MutationDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n infer TagTypes,\r\n any,\r\n infer ReducerPath\r\n >\r\n ? MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n NewResultType,\r\n ReducerPath\r\n >\r\n : never\r\n\r\nexport type UpdateDefinitions<\r\n Definitions extends EndpointDefinitions,\r\n NewTagTypes extends string,\r\n NewDefinitions extends EndpointDefinitions\r\n> = {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n any,\r\n infer ResultType,\r\n infer ReducerPath\r\n >\r\n ? QueryDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n NewTagTypes,\r\n TransformedResponse<NewDefinitions, K, ResultType>,\r\n ReducerPath\r\n >\r\n : Definitions[K] extends MutationDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n any,\r\n infer ResultType,\r\n infer ReducerPath\r\n >\r\n ? MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n NewTagTypes,\r\n TransformedResponse<NewDefinitions, K, ResultType>,\r\n ReducerPath\r\n >\r\n : never\r\n}\r\n","import type {\r\n ThunkDispatch,\r\n ActionCreatorWithoutPayload, // Workaround for API-Extractor\r\n} from '@reduxjs/toolkit'\r\nimport { createAction } from '@reduxjs/toolkit'\r\n\r\nexport const onFocus = /* @__PURE__ */ createAction('__rtkq/focused')\r\nexport const onFocusLost = /* @__PURE__ */ createAction('__rtkq/unfocused')\r\nexport const onOnline = /* @__PURE__ */ createAction('__rtkq/online')\r\nexport const onOffline = /* @__PURE__ */ createAction('__rtkq/offline')\r\n\r\nlet initialized = false\r\n\r\n/**\r\n * A utility used to enable `refetchOnMount` and `refetchOnReconnect` behaviors.\r\n * It requires the dispatch method from your store.\r\n * Calling `setupListeners(store.dispatch)` will configure listeners with the recommended defaults,\r\n * but you have the option of providing a callback for more granular control.\r\n *\r\n * @example\r\n * ```ts\r\n * setupListeners(store.dispatch)\r\n * ```\r\n *\r\n * @param dispatch - The dispatch method from your store\r\n * @param customHandler - An optional callback for more granular control over listener behavior\r\n * @returns Return value of the handler.\r\n * The default handler returns an `unsubscribe` method that can be called to remove the listeners.\r\n */\r\nexport function setupListeners(\r\n dispatch: ThunkDispatch<any, any, any>,\r\n customHandler?: (\r\n dispatch: ThunkDispatch<any, any, any>,\r\n actions: {\r\n onFocus: typeof onFocus\r\n onFocusLost: typeof onFocusLost\r\n onOnline: typeof onOnline\r\n onOffline: typeof onOffline\r\n }\r\n ) => () => void\r\n) {\r\n function defaultHandler() {\r\n const handleFocus = () => dispatch(onFocus())\r\n const handleFocusLost = () => dispatch(onFocusLost())\r\n const handleOnline = () => dispatch(onOnline())\r\n const handleOffline = () => dispatch(onOffline())\r\n const handleVisibilityChange = () => {\r\n if (window.document.visibilityState === 'visible') {\r\n handleFocus()\r\n } else {\r\n handleFocusLost()\r\n }\r\n }\r\n\r\n if (!initialized) {\r\n if (typeof window !== 'undefined' && window.addEventListener) {\r\n // Handle focus events\r\n window.addEventListener(\r\n 'visibilitychange',\r\n handleVisibilityChange,\r\n false\r\n )\r\n window.addEventListener('focus', handleFocus, false)\r\n\r\n // Handle connection events\r\n window.addEventListener('online', handleOnline, false)\r\n window.addEventListener('offline', handleOffline, false)\r\n initialized = true\r\n }\r\n }\r\n const unsubscribe = () => {\r\n window.removeEventListener('focus', handleFocus)\r\n window.removeEventListener('visibilitychange', handleVisibilityChange)\r\n window.removeEventListener('online', handleOnline)\r\n window.removeEventListener('offline', handleOffline)\r\n initialized = false\r\n }\r\n return unsubscribe\r\n }\r\n\r\n return customHandler\r\n ? customHandler(dispatch, { onFocus, onFocusLost, onOffline, onOnline })\r\n : defaultHandler()\r\n}\r\n","export function isNotNullish<T>(v: T | null | undefined): v is T {\r\n return v != null\r\n}\r\n","import type {\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n ResultTypeFrom,\r\n} from '../endpointDefinitions'\r\nimport { DefinitionType, isQueryDefinition } from '../endpointDefinitions'\r\nimport type { QueryThunk, MutationThunk, QueryThunkArg } from './buildThunks'\r\nimport type { AnyAction, ThunkAction, SerializedError } from '@reduxjs/toolkit'\r\nimport type { SubscriptionOptions, RootState } from './apiState'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { Api, ApiContext } from '../apiTypes'\r\nimport type { ApiEndpointQuery } from './module'\r\nimport type { BaseQueryError, QueryReturnValue } from '../baseQueryTypes'\r\nimport type { QueryResultSelectorResult } from './buildSelectors'\r\nimport type { Dispatch } from 'redux'\r\nimport { isNotNullish } from '../utils/isNotNullish'\r\n\r\ndeclare module './module' {\r\n export interface ApiEndpointQuery<\r\n Definition extends QueryDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n > {\r\n initiate: StartQueryActionCreator<Definition>\r\n }\r\n\r\n export interface ApiEndpointMutation<\r\n Definition extends MutationDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n > {\r\n initiate: StartMutationActionCreator<Definition>\r\n }\r\n}\r\n\r\nexport const forceQueryFnSymbol = Symbol('forceQueryFn')\r\nexport const isUpsertQuery = (arg: QueryThunkArg) =>\r\n typeof arg[forceQueryFnSymbol] === 'function'\r\n\r\nexport interface StartQueryActionCreatorOptions {\r\n subscribe?: boolean\r\n forceRefetch?: boolean | number\r\n subscriptionOptions?: SubscriptionOptions\r\n [forceQueryFnSymbol]?: () => QueryReturnValue\r\n}\r\n\r\ntype StartQueryActionCreator<\r\n D extends QueryDefinition<any, any, any, any, any>\r\n> = (\r\n arg: QueryArgFrom<D>,\r\n options?: StartQueryActionCreatorOptions\r\n) => ThunkAction<QueryActionCreatorResult<D>, any, any, AnyAction>\r\n\r\nexport type QueryActionCreatorResult<\r\n D extends QueryDefinition<any, any, any, any>\r\n> = Promise<QueryResultSelectorResult<D>> & {\r\n arg: QueryArgFrom<D>\r\n requestId: string\r\n subscriptionOptions: SubscriptionOptions | undefined\r\n abort(): void\r\n unwrap(): Promise<ResultTypeFrom<D>>\r\n unsubscribe(): void\r\n refetch(): QueryActionCreatorResult<D>\r\n updateSubscriptionOptions(options: SubscriptionOptions): void\r\n queryCacheKey: string\r\n}\r\n\r\ntype StartMutationActionCreator<\r\n D extends MutationDefinition<any, any, any, any>\r\n> = (\r\n arg: QueryArgFrom<D>,\r\n options?: {\r\n /**\r\n * If this mutation should be tracked in the store.\r\n * If you just want to manually trigger this mutation using `dispatch` and don't care about the\r\n * result, state & potential errors being held in store, you can set this to false.\r\n * (defaults to `true`)\r\n */\r\n track?: boolean\r\n fixedCacheKey?: string\r\n }\r\n) => ThunkAction<MutationActionCreatorResult<D>, any, any, AnyAction>\r\n\r\nexport type MutationActionCreatorResult<\r\n D extends MutationDefinition<any, any, any, any>\r\n> = Promise<\r\n | { data: ResultTypeFrom<D> }\r\n | {\r\n error:\r\n | Exclude<\r\n BaseQueryError<\r\n D extends MutationDefinition<any, infer BaseQuery, any, any>\r\n ? BaseQuery\r\n : never\r\n >,\r\n undefined\r\n >\r\n | SerializedError\r\n }\r\n> & {\r\n /** @internal */\r\n arg: {\r\n /**\r\n * The name of the given endpoint for the mutation\r\n */\r\n endpointName: string\r\n /**\r\n * The original arguments supplied to the mutation call\r\n */\r\n originalArgs: QueryArgFrom<D>\r\n /**\r\n * Whether the mutation is being tracked in the store.\r\n */\r\n track?: boolean\r\n fixedCacheKey?: string\r\n }\r\n /**\r\n * A unique string generated for the request sequence\r\n */\r\n requestId: string\r\n\r\n /**\r\n * A method to cancel the mutation promise. Note that this is not intended to prevent the mutation\r\n * that was fired off from reaching the server, but only to assist in handling the response.\r\n *\r\n * Calling `abort()` prior to the promise resolving will force it to reach the error state with\r\n * the serialized error:\r\n * `{ name: 'AbortError', message: 'Aborted' }`\r\n *\r\n * @example\r\n * ```ts\r\n * const [updateUser] = useUpdateUserMutation();\r\n *\r\n * useEffect(() => {\r\n * const promise = updateUser(id);\r\n * promise\r\n * .unwrap()\r\n * .catch((err) => {\r\n * if (err.name === 'AbortError') return;\r\n * // else handle the unexpected error\r\n * })\r\n *\r\n * return () => {\r\n * promise.abort();\r\n * }\r\n * }, [id, updateUser])\r\n * ```\r\n */\r\n abort(): void\r\n /**\r\n * Unwraps a mutation call to provide the raw response/error.\r\n *\r\n * @remarks\r\n * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap\"\r\n * addPost({ id: 1, name: 'Example' })\r\n * .unwrap()\r\n * .then((payload) => console.log('fulfilled', payload))\r\n * .catch((error) => console.error('rejected', error));\r\n * ```\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap with async await\"\r\n * try {\r\n * const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\r\n * console.log('fulfilled', payload)\r\n * } catch (error) {\r\n * console.error('rejected', error);\r\n * }\r\n * ```\r\n */\r\n unwrap(): Promise<ResultTypeFrom<D>>\r\n /**\r\n * A method to manually unsubscribe from the mutation call, meaning it will be removed from cache after the usual caching grace period.\r\n The value returned by the hook will reset to `isUninitialized` afterwards.\r\n */\r\n reset(): void\r\n /** @deprecated has been renamed to `reset` */\r\n unsubscribe(): void\r\n}\r\n\r\nexport function buildInitiate({\r\n serializeQueryArgs,\r\n queryThunk,\r\n mutationThunk,\r\n api,\r\n context,\r\n}: {\r\n serializeQueryArgs: InternalSerializeQueryArgs\r\n queryThunk: QueryThunk\r\n mutationThunk: MutationThunk\r\n api: Api<any, EndpointDefinitions, any, any>\r\n context: ApiContext<EndpointDefinitions>\r\n}) {\r\n const runningQueries: Map<\r\n Dispatch,\r\n Record<string, QueryActionCreatorResult<any> | undefined>\r\n > = new Map()\r\n const runningMutations: Map<\r\n Dispatch,\r\n Record<string, MutationActionCreatorResult<any> | undefined>\r\n > = new Map()\r\n\r\n const {\r\n unsubscribeQueryResult,\r\n removeMutationResult,\r\n updateSubscriptionOptions,\r\n } = api.internalActions\r\n return {\r\n buildInitiateQuery,\r\n buildInitiateMutation,\r\n getRunningQueryThunk,\r\n getRunningMutationThunk,\r\n getRunningQueriesThunk,\r\n getRunningMutationsThunk,\r\n getRunningOperationPromises,\r\n removalWarning,\r\n }\r\n\r\n /** @deprecated to be removed in 2.0 */\r\n function removalWarning(): never {\r\n throw new Error(\r\n `This method had to be removed due to a conceptual bug in RTK.\r\n Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`\r\n )\r\n }\r\n\r\n /** @deprecated to be removed in 2.0 */\r\n function getRunningOperationPromises() {\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n removalWarning()\r\n } else {\r\n const extract = <T>(\r\n v: Map<Dispatch<AnyAction>, Record<string, T | undefined>>\r\n ) =>\r\n Array.from(v.values()).flatMap((queriesForStore) =>\r\n queriesForStore ? Object.values(queriesForStore) : []\r\n )\r\n return [...extract(runningQueries), ...extract(runningMutations)].filter(\r\n isNotNullish\r\n )\r\n }\r\n }\r\n\r\n function getRunningQueryThunk(endpointName: string, queryArgs: any) {\r\n return (dispatch: Dispatch) => {\r\n const endpointDefinition = context.endpointDefinitions[endpointName]\r\n const queryCacheKey = serializeQueryArgs({\r\n queryArgs,\r\n endpointDefinition,\r\n endpointName,\r\n })\r\n return runningQueries.get(dispatch)?.[queryCacheKey] as\r\n | QueryActionCreatorResult<never>\r\n | undefined\r\n }\r\n }\r\n\r\n function getRunningMutationThunk(\r\n /**\r\n * this is only here to allow TS to infer the result type by input value\r\n * we could use it to validate the result, but it's probably not necessary\r\n */\r\n _endpointName: string,\r\n fixedCacheKeyOrRequestId: string\r\n ) {\r\n return (dispatch: Dispatch) => {\r\n return runningMutations.get(dispatch)?.[fixedCacheKeyOrRequestId] as\r\n | MutationActionCreatorResult<never>\r\n | undefined\r\n }\r\n }\r\n\r\n function getRunningQueriesThunk() {\r\n return (dispatch: Dispatch) =>\r\n Object.values(runningQueries.get(dispatch) || {}).filter(isNotNullish)\r\n }\r\n\r\n function getRunningMutationsThunk() {\r\n return (dispatch: Dispatch) =>\r\n Object.values(runningMutations.get(dispatch) || {}).filter(isNotNullish)\r\n }\r\n\r\n function middlewareWarning(dispatch: Dispatch) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if ((middlewareWarning as any).triggered) return\r\n const registered:\r\n | ReturnType<typeof api.internalActions.internal_probeSubscription>\r\n | boolean = dispatch(\r\n api.internalActions.internal_probeSubscription({\r\n queryCacheKey: 'DOES_NOT_EXIST',\r\n requestId: 'DUMMY_REQUEST_ID',\r\n })\r\n )\r\n\r\n ;(middlewareWarning as any).triggered = true\r\n\r\n // The RTKQ middleware _should_ always return a boolean for `probeSubscription`\r\n if (typeof registered !== 'boolean') {\r\n // Otherwise, must not have been added\r\n throw new Error(\r\n `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\r\nYou must add the middleware for RTK-Query to function correctly!`\r\n )\r\n }\r\n }\r\n }\r\n\r\n function buildInitiateQuery(\r\n endpointName: string,\r\n endpointDefinition: QueryDefinition<any, any, any, any>\r\n ) {\r\n const queryAction: StartQueryActionCreator<any> =\r\n (\r\n arg,\r\n {\r\n subscribe = true,\r\n forceRefetch,\r\n subscriptionOptions,\r\n [forceQueryFnSymbol]: forceQueryFn,\r\n } = {}\r\n ) =>\r\n (dispatch, getState) => {\r\n const queryCacheKey = serializeQueryArgs({\r\n queryArgs: arg,\r\n endpointDefinition,\r\n endpointName,\r\n })\r\n\r\n const thunk = queryThunk({\r\n type: 'query',\r\n subscribe,\r\n forceRefetch: forceRefetch,\r\n subscriptionOptions,\r\n endpointName,\r\n originalArgs: arg,\r\n queryCacheKey,\r\n [forceQueryFnSymbol]: forceQueryFn,\r\n })\r\n const selector = (\r\n api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n ).select(arg)\r\n\r\n const thunkResult = dispatch(thunk)\r\n const stateAfter = selector(getState())\r\n\r\n middlewareWarning(dispatch)\r\n\r\n const { requestId, abort } = thunkResult\r\n\r\n const skippedSynchronously = stateAfter.requestId !== requestId\r\n\r\n const runningQuery = runningQueries.get(dispatch)?.[queryCacheKey]\r\n const selectFromState = () => selector(getState())\r\n\r\n const statePromise: QueryActionCreatorResult<any> = Object.assign(\r\n forceQueryFn\r\n ? // a query has been forced (upsertQueryData)\r\n // -> we want to resolve it once data has been written with the data that will be written\r\n thunkResult.then(selectFromState)\r\n : skippedSynchronously && !runningQuery\r\n ? // a query has been skipped due to a condition and we do not have any currently running query\r\n // -> we want to resolve it immediately with the current data\r\n Promise.resolve(stateAfter)\r\n : // query just started or one is already in flight\r\n // -> wait for the running query, then resolve with data from after that\r\n Promise.all([runningQuery, thunkResult]).then(selectFromState),\r\n {\r\n arg,\r\n requestId,\r\n subscriptionOptions,\r\n queryCacheKey,\r\n abort,\r\n async unwrap() {\r\n const result = await statePromise\r\n\r\n if (result.isError) {\r\n throw result.error\r\n }\r\n\r\n return result.data\r\n },\r\n refetch: () =>\r\n dispatch(\r\n queryAction(arg, { subscribe: false, forceRefetch: true })\r\n ),\r\n unsubscribe() {\r\n if (subscribe)\r\n dispatch(\r\n unsubscribeQueryResult({\r\n queryCacheKey,\r\n requestId,\r\n })\r\n )\r\n },\r\n updateSubscriptionOptions(options: SubscriptionOptions) {\r\n statePromise.subscriptionOptions = options\r\n dispatch(\r\n updateSubscriptionOptions({\r\n endpointName,\r\n requestId,\r\n queryCacheKey,\r\n options,\r\n })\r\n )\r\n },\r\n }\r\n )\r\n\r\n if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\r\n const running = runningQueries.get(dispatch) || {}\r\n running[queryCacheKey] = statePromise\r\n runningQueries.set(dispatch, running)\r\n\r\n statePromise.then(() => {\r\n delete running[queryCacheKey]\r\n if (!Object.keys(running).length) {\r\n runningQueries.delete(dispatch)\r\n }\r\n })\r\n }\r\n\r\n return statePromise\r\n }\r\n return queryAction\r\n }\r\n\r\n function buildInitiateMutation(\r\n endpointName: string\r\n ): StartMutationActionCreator<any> {\r\n return (arg, { track = true, fixedCacheKey } = {}) =>\r\n (dispatch, getState) => {\r\n const thunk = mutationThunk({\r\n type: 'mutation',\r\n endpointName,\r\n originalArgs: arg,\r\n track,\r\n fixedCacheKey,\r\n })\r\n const thunkResult = dispatch(thunk)\r\n middlewareWarning(dispatch)\r\n const { requestId, abort, unwrap } = thunkResult\r\n const returnValuePromise = thunkResult\r\n .unwrap()\r\n .then((data) => ({ data }))\r\n .catch((error) => ({ error }))\r\n\r\n const reset = () => {\r\n dispatch(removeMutationResult({ requestId, fixedCacheKey }))\r\n }\r\n\r\n const ret = Object.assign(returnValuePromise, {\r\n arg: thunkResult.arg,\r\n requestId,\r\n abort,\r\n unwrap,\r\n unsubscribe: reset,\r\n reset,\r\n })\r\n\r\n const running = runningMutations.get(dispatch) || {}\r\n runningMutations.set(dispatch, running)\r\n running[requestId] = ret\r\n ret.then(() => {\r\n delete running[requestId]\r\n if (!Object.keys(running).length) {\r\n runningMutations.delete(dispatch)\r\n }\r\n })\r\n if (fixedCacheKey) {\r\n running[fixedCacheKey] = ret\r\n ret.then(() => {\r\n if (running[fixedCacheKey] === ret) {\r\n delete running[fixedCacheKey]\r\n if (!Object.keys(running).length) {\r\n runningMutations.delete(dispatch)\r\n }\r\n }\r\n })\r\n }\r\n\r\n return ret\r\n }\r\n }\r\n}\r\n","import type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { Api, ApiContext } from '../apiTypes'\r\nimport type {\r\n BaseQueryFn,\r\n BaseQueryError,\r\n QueryReturnValue,\r\n} from '../baseQueryTypes'\r\nimport type { RootState, QueryKeys, QuerySubstateIdentifier } from './apiState'\r\nimport { QueryStatus } from './apiState'\r\nimport type {\r\n StartQueryActionCreatorOptions,\r\n QueryActionCreatorResult,\r\n} from './buildInitiate'\r\nimport { forceQueryFnSymbol, isUpsertQuery } from './buildInitiate'\r\nimport type {\r\n AssertTagTypes,\r\n EndpointDefinition,\r\n EndpointDefinitions,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n QueryDefinition,\r\n ResultTypeFrom,\r\n} from '../endpointDefinitions'\r\nimport { isQueryDefinition } from '../endpointDefinitions'\r\nimport { calculateProvidedBy } from '../endpointDefinitions'\r\nimport type { AsyncThunkPayloadCreator, Draft } from '@reduxjs/toolkit'\r\nimport {\r\n isAllOf,\r\n isFulfilled,\r\n isPending,\r\n isRejected,\r\n isRejectedWithValue,\r\n} from '@reduxjs/toolkit'\r\nimport type { Patch } from 'immer'\r\nimport { isDraftable, produceWithPatches } from 'immer'\r\nimport type {\r\n AnyAction,\r\n ThunkAction,\r\n ThunkDispatch,\r\n AsyncThunk,\r\n} from '@reduxjs/toolkit'\r\nimport { createAsyncThunk, SHOULD_AUTOBATCH } from '@reduxjs/toolkit'\r\n\r\nimport { HandledError } from '../HandledError'\r\n\r\nimport type { ApiEndpointQuery, PrefetchOptions } from './module'\r\nimport type { UnwrapPromise } from '../tsHelpers'\r\n\r\ndeclare module './module' {\r\n export interface ApiEndpointQuery<\r\n Definition extends QueryDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n > extends Matchers<QueryThunk, Definition> {}\r\n\r\n export interface ApiEndpointMutation<\r\n Definition extends MutationDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n > extends Matchers<MutationThunk, Definition> {}\r\n}\r\n\r\ntype EndpointThunk<\r\n Thunk extends QueryThunk | MutationThunk,\r\n Definition extends EndpointDefinition<any, any, any, any>\r\n> = Definition extends EndpointDefinition<\r\n infer QueryArg,\r\n infer BaseQueryFn,\r\n any,\r\n infer ResultType\r\n>\r\n ? Thunk extends AsyncThunk<unknown, infer ATArg, infer ATConfig>\r\n ? AsyncThunk<\r\n ResultType,\r\n ATArg & { originalArgs: QueryArg },\r\n ATConfig & { rejectValue: BaseQueryError<BaseQueryFn> }\r\n >\r\n : never\r\n : never\r\n\r\nexport type PendingAction<\r\n Thunk extends QueryThunk | MutationThunk,\r\n Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['pending']>\r\n\r\nexport type FulfilledAction<\r\n Thunk extends QueryThunk | MutationThunk,\r\n Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['fulfilled']>\r\n\r\nexport type RejectedAction<\r\n Thunk extends QueryThunk | MutationThunk,\r\n Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['rejected']>\r\n\r\nexport type Matcher<M> = (value: any) => value is M\r\n\r\nexport interface Matchers<\r\n Thunk extends QueryThunk | MutationThunk,\r\n Definition extends EndpointDefinition<any, any, any, any>\r\n> {\r\n matchPending: Matcher<PendingAction<Thunk, Definition>>\r\n matchFulfilled: Matcher<FulfilledAction<Thunk, Definition>>\r\n matchRejected: Matcher<RejectedAction<Thunk, Definition>>\r\n}\r\n\r\nexport interface QueryThunkArg\r\n extends QuerySubstateIdentifier,\r\n StartQueryActionCreatorOptions {\r\n type: 'query'\r\n originalArgs: unknown\r\n endpointName: string\r\n}\r\n\r\nexport interface MutationThunkArg {\r\n type: 'mutation'\r\n originalArgs: unknown\r\n endpointName: string\r\n track?: boolean\r\n fixedCacheKey?: string\r\n}\r\n\r\nexport type ThunkResult = unknown\r\n\r\nexport type ThunkApiMetaConfig = {\r\n pendingMeta: {\r\n startedTimeStamp: number\r\n [SHOULD_AUTOBATCH]: true\r\n }\r\n fulfilledMeta: {\r\n fulfilledTimeStamp: number\r\n baseQueryMeta: unknown\r\n [SHOULD_AUTOBATCH]: true\r\n }\r\n rejectedMeta: {\r\n baseQueryMeta: unknown\r\n [SHOULD_AUTOBATCH]: true\r\n }\r\n}\r\nexport type QueryThunk = AsyncThunk<\r\n ThunkResult,\r\n QueryThunkArg,\r\n ThunkApiMetaConfig\r\n>\r\nexport type MutationThunk = AsyncThunk<\r\n ThunkResult,\r\n MutationThunkArg,\r\n ThunkApiMetaConfig\r\n>\r\n\r\nfunction defaultTransformResponse(baseQueryReturnValue: unknown) {\r\n return baseQueryReturnValue\r\n}\r\n\r\nexport type MaybeDrafted<T> = T | Draft<T>\r\nexport type Recipe<T> = (data: MaybeDrafted<T>) => void | MaybeDrafted<T>\r\nexport type UpsertRecipe<T> = (\r\n data: MaybeDrafted<T> | undefined\r\n) => void | MaybeDrafted<T>\r\n\r\nexport type PatchQueryDataThunk<\r\n Definitions extends EndpointDefinitions,\r\n PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n args: QueryArgFrom<Definitions[EndpointName]>,\r\n patches: readonly Patch[]\r\n) => ThunkAction<void, PartialState, any, AnyAction>\r\n\r\nexport type UpdateQueryDataThunk<\r\n Definitions extends EndpointDefinitions,\r\n PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n args: QueryArgFrom<Definitions[EndpointName]>,\r\n updateRecipe: Recipe<ResultTypeFrom<Definitions[EndpointName]>>\r\n) => ThunkAction<PatchCollection, PartialState, any, AnyAction>\r\n\r\nexport type UpsertQueryDataThunk<\r\n Definitions extends EndpointDefinitions,\r\n PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n args: QueryArgFrom<Definitions[EndpointName]>,\r\n value: ResultTypeFrom<Definitions[EndpointName]>\r\n) => ThunkAction<\r\n QueryActionCreatorResult<\r\n Definitions[EndpointName] extends QueryDefinition<any, any, any, any>\r\n ? Definitions[EndpointName]\r\n : never\r\n >,\r\n PartialState,\r\n any,\r\n AnyAction\r\n>\r\n\r\n/**\r\n * An object returned from dispatching a `api.util.updateQueryData` call.\r\n */\r\nexport type PatchCollection = {\r\n /**\r\n * An `immer` Patch describing the cache update.\r\n */\r\n patches: Patch[]\r\n /**\r\n * An `immer` Patch to revert the cache update.\r\n */\r\n inversePatches: Patch[]\r\n /**\r\n * A function that will undo the cache update.\r\n */\r\n undo: () => void\r\n}\r\n\r\nexport function buildThunks<\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string,\r\n Definitions extends EndpointDefinitions\r\n>({\r\n reducerPath,\r\n baseQuery,\r\n context: { endpointDefinitions },\r\n serializeQueryArgs,\r\n api,\r\n}: {\r\n baseQuery: BaseQuery\r\n reducerPath: ReducerPath\r\n context: ApiContext<Definitions>\r\n serializeQueryArgs: InternalSerializeQueryArgs\r\n api: Api<BaseQuery, Definitions, ReducerPath, any>\r\n}) {\r\n type State = RootState<any, string, ReducerPath>\r\n\r\n const patchQueryData: PatchQueryDataThunk<EndpointDefinitions, State> =\r\n (endpointName, args, patches) => (dispatch) => {\r\n const endpointDefinition = endpointDefinitions[endpointName]\r\n dispatch(\r\n api.internalActions.queryResultPatched({\r\n queryCacheKey: serializeQueryArgs({\r\n queryArgs: args,\r\n endpointDefinition,\r\n endpointName,\r\n }),\r\n patches,\r\n })\r\n )\r\n }\r\n\r\n const updateQueryData: UpdateQueryDataThunk<EndpointDefinitions, State> =\r\n (endpointName, args, updateRecipe) => (dispatch, getState) => {\r\n const currentState = (\r\n api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n ).select(args)(getState())\r\n let ret: PatchCollection = {\r\n patches: [],\r\n inversePatches: [],\r\n undo: () =>\r\n dispatch(\r\n api.util.patchQueryData(endpointName, args, ret.inversePatches)\r\n ),\r\n }\r\n if (currentState.status === QueryStatus.uninitialized) {\r\n return ret\r\n }\r\n if ('data' in currentState) {\r\n if (isDraftable(currentState.data)) {\r\n const [, patches, inversePatches] = produceWithPatches(\r\n currentState.data,\r\n updateRecipe\r\n )\r\n ret.patches.push(...patches)\r\n ret.inversePatches.push(...inversePatches)\r\n } else {\r\n const value = updateRecipe(currentState.data)\r\n ret.patches.push({ op: 'replace', path: [], value })\r\n ret.inversePatches.push({\r\n op: 'replace',\r\n path: [],\r\n value: currentState.data,\r\n })\r\n }\r\n }\r\n\r\n dispatch(api.util.patchQueryData(endpointName, args, ret.patches))\r\n\r\n return ret\r\n }\r\n\r\n const upsertQueryData: UpsertQueryDataThunk<Definitions, State> =\r\n (endpointName, args, value) => (dispatch) => {\r\n return dispatch(\r\n (\r\n api.endpoints[endpointName] as ApiEndpointQuery<\r\n QueryDefinition<any, any, any, any, any>,\r\n Definitions\r\n >\r\n ).initiate(args, {\r\n subscribe: false,\r\n forceRefetch: true,\r\n [forceQueryFnSymbol]: () => ({\r\n data: value,\r\n }),\r\n })\r\n )\r\n }\r\n\r\n const executeEndpoint: AsyncThunkPayloadCreator<\r\n ThunkResult,\r\n QueryThunkArg | MutationThunkArg,\r\n ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n > = async (\r\n arg,\r\n {\r\n signal,\r\n abort,\r\n rejectWithValue,\r\n fulfillWithValue,\r\n dispatch,\r\n getState,\r\n extra,\r\n }\r\n ) => {\r\n const endpointDefinition = endpointDefinitions[arg.endpointName]\r\n\r\n try {\r\n let transformResponse: (\r\n baseQueryReturnValue: any,\r\n meta: any,\r\n arg: any\r\n ) => any = defaultTransformResponse\r\n let result: QueryReturnValue\r\n const baseQueryApi = {\r\n signal,\r\n abort,\r\n dispatch,\r\n getState,\r\n extra,\r\n endpoint: arg.endpointName,\r\n type: arg.type,\r\n forced:\r\n arg.type === 'query' ? isForcedQuery(arg, getState()) : undefined,\r\n }\r\n\r\n const forceQueryFn =\r\n arg.type === 'query' ? arg[forceQueryFnSymbol] : undefined\r\n if (forceQueryFn) {\r\n result = forceQueryFn()\r\n } else if (endpointDefinition.query) {\r\n result = await baseQuery(\r\n endpointDefinition.query(arg.originalArgs),\r\n baseQueryApi,\r\n endpointDefinition.extraOptions as any\r\n )\r\n\r\n if (endpointDefinition.transformResponse) {\r\n transformResponse = endpointDefinition.transformResponse\r\n }\r\n } else {\r\n result = await endpointDefinition.queryFn(\r\n arg.originalArgs,\r\n baseQueryApi,\r\n endpointDefinition.extraOptions as any,\r\n (arg) =>\r\n baseQuery(arg, baseQueryApi, endpointDefinition.extraOptions as any)\r\n )\r\n }\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n const what = endpointDefinition.query ? '`baseQuery`' : '`queryFn`'\r\n let err: undefined | string\r\n if (!result) {\r\n err = `${what} did not return anything.`\r\n } else if (typeof result !== 'object') {\r\n err = `${what} did not return an object.`\r\n } else if (result.error && result.data) {\r\n err = `${what} returned an object containing both \\`error\\` and \\`result\\`.`\r\n } else if (result.error === undefined && result.data === undefined) {\r\n err = `${what} returned an object containing neither a valid \\`error\\` and \\`result\\`. At least one of them should not be \\`undefined\\``\r\n } else {\r\n for (const key of Object.keys(result)) {\r\n if (key !== 'error' && key !== 'data' && key !== 'meta') {\r\n err = `The object returned by ${what} has the unknown property ${key}.`\r\n break\r\n }\r\n }\r\n }\r\n if (err) {\r\n console.error(\r\n `Error encountered handling the endpoint ${arg.endpointName}.\r\n ${err}\r\n It needs to return an object with either the shape \\`{ data: <value> }\\` or \\`{ error: <value> }\\` that may contain an optional \\`meta\\` property.\r\n Object returned was:`,\r\n result\r\n )\r\n }\r\n }\r\n\r\n if (result.error) throw new HandledError(result.error, result.meta)\r\n\r\n return fulfillWithValue(\r\n await transformResponse(result.data, result.meta, arg.originalArgs),\r\n {\r\n fulfilledTimeStamp: Date.now(),\r\n baseQueryMeta: result.meta,\r\n [SHOULD_AUTOBATCH]: true,\r\n }\r\n )\r\n } catch (error) {\r\n let catchedError = error\r\n if (catchedError instanceof HandledError) {\r\n let transformErrorResponse: (\r\n baseQueryReturnValue: any,\r\n meta: any,\r\n arg: any\r\n ) => any = defaultTransformResponse\r\n\r\n if (\r\n endpointDefinition.query &&\r\n endpointDefinition.transformErrorResponse\r\n ) {\r\n transformErrorResponse = endpointDefinition.transformErrorResponse\r\n }\r\n try {\r\n return rejectWithValue(\r\n await transformErrorResponse(\r\n catchedError.value,\r\n catchedError.meta,\r\n arg.originalArgs\r\n ),\r\n { baseQueryMeta: catchedError.meta, [SHOULD_AUTOBATCH]: true }\r\n )\r\n } catch (e) {\r\n catchedError = e\r\n }\r\n }\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV !== 'production'\r\n ) {\r\n console.error(\r\n `An unhandled error occurred processing a request for the endpoint \"${arg.endpointName}\".\r\nIn the case of an unhandled error, no tags will be \"provided\" or \"invalidated\".`,\r\n catchedError\r\n )\r\n } else {\r\n console.error(catchedError)\r\n }\r\n throw catchedError\r\n }\r\n }\r\n\r\n function isForcedQuery(\r\n arg: QueryThunkArg,\r\n state: RootState<any, string, ReducerPath>\r\n ) {\r\n const requestState = state[reducerPath]?.queries?.[arg.queryCacheKey]\r\n const baseFetchOnMountOrArgChange =\r\n state[reducerPath]?.config.refetchOnMountOrArgChange\r\n\r\n const fulfilledVal = requestState?.fulfilledTimeStamp\r\n const refetchVal =\r\n arg.forceRefetch ?? (arg.subscribe && baseFetchOnMountOrArgChange)\r\n\r\n if (refetchVal) {\r\n // Return if its true or compare the dates because it must be a number\r\n return (\r\n refetchVal === true ||\r\n (Number(new Date()) - Number(fulfilledVal)) / 1000 >= refetchVal\r\n )\r\n }\r\n return false\r\n }\r\n\r\n const queryThunk = createAsyncThunk<\r\n ThunkResult,\r\n QueryThunkArg,\r\n ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n >(`${reducerPath}/executeQuery`, executeEndpoint, {\r\n getPendingMeta() {\r\n return { startedTimeStamp: Date.now(), [SHOULD_AUTOBATCH]: true }\r\n },\r\n condition(queryThunkArgs, { getState }) {\r\n const state = getState()\r\n\r\n const requestState =\r\n state[reducerPath]?.queries?.[queryThunkArgs.queryCacheKey]\r\n const fulfilledVal = requestState?.fulfilledTimeStamp\r\n const currentArg = queryThunkArgs.originalArgs\r\n const previousArg = requestState?.originalArgs\r\n const endpointDefinition =\r\n endpointDefinitions[queryThunkArgs.endpointName]\r\n\r\n // Order of these checks matters.\r\n // In order for `upsertQueryData` to successfully run while an existing request is in flight,\r\n /// we have to check for that first, otherwise `queryThunk` will bail out and not run at all.\r\n if (isUpsertQuery(queryThunkArgs)) {\r\n return true\r\n }\r\n\r\n // Don't retry a request that's currently in-flight\r\n if (requestState?.status === 'pending') {\r\n return false\r\n }\r\n\r\n // if this is forced, continue\r\n if (isForcedQuery(queryThunkArgs, state)) {\r\n return true\r\n }\r\n\r\n if (\r\n isQueryDefinition(endpointDefinition) &&\r\n endpointDefinition?.forceRefetch?.({\r\n currentArg,\r\n previousArg,\r\n endpointState: requestState,\r\n state,\r\n })\r\n ) {\r\n return true\r\n }\r\n\r\n // Pull from the cache unless we explicitly force refetch or qualify based on time\r\n if (fulfilledVal) {\r\n // Value is cached and we didn't specify to refresh, skip it.\r\n return false\r\n }\r\n\r\n return true\r\n },\r\n dispatchConditionRejection: true,\r\n })\r\n\r\n const mutationThunk = createAsyncThunk<\r\n ThunkResult,\r\n MutationThunkArg,\r\n ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n >(`${reducerPath}/executeMutation`, executeEndpoint, {\r\n getPendingMeta() {\r\n return { startedTimeStamp: Date.now(), [SHOULD_AUTOBATCH]: true }\r\n },\r\n })\r\n\r\n const hasTheForce = (options: any): options is { force: boolean } =>\r\n 'force' in options\r\n const hasMaxAge = (\r\n options: any\r\n ): options is { ifOlderThan: false | number } => 'ifOlderThan' in options\r\n\r\n const prefetch =\r\n <EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n arg: any,\r\n options: PrefetchOptions\r\n ): ThunkAction<void, any, any, AnyAction> =>\r\n (dispatch: ThunkDispatch<any, any, any>, getState: () => any) => {\r\n const force = hasTheForce(options) && options.force\r\n const maxAge = hasMaxAge(options) && options.ifOlderThan\r\n\r\n const queryAction = (force: boolean = true) =>\r\n (api.endpoints[endpointName] as ApiEndpointQuery<any, any>).initiate(\r\n arg,\r\n { forceRefetch: force }\r\n )\r\n const latestStateValue = (\r\n api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n ).select(arg)(getState())\r\n\r\n if (force) {\r\n dispatch(queryAction())\r\n } else if (maxAge) {\r\n const lastFulfilledTs = latestStateValue?.fulfilledTimeStamp\r\n if (!lastFulfilledTs) {\r\n dispatch(queryAction())\r\n return\r\n }\r\n const shouldRetrigger =\r\n (Number(new Date()) - Number(new Date(lastFulfilledTs))) / 1000 >=\r\n maxAge\r\n if (shouldRetrigger) {\r\n dispatch(queryAction())\r\n }\r\n } else {\r\n // If prefetching with no options, just let it try\r\n dispatch(queryAction(false))\r\n }\r\n }\r\n\r\n function matchesEndpoint(endpointName: string) {\r\n return (action: any): action is AnyAction =>\r\n action?.meta?.arg?.endpointName === endpointName\r\n }\r\n\r\n function buildMatchThunkActions<\r\n Thunk extends\r\n | AsyncThunk<any, QueryThunkArg, ThunkApiMetaConfig>\r\n | AsyncThunk<any, MutationThunkArg, ThunkApiMetaConfig>\r\n >(thunk: Thunk, endpointName: string) {\r\n return {\r\n matchPending: isAllOf(isPending(thunk), matchesEndpoint(endpointName)),\r\n matchFulfilled: isAllOf(\r\n isFulfilled(thunk),\r\n matchesEndpoint(endpointName)\r\n ),\r\n matchRejected: isAllOf(isRejected(thunk), matchesEndpoint(endpointName)),\r\n } as Matchers<Thunk, any>\r\n }\r\n\r\n return {\r\n queryThunk,\r\n mutationThunk,\r\n prefetch,\r\n updateQueryData,\r\n upsertQueryData,\r\n patchQueryData,\r\n buildMatchThunkActions,\r\n }\r\n}\r\n\r\nexport function calculateProvidedByThunk(\r\n action: UnwrapPromise<\r\n ReturnType<ReturnType<QueryThunk>> | ReturnType<ReturnType<MutationThunk>>\r\n >,\r\n type: 'providesTags' | 'invalidatesTags',\r\n endpointDefinitions: EndpointDefinitions,\r\n assertTagType: AssertTagTypes\r\n) {\r\n return calculateProvidedBy(\r\n endpointDefinitions[action.meta.arg.endpointName][type],\r\n isFulfilled(action) ? action.payload : undefined,\r\n isRejectedWithValue(action) ? action.payload : undefined,\r\n action.meta.arg.originalArgs,\r\n 'baseQueryMeta' in action.meta ? action.meta.baseQueryMeta : undefined,\r\n assertTagType\r\n )\r\n}\r\n","import type { AnyAction, PayloadAction } from '@reduxjs/toolkit'\r\nimport {\r\n combineReducers,\r\n createAction,\r\n createSlice,\r\n isAnyOf,\r\n isFulfilled,\r\n isRejectedWithValue,\r\n createNextState,\r\n prepareAutoBatched,\r\n} from '@reduxjs/toolkit'\r\nimport type {\r\n CombinedState as CombinedQueryState,\r\n QuerySubstateIdentifier,\r\n QuerySubState,\r\n MutationSubstateIdentifier,\r\n MutationSubState,\r\n MutationState,\r\n QueryState,\r\n InvalidationState,\r\n Subscribers,\r\n QueryCacheKey,\r\n SubscriptionState,\r\n ConfigState,\r\n} from './apiState'\r\nimport { QueryStatus } from './apiState'\r\nimport type { MutationThunk, QueryThunk, RejectedAction } from './buildThunks'\r\nimport { calculateProvidedByThunk } from './buildThunks'\r\nimport type {\r\n AssertTagTypes,\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n} from '../endpointDefinitions'\r\nimport type { Patch } from 'immer'\r\nimport { isDraft } from 'immer'\r\nimport { applyPatches, original } from 'immer'\r\nimport { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners'\r\nimport {\r\n isDocumentVisible,\r\n isOnline,\r\n copyWithStructuralSharing,\r\n} from '../utils'\r\nimport type { ApiContext } from '../apiTypes'\r\nimport { isUpsertQuery } from './buildInitiate'\r\n\r\nfunction updateQuerySubstateIfExists(\r\n state: QueryState<any>,\r\n queryCacheKey: QueryCacheKey,\r\n update: (substate: QuerySubState<any>) => void\r\n) {\r\n const substate = state[queryCacheKey]\r\n if (substate) {\r\n update(substate)\r\n }\r\n}\r\n\r\nexport function getMutationCacheKey(\r\n id:\r\n | MutationSubstateIdentifier\r\n | { requestId: string; arg: { fixedCacheKey?: string | undefined } }\r\n): string\r\nexport function getMutationCacheKey(id: {\r\n fixedCacheKey?: string\r\n requestId?: string\r\n}): string | undefined\r\n\r\nexport function getMutationCacheKey(\r\n id:\r\n | { fixedCacheKey?: string; requestId?: string }\r\n | MutationSubstateIdentifier\r\n | { requestId: string; arg: { fixedCacheKey?: string | undefined } }\r\n): string | undefined {\r\n return ('arg' in id ? id.arg.fixedCacheKey : id.fixedCacheKey) ?? id.requestId\r\n}\r\n\r\nfunction updateMutationSubstateIfExists(\r\n state: MutationState<any>,\r\n id:\r\n | MutationSubstateIdentifier\r\n | { requestId: string; arg: { fixedCacheKey?: string | undefined } },\r\n update: (substate: MutationSubState<any>) => void\r\n) {\r\n const substate = state[getMutationCacheKey(id)]\r\n if (substate) {\r\n update(substate)\r\n }\r\n}\r\n\r\nconst initialState = {} as any\r\n\r\nexport function buildSlice({\r\n reducerPath,\r\n queryThunk,\r\n mutationThunk,\r\n context: {\r\n endpointDefinitions: definitions,\r\n apiUid,\r\n extractRehydrationInfo,\r\n hasRehydrationInfo,\r\n },\r\n assertTagType,\r\n config,\r\n}: {\r\n reducerPath: string\r\n queryThunk: QueryThunk\r\n mutationThunk: MutationThunk\r\n context: ApiContext<EndpointDefinitions>\r\n assertTagType: AssertTagTypes\r\n config: Omit<\r\n ConfigState<string>,\r\n 'online' | 'focused' | 'middlewareRegistered'\r\n >\r\n}) {\r\n const resetApiState = createAction(`${reducerPath}/resetApiState`)\r\n const querySlice = createSlice({\r\n name: `${reducerPath}/queries`,\r\n initialState: initialState as QueryState<any>,\r\n reducers: {\r\n removeQueryResult: {\r\n reducer(\r\n draft,\r\n { payload: { queryCacheKey } }: PayloadAction<QuerySubstateIdentifier>\r\n ) {\r\n delete draft[queryCacheKey]\r\n },\r\n prepare: prepareAutoBatched<QuerySubstateIdentifier>(),\r\n },\r\n queryResultPatched(\r\n draft,\r\n {\r\n payload: { queryCacheKey, patches },\r\n }: PayloadAction<\r\n QuerySubstateIdentifier & { patches: readonly Patch[] }\r\n >\r\n ) {\r\n updateQuerySubstateIfExists(draft, queryCacheKey, (substate) => {\r\n substate.data = applyPatches(substate.data as any, patches.concat())\r\n })\r\n },\r\n },\r\n extraReducers(builder) {\r\n builder\r\n .addCase(queryThunk.pending, (draft, { meta, meta: { arg } }) => {\r\n const upserting = isUpsertQuery(arg)\r\n if (arg.subscribe || upserting) {\r\n // only initialize substate if we want to subscribe to it\r\n draft[arg.queryCacheKey] ??= {\r\n status: QueryStatus.uninitialized,\r\n endpointName: arg.endpointName,\r\n }\r\n }\r\n\r\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, (substate) => {\r\n substate.status = QueryStatus.pending\r\n\r\n substate.requestId =\r\n upserting && substate.requestId\r\n ? // for `upsertQuery` **updates**, keep the current `requestId`\r\n substate.requestId\r\n : // for normal queries or `upsertQuery` **inserts** always update the `requestId`\r\n meta.requestId\r\n if (arg.originalArgs !== undefined) {\r\n substate.originalArgs = arg.originalArgs\r\n }\r\n substate.startedTimeStamp = meta.startedTimeStamp\r\n })\r\n })\r\n .addCase(queryThunk.fulfilled, (draft, { meta, payload }) => {\r\n updateQuerySubstateIfExists(\r\n draft,\r\n meta.arg.queryCacheKey,\r\n (substate) => {\r\n if (\r\n substate.requestId !== meta.requestId &&\r\n !isUpsertQuery(meta.arg)\r\n )\r\n return\r\n const { merge } = definitions[\r\n meta.arg.endpointName\r\n ] as QueryDefinition<any, any, any, any>\r\n substate.status = QueryStatus.fulfilled\r\n\r\n if (merge) {\r\n if (substate.data !== undefined) {\r\n const { fulfilledTimeStamp, arg, baseQueryMeta, requestId } =\r\n meta\r\n // There's existing cache data. Let the user merge it in themselves.\r\n // We're already inside an Immer-powered reducer, and the user could just mutate `substate.data`\r\n // themselves inside of `merge()`. But, they might also want to return a new value.\r\n // Try to let Immer figure that part out, save the result, and assign it to `substate.data`.\r\n let newData = createNextState(\r\n substate.data,\r\n (draftSubstateData) => {\r\n // As usual with Immer, you can mutate _or_ return inside here, but not both\r\n return merge(draftSubstateData, payload, {\r\n arg: arg.originalArgs,\r\n baseQueryMeta,\r\n fulfilledTimeStamp,\r\n requestId,\r\n })\r\n }\r\n )\r\n substate.data = newData\r\n } else {\r\n // Presumably a fresh request. Just cache the response data.\r\n substate.data = payload\r\n }\r\n } else {\r\n // Assign or safely update the cache data.\r\n substate.data =\r\n definitions[meta.arg.endpointName].structuralSharing ?? true\r\n ? copyWithStructuralSharing(\r\n isDraft(substate.data)\r\n ? original(substate.data)\r\n : substate.data,\r\n payload\r\n )\r\n : payload\r\n }\r\n\r\n delete substate.error\r\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp\r\n }\r\n )\r\n })\r\n .addCase(\r\n queryThunk.rejected,\r\n (draft, { meta: { condition, arg, requestId }, error, payload }) => {\r\n updateQuerySubstateIfExists(\r\n draft,\r\n arg.queryCacheKey,\r\n (substate) => {\r\n if (condition) {\r\n // request was aborted due to condition (another query already running)\r\n } else {\r\n // request failed\r\n if (substate.requestId !== requestId) return\r\n substate.status = QueryStatus.rejected\r\n substate.error = (payload ?? error) as any\r\n }\r\n }\r\n )\r\n }\r\n )\r\n .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n const { queries } = extractRehydrationInfo(action)!\r\n for (const [key, entry] of Object.entries(queries)) {\r\n if (\r\n // do not rehydrate entries that were currently in flight.\r\n entry?.status === QueryStatus.fulfilled ||\r\n entry?.status === QueryStatus.rejected\r\n ) {\r\n draft[key] = entry\r\n }\r\n }\r\n })\r\n },\r\n })\r\n const mutationSlice = createSlice({\r\n name: `${reducerPath}/mutations`,\r\n initialState: initialState as MutationState<any>,\r\n reducers: {\r\n removeMutationResult: {\r\n reducer(draft, { payload }: PayloadAction<MutationSubstateIdentifier>) {\r\n const cacheKey = getMutationCacheKey(payload)\r\n if (cacheKey in draft) {\r\n delete draft[cacheKey]\r\n }\r\n },\r\n prepare: prepareAutoBatched<MutationSubstateIdentifier>(),\r\n },\r\n },\r\n extraReducers(builder) {\r\n builder\r\n .addCase(\r\n mutationThunk.pending,\r\n (draft, { meta, meta: { requestId, arg, startedTimeStamp } }) => {\r\n if (!arg.track) return\r\n\r\n draft[getMutationCacheKey(meta)] = {\r\n requestId,\r\n status: QueryStatus.pending,\r\n endpointName: arg.endpointName,\r\n startedTimeStamp,\r\n }\r\n }\r\n )\r\n .addCase(mutationThunk.fulfilled, (draft, { payload, meta }) => {\r\n if (!meta.arg.track) return\r\n\r\n updateMutationSubstateIfExists(draft, meta, (substate) => {\r\n if (substate.requestId !== meta.requestId) return\r\n substate.status = QueryStatus.fulfilled\r\n substate.data = payload\r\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp\r\n })\r\n })\r\n .addCase(mutationThunk.rejected, (draft, { payload, error, meta }) => {\r\n if (!meta.arg.track) return\r\n\r\n updateMutationSubstateIfExists(draft, meta, (substate) => {\r\n if (substate.requestId !== meta.requestId) return\r\n\r\n substate.status = QueryStatus.rejected\r\n substate.error = (payload ?? error) as any\r\n })\r\n })\r\n .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n const { mutations } = extractRehydrationInfo(action)!\r\n for (const [key, entry] of Object.entries(mutations)) {\r\n if (\r\n // do not rehydrate entries that were currently in flight.\r\n (entry?.status === QueryStatus.fulfilled ||\r\n entry?.status === QueryStatus.rejected) &&\r\n // only rehydrate endpoints that were persisted using a `fixedCacheKey`\r\n key !== entry?.requestId\r\n ) {\r\n draft[key] = entry\r\n }\r\n }\r\n })\r\n },\r\n })\r\n\r\n const invalidationSlice = createSlice({\r\n name: `${reducerPath}/invalidation`,\r\n initialState: initialState as InvalidationState<string>,\r\n reducers: {},\r\n extraReducers(builder) {\r\n builder\r\n .addCase(\r\n querySlice.actions.removeQueryResult,\r\n (draft, { payload: { queryCacheKey } }) => {\r\n for (const tagTypeSubscriptions of Object.values(draft)) {\r\n for (const idSubscriptions of Object.values(\r\n tagTypeSubscriptions\r\n )) {\r\n const foundAt = idSubscriptions.indexOf(queryCacheKey)\r\n if (foundAt !== -1) {\r\n idSubscriptions.splice(foundAt, 1)\r\n }\r\n }\r\n }\r\n }\r\n )\r\n .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n const { provided } = extractRehydrationInfo(action)!\r\n for (const [type, incomingTags] of Object.entries(provided)) {\r\n for (const [id, cacheKeys] of Object.entries(incomingTags)) {\r\n const subscribedQueries = ((draft[type] ??= {})[\r\n id || '__internal_without_id'\r\n ] ??= [])\r\n for (const queryCacheKey of cacheKeys) {\r\n const alreadySubscribed =\r\n subscribedQueries.includes(queryCacheKey)\r\n if (!alreadySubscribed) {\r\n subscribedQueries.push(queryCacheKey)\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .addMatcher(\r\n isAnyOf(isFulfilled(queryThunk), isRejectedWithValue(queryThunk)),\r\n (draft, action) => {\r\n const providedTags = calculateProvidedByThunk(\r\n action,\r\n 'providesTags',\r\n definitions,\r\n assertTagType\r\n )\r\n const { queryCacheKey } = action.meta.arg\r\n\r\n for (const tagTypeSubscriptions of Object.values(draft)) {\r\n for (const idSubscriptions of Object.values(\r\n tagTypeSubscriptions\r\n )) {\r\n const foundAt = idSubscriptions.indexOf(queryCacheKey)\r\n if (foundAt !== -1) {\r\n idSubscriptions.splice(foundAt, 1)\r\n }\r\n }\r\n }\r\n\r\n for (const { type, id } of providedTags) {\r\n const subscribedQueries = ((draft[type] ??= {})[\r\n id || '__internal_without_id'\r\n ] ??= [])\r\n const alreadySubscribed =\r\n subscribedQueries.includes(queryCacheKey)\r\n if (!alreadySubscribed) {\r\n subscribedQueries.push(queryCacheKey)\r\n }\r\n }\r\n }\r\n )\r\n },\r\n })\r\n\r\n // Dummy slice to generate actions\r\n const subscriptionSlice = createSlice({\r\n name: `${reducerPath}/subscriptions`,\r\n initialState: initialState as SubscriptionState,\r\n reducers: {\r\n updateSubscriptionOptions(\r\n d,\r\n a: PayloadAction<\r\n {\r\n endpointName: string\r\n requestId: string\r\n options: Subscribers[number]\r\n } & QuerySubstateIdentifier\r\n >\r\n ) {\r\n // Dummy\r\n },\r\n unsubscribeQueryResult(\r\n d,\r\n a: PayloadAction<{ requestId: string } & QuerySubstateIdentifier>\r\n ) {\r\n // Dummy\r\n },\r\n internal_probeSubscription(\r\n d,\r\n a: PayloadAction<{ queryCacheKey: string; requestId: string }>\r\n ) {\r\n // dummy\r\n },\r\n },\r\n })\r\n\r\n const internalSubscriptionsSlice = createSlice({\r\n name: `${reducerPath}/internalSubscriptions`,\r\n initialState: initialState as SubscriptionState,\r\n reducers: {\r\n subscriptionsUpdated: {\r\n reducer(state, action: PayloadAction<Patch[]>) {\r\n return applyPatches(state, action.payload)\r\n },\r\n prepare: prepareAutoBatched<Patch[]>(),\r\n },\r\n },\r\n })\r\n\r\n const configSlice = createSlice({\r\n name: `${reducerPath}/config`,\r\n initialState: {\r\n online: isOnline(),\r\n focused: isDocumentVisible(),\r\n middlewareRegistered: false,\r\n ...config,\r\n } as ConfigState<string>,\r\n reducers: {\r\n middlewareRegistered(state, { payload }: PayloadAction<string>) {\r\n state.middlewareRegistered =\r\n state.middlewareRegistered === 'conflict' || apiUid !== payload\r\n ? 'conflict'\r\n : true\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(onOnline, (state) => {\r\n state.online = true\r\n })\r\n .addCase(onOffline, (state) => {\r\n state.online = false\r\n })\r\n .addCase(onFocus, (state) => {\r\n state.focused = true\r\n })\r\n .addCase(onFocusLost, (state) => {\r\n state.focused = false\r\n })\r\n // update the state to be a new object to be picked up as a \"state change\"\r\n // by redux-persist's `autoMergeLevel2`\r\n .addMatcher(hasRehydrationInfo, (draft) => ({ ...draft }))\r\n },\r\n })\r\n\r\n const combinedReducer = combineReducers<\r\n CombinedQueryState<any, string, string>\r\n >({\r\n queries: querySlice.reducer,\r\n mutations: mutationSlice.reducer,\r\n provided: invalidationSlice.reducer,\r\n subscriptions: internalSubscriptionsSlice.reducer,\r\n config: configSlice.reducer,\r\n })\r\n\r\n const reducer: typeof combinedReducer = (state, action) =>\r\n combinedReducer(resetApiState.match(action) ? undefined : state, action)\r\n\r\n const actions = {\r\n ...configSlice.actions,\r\n ...querySlice.actions,\r\n ...subscriptionSlice.actions,\r\n ...internalSubscriptionsSlice.actions,\r\n ...mutationSlice.actions,\r\n /** @deprecated has been renamed to `removeMutationResult` */\r\n unsubscribeMutationResult: mutationSlice.actions.removeMutationResult,\r\n resetApiState,\r\n }\r\n\r\n return { reducer, actions }\r\n}\r\nexport type SliceActions = ReturnType<typeof buildSlice>['actions']\r\n","/**\r\n * Assumes a browser is online if `undefined`, otherwise makes a best effort\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine\r\n */\r\nexport function isOnline() {\r\n // We set the default config value in the store, so we'd need to check for this in a SSR env\r\n return typeof navigator === 'undefined'\r\n ? true\r\n : navigator.onLine === undefined\r\n ? true\r\n : navigator.onLine\r\n}\r\n","/**\r\n * Assumes true for a non-browser env, otherwise makes a best effort\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState\r\n */\r\nexport function isDocumentVisible(): boolean {\r\n // `document` may not exist in non-browser envs (like RN)\r\n if (typeof document === 'undefined') {\r\n return true\r\n }\r\n // Match true for visible, prerender, undefined\r\n return document.visibilityState !== 'hidden'\r\n}\r\n","import { createNextState, createSelector } from '@reduxjs/toolkit'\r\nimport type {\r\n MutationSubState,\r\n QuerySubState,\r\n RootState as _RootState,\r\n RequestStatusFlags,\r\n QueryCacheKey,\r\n} from './apiState'\r\nimport { QueryStatus, getRequestStatusFlags } from './apiState'\r\nimport type {\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n TagTypesFrom,\r\n ReducerPathFrom,\r\n TagDescription,\r\n} from '../endpointDefinitions'\r\nimport { expandTagDescription } from '../endpointDefinitions'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport { getMutationCacheKey } from './buildSlice'\r\nimport { flatten } from '../utils'\r\n\r\nexport type SkipToken = typeof skipToken\r\n/**\r\n * Can be passed into `useQuery`, `useQueryState` or `useQuerySubscription`\r\n * instead of the query argument to get the same effect as if setting\r\n * `skip: true` in the query options.\r\n *\r\n * Useful for scenarios where a query should be skipped when `arg` is `undefined`\r\n * and TypeScript complains about it because `arg` is not allowed to be passed\r\n * in as `undefined`, such as\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"will error if the query argument is not allowed to be undefined\" no-transpile\r\n * useSomeQuery(arg, { skip: !!arg })\r\n * ```\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"using skipToken instead\" no-transpile\r\n * useSomeQuery(arg ?? skipToken)\r\n * ```\r\n *\r\n * If passed directly into a query or mutation selector, that selector will always\r\n * return an uninitialized state.\r\n */\r\nexport const skipToken = /* @__PURE__ */ Symbol.for('RTKQ/skipToken')\r\n/** @deprecated renamed to `skipToken` */\r\nexport const skipSelector = skipToken\r\n\r\ndeclare module './module' {\r\n export interface ApiEndpointQuery<\r\n Definition extends QueryDefinition<any, any, any, any, any>,\r\n Definitions extends EndpointDefinitions\r\n > {\r\n select: QueryResultSelectorFactory<\r\n Definition,\r\n _RootState<\r\n Definitions,\r\n TagTypesFrom<Definition>,\r\n ReducerPathFrom<Definition>\r\n >\r\n >\r\n }\r\n\r\n export interface ApiEndpointMutation<\r\n Definition extends MutationDefinition<any, any, any, any, any>,\r\n Definitions extends EndpointDefinitions\r\n > {\r\n select: MutationResultSelectorFactory<\r\n Definition,\r\n _RootState<\r\n Definitions,\r\n TagTypesFrom<Definition>,\r\n ReducerPathFrom<Definition>\r\n >\r\n >\r\n }\r\n}\r\n\r\ntype QueryResultSelectorFactory<\r\n Definition extends QueryDefinition<any, any, any, any>,\r\n RootState\r\n> = (\r\n queryArg: QueryArgFrom<Definition> | SkipToken\r\n) => (state: RootState) => QueryResultSelectorResult<Definition>\r\n\r\nexport type QueryResultSelectorResult<\r\n Definition extends QueryDefinition<any, any, any, any>\r\n> = QuerySubState<Definition> & RequestStatusFlags\r\n\r\ntype MutationResultSelectorFactory<\r\n Definition extends MutationDefinition<any, any, any, any>,\r\n RootState\r\n> = (\r\n requestId:\r\n | string\r\n | { requestId: string | undefined; fixedCacheKey: string | undefined }\r\n | SkipToken\r\n) => (state: RootState) => MutationResultSelectorResult<Definition>\r\n\r\nexport type MutationResultSelectorResult<\r\n Definition extends MutationDefinition<any, any, any, any>\r\n> = MutationSubState<Definition> & RequestStatusFlags\r\n\r\nconst initialSubState: QuerySubState<any> = {\r\n status: QueryStatus.uninitialized as const,\r\n}\r\n\r\n// abuse immer to freeze default states\r\nconst defaultQuerySubState = /* @__PURE__ */ createNextState(\r\n initialSubState,\r\n () => {}\r\n)\r\nconst defaultMutationSubState = /* @__PURE__ */ createNextState(\r\n initialSubState as MutationSubState<any>,\r\n () => {}\r\n)\r\n\r\nexport function buildSelectors<\r\n Definitions extends EndpointDefinitions,\r\n ReducerPath extends string\r\n>({\r\n serializeQueryArgs,\r\n reducerPath,\r\n}: {\r\n serializeQueryArgs: InternalSerializeQueryArgs\r\n reducerPath: ReducerPath\r\n}) {\r\n type RootState = _RootState<Definitions, string, string>\r\n\r\n const selectSkippedQuery = (state: RootState) => defaultQuerySubState\r\n const selectSkippedMutation = (state: RootState) => defaultMutationSubState\r\n\r\n return { buildQuerySelector, buildMutationSelector, selectInvalidatedBy }\r\n\r\n function withRequestFlags<T extends { status: QueryStatus }>(\r\n substate: T\r\n ): T & RequestStatusFlags {\r\n return {\r\n ...substate,\r\n ...getRequestStatusFlags(substate.status),\r\n }\r\n }\r\n\r\n function selectInternalState(rootState: RootState) {\r\n const state = rootState[reducerPath]\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!state) {\r\n if ((selectInternalState as any).triggered) return state\r\n ;(selectInternalState as any).triggered = true\r\n console.error(\r\n `Error: No data found at \\`state.${reducerPath}\\`. Did you forget to add the reducer to the store?`\r\n )\r\n }\r\n }\r\n return state\r\n }\r\n\r\n function buildQuerySelector(\r\n endpointName: string,\r\n endpointDefinition: QueryDefinition<any, any, any, any>\r\n ) {\r\n return ((queryArgs: any) => {\r\n const serializedArgs = serializeQueryArgs({\r\n queryArgs,\r\n endpointDefinition,\r\n endpointName,\r\n })\r\n const selectQuerySubstate = (state: RootState) =>\r\n selectInternalState(state)?.queries?.[serializedArgs] ??\r\n defaultQuerySubState\r\n const finalSelectQuerySubState =\r\n queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate\r\n\r\n return createSelector(finalSelectQuerySubState, withRequestFlags)\r\n }) as QueryResultSelectorFactory<any, RootState>\r\n }\r\n\r\n function buildMutationSelector() {\r\n return ((id) => {\r\n let mutationId: string | typeof skipToken\r\n if (typeof id === 'object') {\r\n mutationId = getMutationCacheKey(id) ?? skipToken\r\n } else {\r\n mutationId = id\r\n }\r\n const selectMutationSubstate = (state: RootState) =>\r\n selectInternalState(state)?.mutations?.[mutationId as string] ??\r\n defaultMutationSubState\r\n const finalSelectMutationSubstate =\r\n mutationId === skipToken\r\n ? selectSkippedMutation\r\n : selectMutationSubstate\r\n\r\n return createSelector(finalSelectMutationSubstate, withRequestFlags)\r\n }) as MutationResultSelectorFactory<any, RootState>\r\n }\r\n\r\n function selectInvalidatedBy(\r\n state: RootState,\r\n tags: ReadonlyArray<TagDescription<string>>\r\n ): Array<{\r\n endpointName: string\r\n originalArgs: any\r\n queryCacheKey: QueryCacheKey\r\n }> {\r\n const apiState = state[reducerPath]\r\n const toInvalidate = new Set<QueryCacheKey>()\r\n for (const tag of tags.map(expandTagDescription)) {\r\n const provided = apiState.provided[tag.type]\r\n if (!provided) {\r\n continue\r\n }\r\n\r\n let invalidateSubscriptions =\r\n (tag.id !== undefined\r\n ? // id given: invalidate all queries that provide this type & id\r\n provided[tag.id]\r\n : // no id: invalidate all queries that provide this type\r\n flatten(Object.values(provided))) ?? []\r\n\r\n for (const invalidate of invalidateSubscriptions) {\r\n toInvalidate.add(invalidate)\r\n }\r\n }\r\n\r\n return flatten(\r\n Array.from(toInvalidate.values()).map((queryCacheKey) => {\r\n const querySubState = apiState.queries[queryCacheKey]\r\n return querySubState\r\n ? [\r\n {\r\n queryCacheKey,\r\n endpointName: querySubState.endpointName!,\r\n originalArgs: querySubState.originalArgs,\r\n },\r\n ]\r\n : []\r\n })\r\n )\r\n }\r\n}\r\n","import type { QueryCacheKey } from './core/apiState'\r\nimport type { EndpointDefinition } from './endpointDefinitions'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\n\r\nconst cache: WeakMap<any, string> | undefined = WeakMap\r\n ? new WeakMap()\r\n : undefined\r\n\r\nexport const defaultSerializeQueryArgs: SerializeQueryArgs<any> = ({\r\n endpointName,\r\n queryArgs,\r\n}) => {\r\n let serialized = ''\r\n\r\n const cached = cache?.get(queryArgs)\r\n\r\n if (typeof cached === 'string') {\r\n serialized = cached\r\n } else {\r\n const stringified = JSON.stringify(queryArgs, (key, value) =>\r\n isPlainObject(value)\r\n ? Object.keys(value)\r\n .sort()\r\n .reduce<any>((acc, key) => {\r\n acc[key] = (value as any)[key]\r\n return acc\r\n }, {})\r\n : value\r\n )\r\n if (isPlainObject(queryArgs)) {\r\n cache?.set(queryArgs, stringified)\r\n }\r\n serialized = stringified\r\n }\r\n // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\r\n return `${endpointName}(${serialized})`\r\n}\r\n\r\nexport type SerializeQueryArgs<QueryArgs, ReturnType = string> = (_: {\r\n queryArgs: QueryArgs\r\n endpointDefinition: EndpointDefinition<any, any, any, any>\r\n endpointName: string\r\n}) => ReturnType\r\n\r\nexport type InternalSerializeQueryArgs = (_: {\r\n queryArgs: any\r\n endpointDefinition: EndpointDefinition<any, any, any, any>\r\n endpointName: string\r\n}) => QueryCacheKey\r\n","import type { Api, ApiContext, Module, ModuleName } from './apiTypes'\r\nimport type { CombinedState } from './core/apiState'\r\nimport type { BaseQueryArg, BaseQueryFn } from './baseQueryTypes'\r\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport { defaultSerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport type {\r\n EndpointBuilder,\r\n EndpointDefinitions,\r\n} from './endpointDefinitions'\r\nimport { DefinitionType, isQueryDefinition } from './endpointDefinitions'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport type { AnyAction } from '@reduxjs/toolkit'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { defaultMemoize } from 'reselect'\r\n\r\nexport interface CreateApiOptions<\r\n BaseQuery extends BaseQueryFn,\r\n Definitions extends EndpointDefinitions,\r\n ReducerPath extends string = 'api',\r\n TagTypes extends string = never\r\n> {\r\n /**\r\n * The base query used by each endpoint if no `queryFn` option is specified. RTK Query exports a utility called [fetchBaseQuery](./fetchBaseQuery) as a lightweight wrapper around `fetch` for common use-cases. See [Customizing Queries](../../rtk-query/usage/customizing-queries) if `fetchBaseQuery` does not handle your requirements.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n *\r\n * const api = createApi({\r\n * // highlight-start\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * // highlight-end\r\n * endpoints: (build) => ({\r\n * // ...endpoints\r\n * }),\r\n * })\r\n * ```\r\n */\r\n baseQuery: BaseQuery\r\n /**\r\n * An array of string tag type names. Specifying tag types is optional, but you should define them so that they can be used for caching and invalidation. When defining a tag type, you will be able to [provide](../../rtk-query/usage/automated-refetching#providing-tags) them with `providesTags` and [invalidate](../../rtk-query/usage/automated-refetching#invalidating-tags) them with `invalidatesTags` when configuring [endpoints](#endpoints).\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * // highlight-start\r\n * tagTypes: ['Post', 'User'],\r\n * // highlight-end\r\n * endpoints: (build) => ({\r\n * // ...endpoints\r\n * }),\r\n * })\r\n * ```\r\n */\r\n tagTypes?: readonly TagTypes[]\r\n /**\r\n * The `reducerPath` is a _unique_ key that your service will be mounted to in your store. If you call `createApi` more than once in your application, you will need to provide a unique value each time. Defaults to `'api'`.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"apis.js\"\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query';\r\n *\r\n * const apiOne = createApi({\r\n * // highlight-start\r\n * reducerPath: 'apiOne',\r\n * // highlight-end\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (builder) => ({\r\n * // ...endpoints\r\n * }),\r\n * });\r\n *\r\n * const apiTwo = createApi({\r\n * // highlight-start\r\n * reducerPath: 'apiTwo',\r\n * // highlight-end\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (builder) => ({\r\n * // ...endpoints\r\n * }),\r\n * });\r\n * ```\r\n */\r\n reducerPath?: ReducerPath\r\n /**\r\n * Accepts a custom function if you have a need to change the creation of cache keys for any reason.\r\n */\r\n serializeQueryArgs?: SerializeQueryArgs<BaseQueryArg<BaseQuery>>\r\n /**\r\n * Endpoints are just a set of operations that you want to perform against your server. You define them as an object using the builder syntax. There are two basic endpoint types: [`query`](../../rtk-query/usage/queries) and [`mutation`](../../rtk-query/usage/mutations).\r\n */\r\n endpoints(\r\n build: EndpointBuilder<BaseQuery, TagTypes, ReducerPath>\r\n ): Definitions\r\n /**\r\n * Defaults to `60` _(this value is in seconds)_. This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"keepUnusedDataFor example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * getPosts: build.query<PostsResponse, void>({\r\n * query: () => 'posts',\r\n * // highlight-start\r\n * keepUnusedDataFor: 5\r\n * // highlight-end\r\n * })\r\n * })\r\n * })\r\n * ```\r\n */\r\n keepUnusedDataFor?: number\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether if a cached result is already available RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\r\n * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\r\n * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\r\n * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n */\r\n refetchOnMountOrArgChange?: boolean | number\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n *\r\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n */\r\n refetchOnFocus?: boolean\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n *\r\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n */\r\n refetchOnReconnect?: boolean\r\n /**\r\n * A function that is passed every dispatched action. If this returns something other than `undefined`,\r\n * that return value will be used to rehydrate fulfilled & errored queries.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"next-redux-wrapper rehydration example\"\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * import { HYDRATE } from 'next-redux-wrapper'\r\n *\r\n * export const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * // highlight-start\r\n * extractRehydrationInfo(action, { reducerPath }) {\r\n * if (action.type === HYDRATE) {\r\n * return action.payload[reducerPath]\r\n * }\r\n * },\r\n * // highlight-end\r\n * endpoints: (build) => ({\r\n * // omitted\r\n * }),\r\n * })\r\n * ```\r\n */\r\n extractRehydrationInfo?: (\r\n action: AnyAction,\r\n {\r\n reducerPath,\r\n }: {\r\n reducerPath: ReducerPath\r\n }\r\n ) =>\r\n | undefined\r\n | CombinedState<\r\n NoInfer<Definitions>,\r\n NoInfer<TagTypes>,\r\n NoInfer<ReducerPath>\r\n >\r\n}\r\n\r\nexport type CreateApi<Modules extends ModuleName> = {\r\n /**\r\n * Creates a service to use in your application. Contains only the basic redux logic (the core module).\r\n *\r\n * @link https://rtk-query-docs.netlify.app/api/createApi\r\n */\r\n <\r\n BaseQuery extends BaseQueryFn,\r\n Definitions extends EndpointDefinitions,\r\n ReducerPath extends string = 'api',\r\n TagTypes extends string = never\r\n >(\r\n options: CreateApiOptions<BaseQuery, Definitions, ReducerPath, TagTypes>\r\n ): Api<BaseQuery, Definitions, ReducerPath, TagTypes, Modules>\r\n}\r\n\r\n/**\r\n * Builds a `createApi` method based on the provided `modules`.\r\n *\r\n * @link https://rtk-query-docs.netlify.app/concepts/customizing-create-api\r\n *\r\n * @example\r\n * ```ts\r\n * const MyContext = React.createContext<ReactReduxContextValue>(null as any);\r\n * const customCreateApi = buildCreateApi(\r\n * coreModule(),\r\n * reactHooksModule({ useDispatch: createDispatchHook(MyContext) })\r\n * );\r\n * ```\r\n *\r\n * @param modules - A variable number of modules that customize how the `createApi` method handles endpoints\r\n * @returns A `createApi` method using the provided `modules`.\r\n */\r\nexport function buildCreateApi<Modules extends [Module<any>, ...Module<any>[]]>(\r\n ...modules: Modules\r\n): CreateApi<Modules[number]['name']> {\r\n return function baseCreateApi(options) {\r\n const extractRehydrationInfo = defaultMemoize((action: AnyAction) =>\r\n options.extractRehydrationInfo?.(action, {\r\n reducerPath: (options.reducerPath ?? 'api') as any,\r\n })\r\n )\r\n\r\n const optionsWithDefaults: CreateApiOptions<any, any, any, any> = {\r\n reducerPath: 'api',\r\n keepUnusedDataFor: 60,\r\n refetchOnMountOrArgChange: false,\r\n refetchOnFocus: false,\r\n refetchOnReconnect: false,\r\n ...options,\r\n extractRehydrationInfo,\r\n serializeQueryArgs(queryArgsApi) {\r\n let finalSerializeQueryArgs = defaultSerializeQueryArgs\r\n if ('serializeQueryArgs' in queryArgsApi.endpointDefinition) {\r\n const endpointSQA =\r\n queryArgsApi.endpointDefinition.serializeQueryArgs!\r\n finalSerializeQueryArgs = (queryArgsApi) => {\r\n const initialResult = endpointSQA(queryArgsApi)\r\n if (typeof initialResult === 'string') {\r\n // If the user function returned a string, use it as-is\r\n return initialResult\r\n } else {\r\n // Assume they returned an object (such as a subset of the original\r\n // query args) or a primitive, and serialize it ourselves\r\n return defaultSerializeQueryArgs({\r\n ...queryArgsApi,\r\n queryArgs: initialResult,\r\n })\r\n }\r\n }\r\n } else if (options.serializeQueryArgs) {\r\n finalSerializeQueryArgs = options.serializeQueryArgs\r\n }\r\n\r\n return finalSerializeQueryArgs(queryArgsApi)\r\n },\r\n tagTypes: [...(options.tagTypes || [])],\r\n }\r\n\r\n const context: ApiContext<EndpointDefinitions> = {\r\n endpointDefinitions: {},\r\n batch(fn) {\r\n // placeholder \"batch\" method to be overridden by plugins, for example with React.unstable_batchedUpdate\r\n fn()\r\n },\r\n apiUid: nanoid(),\r\n extractRehydrationInfo,\r\n hasRehydrationInfo: defaultMemoize(\r\n (action) => extractRehydrationInfo(action) != null\r\n ),\r\n }\r\n\r\n const api = {\r\n injectEndpoints,\r\n enhanceEndpoints({ addTagTypes, endpoints }) {\r\n if (addTagTypes) {\r\n for (const eT of addTagTypes) {\r\n if (!optionsWithDefaults.tagTypes!.includes(eT as any)) {\r\n ;(optionsWithDefaults.tagTypes as any[]).push(eT)\r\n }\r\n }\r\n }\r\n if (endpoints) {\r\n for (const [endpointName, partialDefinition] of Object.entries(\r\n endpoints\r\n )) {\r\n if (typeof partialDefinition === 'function') {\r\n partialDefinition(context.endpointDefinitions[endpointName])\r\n } else {\r\n Object.assign(\r\n context.endpointDefinitions[endpointName] || {},\r\n partialDefinition\r\n )\r\n }\r\n }\r\n }\r\n return api\r\n },\r\n } as Api<BaseQueryFn, {}, string, string, Modules[number]['name']>\r\n\r\n const initializedModules = modules.map((m) =>\r\n m.init(api as any, optionsWithDefaults as any, context)\r\n )\r\n\r\n function injectEndpoints(\r\n inject: Parameters<typeof api.injectEndpoints>[0]\r\n ) {\r\n const evaluatedEndpoints = inject.endpoints({\r\n query: (x) => ({ ...x, type: DefinitionType.query } as any),\r\n mutation: (x) => ({ ...x, type: DefinitionType.mutation } as any),\r\n })\r\n\r\n for (const [endpointName, definition] of Object.entries(\r\n evaluatedEndpoints\r\n )) {\r\n if (\r\n !inject.overrideExisting &&\r\n endpointName in context.endpointDefinitions\r\n ) {\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n console.error(\r\n `called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``\r\n )\r\n }\r\n\r\n continue\r\n }\r\n\r\n context.endpointDefinitions[endpointName] = definition\r\n for (const m of initializedModules) {\r\n m.injectEndpoint(endpointName, definition)\r\n }\r\n }\r\n\r\n return api as any\r\n }\r\n\r\n return api.injectEndpoints({ endpoints: options.endpoints as any })\r\n }\r\n}\r\n","import type { BaseQueryFn } from '../../baseQueryTypes'\r\nimport type { QueryDefinition } from '../../endpointDefinitions'\r\nimport type { ConfigState, QueryCacheKey } from '../apiState'\r\nimport type {\r\n QueryStateMeta,\r\n SubMiddlewareApi,\r\n TimeoutId,\r\n InternalHandlerBuilder,\r\n ApiMiddlewareInternalHandler,\r\n InternalMiddlewareState,\r\n} from './types'\r\n\r\nexport type ReferenceCacheCollection = never\r\n\r\nfunction isObjectEmpty(obj: Record<any, any>) {\r\n // Apparently a for..in loop is faster than `Object.keys()` here:\r\n // https://stackoverflow.com/a/59787784/62937\r\n for (let k in obj) {\r\n // If there is at least one key, it's not empty\r\n return false\r\n }\r\n return true\r\n}\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n interface QueryExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n > {\r\n /**\r\n * Overrides the api-wide definition of `keepUnusedDataFor` for this endpoint only. _(This value is in seconds.)_\r\n *\r\n * This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\r\n */\r\n keepUnusedDataFor?: number\r\n }\r\n}\r\n\r\n// Per https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value , browsers store\r\n// `setTimeout()` timer values in a 32-bit int. If we pass a value in that's larger than that,\r\n// it wraps and ends up executing immediately.\r\n// Our `keepUnusedDataFor` values are in seconds, so adjust the numbers here accordingly.\r\nexport const THIRTY_TWO_BIT_MAX_INT = 2_147_483_647\r\nexport const THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2_147_483_647 / 1_000 - 1\r\n\r\nexport const buildCacheCollectionHandler: InternalHandlerBuilder = ({\r\n reducerPath,\r\n api,\r\n context,\r\n internalState,\r\n}) => {\r\n const { removeQueryResult, unsubscribeQueryResult } = api.internalActions\r\n\r\n function anySubscriptionsRemainingForKey(queryCacheKey: string) {\r\n const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n return !!subscriptions && !isObjectEmpty(subscriptions)\r\n }\r\n\r\n const currentRemovalTimeouts: QueryStateMeta<TimeoutId> = {}\r\n\r\n const handler: ApiMiddlewareInternalHandler = (\r\n action,\r\n mwApi,\r\n internalState\r\n ) => {\r\n if (unsubscribeQueryResult.match(action)) {\r\n const state = mwApi.getState()[reducerPath]\r\n const { queryCacheKey } = action.payload\r\n\r\n handleUnsubscribe(\r\n queryCacheKey,\r\n state.queries[queryCacheKey]?.endpointName,\r\n mwApi,\r\n state.config\r\n )\r\n }\r\n\r\n if (api.util.resetApiState.match(action)) {\r\n for (const [key, timeout] of Object.entries(currentRemovalTimeouts)) {\r\n if (timeout) clearTimeout(timeout)\r\n delete currentRemovalTimeouts[key]\r\n }\r\n }\r\n\r\n if (context.hasRehydrationInfo(action)) {\r\n const state = mwApi.getState()[reducerPath]\r\n const { queries } = context.extractRehydrationInfo(action)!\r\n for (const [queryCacheKey, queryState] of Object.entries(queries)) {\r\n // Gotcha:\r\n // If rehydrating before the endpoint has been injected,the global `keepUnusedDataFor`\r\n // will be used instead of the endpoint-specific one.\r\n handleUnsubscribe(\r\n queryCacheKey as QueryCacheKey,\r\n queryState?.endpointName,\r\n mwApi,\r\n state.config\r\n )\r\n }\r\n }\r\n }\r\n\r\n function handleUnsubscribe(\r\n queryCacheKey: QueryCacheKey,\r\n endpointName: string | undefined,\r\n api: SubMiddlewareApi,\r\n config: ConfigState<string>\r\n ) {\r\n const endpointDefinition = context.endpointDefinitions[\r\n endpointName!\r\n ] as QueryDefinition<any, any, any, any>\r\n const keepUnusedDataFor =\r\n endpointDefinition?.keepUnusedDataFor ?? config.keepUnusedDataFor\r\n\r\n if (keepUnusedDataFor === Infinity) {\r\n // Hey, user said keep this forever!\r\n return\r\n }\r\n // Prevent `setTimeout` timers from overflowing a 32-bit internal int, by\r\n // clamping the max value to be at most 1000ms less than the 32-bit max.\r\n // Look, a 24.8-day keepalive ought to be enough for anybody, right? :)\r\n // Also avoid negative values too.\r\n const finalKeepUnusedDataFor = Math.max(\r\n 0,\r\n Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS)\r\n )\r\n\r\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n const currentTimeout = currentRemovalTimeouts[queryCacheKey]\r\n if (currentTimeout) {\r\n clearTimeout(currentTimeout)\r\n }\r\n currentRemovalTimeouts[queryCacheKey] = setTimeout(() => {\r\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n api.dispatch(removeQueryResult({ queryCacheKey }))\r\n }\r\n delete currentRemovalTimeouts![queryCacheKey]\r\n }, finalKeepUnusedDataFor * 1000)\r\n }\r\n }\r\n\r\n return handler\r\n}\r\n","import type { QueryThunk, RejectedAction } from '../buildThunks'\r\nimport type { InternalHandlerBuilder } from './types'\r\nimport type {\r\n SubscriptionState,\r\n QuerySubstateIdentifier,\r\n Subscribers,\r\n} from '../apiState'\r\nimport { produceWithPatches } from 'immer'\r\nimport type { AnyAction } from '@reduxjs/toolkit';\r\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit'\r\n\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nexport const buildBatchedActionsHandler: InternalHandlerBuilder<\r\n [actionShouldContinue: boolean, subscriptionExists: boolean]\r\n> = ({ api, queryThunk, internalState }) => {\r\n const subscriptionsPrefix = `${api.reducerPath}/subscriptions`\r\n\r\n let previousSubscriptions: SubscriptionState =\r\n null as unknown as SubscriptionState\r\n\r\n let dispatchQueued = false\r\n\r\n const { updateSubscriptionOptions, unsubscribeQueryResult } =\r\n api.internalActions\r\n\r\n // Actually intentionally mutate the subscriptions state used in the middleware\r\n // This is done to speed up perf when loading many components\r\n const actuallyMutateSubscriptions = (\r\n mutableState: SubscriptionState,\r\n action: AnyAction\r\n ) => {\r\n if (updateSubscriptionOptions.match(action)) {\r\n const { queryCacheKey, requestId, options } = action.payload\r\n\r\n if (mutableState?.[queryCacheKey]?.[requestId]) {\r\n mutableState[queryCacheKey]![requestId] = options\r\n }\r\n return true\r\n }\r\n if (unsubscribeQueryResult.match(action)) {\r\n const { queryCacheKey, requestId } = action.payload\r\n if (mutableState[queryCacheKey]) {\r\n delete mutableState[queryCacheKey]![requestId]\r\n }\r\n return true\r\n }\r\n if (api.internalActions.removeQueryResult.match(action)) {\r\n delete mutableState[action.payload.queryCacheKey]\r\n return true\r\n }\r\n if (queryThunk.pending.match(action)) {\r\n const {\r\n meta: { arg, requestId },\r\n } = action\r\n if (arg.subscribe) {\r\n const substate = (mutableState[arg.queryCacheKey] ??= {})\r\n substate[requestId] =\r\n arg.subscriptionOptions ?? substate[requestId] ?? {}\r\n\r\n return true\r\n }\r\n }\r\n if (queryThunk.rejected.match(action)) {\r\n const {\r\n meta: { condition, arg, requestId },\r\n } = action\r\n if (condition && arg.subscribe) {\r\n const substate = (mutableState[arg.queryCacheKey] ??= {})\r\n substate[requestId] =\r\n arg.subscriptionOptions ?? substate[requestId] ?? {}\r\n\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n return (action, mwApi) => {\r\n if (!previousSubscriptions) {\r\n // Initialize it the first time this handler runs\r\n previousSubscriptions = JSON.parse(\r\n JSON.stringify(internalState.currentSubscriptions)\r\n )\r\n }\r\n\r\n if (api.util.resetApiState.match(action)) {\r\n previousSubscriptions = internalState.currentSubscriptions = {}\r\n return [true, false]\r\n }\r\n\r\n // Intercept requests by hooks to see if they're subscribed\r\n // Necessary because we delay updating store state to the end of the tick\r\n if (api.internalActions.internal_probeSubscription.match(action)) {\r\n const { queryCacheKey, requestId } = action.payload\r\n const hasSubscription =\r\n !!internalState.currentSubscriptions[queryCacheKey]?.[requestId]\r\n return [false, hasSubscription]\r\n }\r\n\r\n // Update subscription data based on this action\r\n const didMutate = actuallyMutateSubscriptions(\r\n internalState.currentSubscriptions,\r\n action\r\n )\r\n\r\n if (didMutate) {\r\n if (!dispatchQueued) {\r\n queueMicrotaskShim(() => {\r\n // Deep clone the current subscription data\r\n const newSubscriptions: SubscriptionState = JSON.parse(\r\n JSON.stringify(internalState.currentSubscriptions)\r\n )\r\n // Figure out a smaller diff between original and current\r\n const [, patches] = produceWithPatches(\r\n previousSubscriptions,\r\n () => newSubscriptions\r\n )\r\n\r\n // Sync the store state for visibility\r\n mwApi.next(api.internalActions.subscriptionsUpdated(patches))\r\n // Save the cloned state for later reference\r\n previousSubscriptions = newSubscriptions\r\n dispatchQueued = false\r\n })\r\n dispatchQueued = true\r\n }\r\n\r\n const isSubscriptionSliceAction =\r\n !!action.type?.startsWith(subscriptionsPrefix)\r\n const isAdditionalSubscriptionAction =\r\n queryThunk.rejected.match(action) &&\r\n action.meta.condition &&\r\n !!action.meta.arg.subscribe\r\n\r\n const actionShouldContinue =\r\n !isSubscriptionSliceAction && !isAdditionalSubscriptionAction\r\n\r\n return [actionShouldContinue, false]\r\n }\r\n\r\n return [true, false]\r\n }\r\n}\r\n","import { isAnyOf, isFulfilled, isRejectedWithValue } from '@reduxjs/toolkit'\r\n\r\nimport type { FullTagDescription } from '../../endpointDefinitions'\r\nimport { calculateProvidedBy } from '../../endpointDefinitions'\r\nimport type { QueryCacheKey } from '../apiState'\r\nimport { QueryStatus } from '../apiState'\r\nimport { calculateProvidedByThunk } from '../buildThunks'\r\nimport type {\r\n SubMiddlewareApi,\r\n InternalHandlerBuilder,\r\n ApiMiddlewareInternalHandler,\r\n} from './types'\r\n\r\nexport const buildInvalidationByTagsHandler: InternalHandlerBuilder = ({\r\n reducerPath,\r\n context,\r\n context: { endpointDefinitions },\r\n mutationThunk,\r\n api,\r\n assertTagType,\r\n refetchQuery,\r\n}) => {\r\n const { removeQueryResult } = api.internalActions\r\n const isThunkActionWithTags = isAnyOf(\r\n isFulfilled(mutationThunk),\r\n isRejectedWithValue(mutationThunk)\r\n )\r\n\r\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n if (isThunkActionWithTags(action)) {\r\n invalidateTags(\r\n calculateProvidedByThunk(\r\n action,\r\n 'invalidatesTags',\r\n endpointDefinitions,\r\n assertTagType\r\n ),\r\n mwApi\r\n )\r\n }\r\n\r\n if (api.util.invalidateTags.match(action)) {\r\n invalidateTags(\r\n calculateProvidedBy(\r\n action.payload,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n assertTagType\r\n ),\r\n mwApi\r\n )\r\n }\r\n }\r\n\r\n function invalidateTags(\r\n tags: readonly FullTagDescription<string>[],\r\n mwApi: SubMiddlewareApi\r\n ) {\r\n const rootState = mwApi.getState()\r\n const state = rootState[reducerPath]\r\n\r\n const toInvalidate = api.util.selectInvalidatedBy(rootState, tags)\r\n\r\n context.batch(() => {\r\n const valuesArray = Array.from(toInvalidate.values())\r\n for (const { queryCacheKey } of valuesArray) {\r\n const querySubState = state.queries[queryCacheKey]\r\n const subscriptionSubState = state.subscriptions[queryCacheKey] ?? {}\r\n\r\n if (querySubState) {\r\n if (Object.keys(subscriptionSubState).length === 0) {\r\n mwApi.dispatch(\r\n removeQueryResult({\r\n queryCacheKey: queryCacheKey as QueryCacheKey,\r\n })\r\n )\r\n } else if (querySubState.status !== QueryStatus.uninitialized) {\r\n mwApi.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n return handler\r\n}\r\n","import type { QuerySubstateIdentifier, Subscribers } from '../apiState'\r\nimport { QueryStatus } from '../apiState'\r\nimport type {\r\n QueryStateMeta,\r\n SubMiddlewareApi,\r\n TimeoutId,\r\n InternalHandlerBuilder,\r\n ApiMiddlewareInternalHandler,\r\n InternalMiddlewareState,\r\n} from './types'\r\n\r\nexport const buildPollingHandler: InternalHandlerBuilder = ({\r\n reducerPath,\r\n queryThunk,\r\n api,\r\n refetchQuery,\r\n internalState,\r\n}) => {\r\n const currentPolls: QueryStateMeta<{\r\n nextPollTimestamp: number\r\n timeout?: TimeoutId\r\n pollingInterval: number\r\n }> = {}\r\n\r\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n if (\r\n api.internalActions.updateSubscriptionOptions.match(action) ||\r\n api.internalActions.unsubscribeQueryResult.match(action)\r\n ) {\r\n updatePollingInterval(action.payload, mwApi)\r\n }\r\n\r\n if (\r\n queryThunk.pending.match(action) ||\r\n (queryThunk.rejected.match(action) && action.meta.condition)\r\n ) {\r\n updatePollingInterval(action.meta.arg, mwApi)\r\n }\r\n\r\n if (\r\n queryThunk.fulfilled.match(action) ||\r\n (queryThunk.rejected.match(action) && !action.meta.condition)\r\n ) {\r\n startNextPoll(action.meta.arg, mwApi)\r\n }\r\n\r\n if (api.util.resetApiState.match(action)) {\r\n clearPolls()\r\n }\r\n }\r\n\r\n function startNextPoll(\r\n { queryCacheKey }: QuerySubstateIdentifier,\r\n api: SubMiddlewareApi\r\n ) {\r\n const state = api.getState()[reducerPath]\r\n const querySubState = state.queries[queryCacheKey]\r\n const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n\r\n if (!querySubState || querySubState.status === QueryStatus.uninitialized)\r\n return\r\n\r\n const lowestPollingInterval = findLowestPollingInterval(subscriptions)\r\n if (!Number.isFinite(lowestPollingInterval)) return\r\n\r\n const currentPoll = currentPolls[queryCacheKey]\r\n\r\n if (currentPoll?.timeout) {\r\n clearTimeout(currentPoll.timeout)\r\n currentPoll.timeout = undefined\r\n }\r\n\r\n const nextPollTimestamp = Date.now() + lowestPollingInterval\r\n\r\n const currentInterval: typeof currentPolls[number] = (currentPolls[\r\n queryCacheKey\r\n ] = {\r\n nextPollTimestamp,\r\n pollingInterval: lowestPollingInterval,\r\n timeout: setTimeout(() => {\r\n currentInterval!.timeout = undefined\r\n api.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n }, lowestPollingInterval),\r\n })\r\n }\r\n\r\n function updatePollingInterval(\r\n { queryCacheKey }: QuerySubstateIdentifier,\r\n api: SubMiddlewareApi\r\n ) {\r\n const state = api.getState()[reducerPath]\r\n const querySubState = state.queries[queryCacheKey]\r\n const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n\r\n if (!querySubState || querySubState.status === QueryStatus.uninitialized) {\r\n return\r\n }\r\n\r\n const lowestPollingInterval = findLowestPollingInterval(subscriptions)\r\n\r\n if (!Number.isFinite(lowestPollingInterval)) {\r\n cleanupPollForKey(queryCacheKey)\r\n return\r\n }\r\n\r\n const currentPoll = currentPolls[queryCacheKey]\r\n const nextPollTimestamp = Date.now() + lowestPollingInterval\r\n\r\n if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\r\n startNextPoll({ queryCacheKey }, api)\r\n }\r\n }\r\n\r\n function cleanupPollForKey(key: string) {\r\n const existingPoll = currentPolls[key]\r\n if (existingPoll?.timeout) {\r\n clearTimeout(existingPoll.timeout)\r\n }\r\n delete currentPolls[key]\r\n }\r\n\r\n function clearPolls() {\r\n for (const key of Object.keys(currentPolls)) {\r\n cleanupPollForKey(key)\r\n }\r\n }\r\n\r\n function findLowestPollingInterval(subscribers: Subscribers = {}) {\r\n let lowestPollingInterval = Number.POSITIVE_INFINITY\r\n for (let key in subscribers) {\r\n if (!!subscribers[key].pollingInterval) {\r\n lowestPollingInterval = Math.min(\r\n subscribers[key].pollingInterval!,\r\n lowestPollingInterval\r\n )\r\n }\r\n }\r\n\r\n return lowestPollingInterval\r\n }\r\n return handler\r\n}\r\n","import { isAsyncThunkAction, isFulfilled } from '@reduxjs/toolkit'\r\nimport type { AnyAction } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { BaseQueryFn, BaseQueryMeta } from '../../baseQueryTypes'\r\nimport { DefinitionType } from '../../endpointDefinitions'\r\nimport type { RootState } from '../apiState'\r\nimport type {\r\n MutationResultSelectorResult,\r\n QueryResultSelectorResult,\r\n} from '../buildSelectors'\r\nimport { getMutationCacheKey } from '../buildSlice'\r\nimport type { PatchCollection, Recipe } from '../buildThunks'\r\nimport type {\r\n ApiMiddlewareInternalHandler,\r\n InternalHandlerBuilder,\r\n PromiseWithKnownReason,\r\n SubMiddlewareApi,\r\n} from './types'\r\n\r\nexport type ReferenceCacheLifecycle = never\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n export interface QueryBaseLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends LifecycleApi<ReducerPath> {\r\n /**\r\n * Gets the current value of this cache entry.\r\n */\r\n getCacheEntry(): QueryResultSelectorResult<\r\n { type: DefinitionType.query } & BaseEndpointDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n ResultType\r\n >\r\n >\r\n /**\r\n * Updates the current cache entry value.\r\n * For documentation see `api.util.updateQueryData`.\r\n */\r\n updateCachedData(updateRecipe: Recipe<ResultType>): PatchCollection\r\n }\r\n\r\n export interface MutationBaseLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends LifecycleApi<ReducerPath> {\r\n /**\r\n * Gets the current value of this cache entry.\r\n */\r\n getCacheEntry(): MutationResultSelectorResult<\r\n { type: DefinitionType.mutation } & BaseEndpointDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n ResultType\r\n >\r\n >\r\n }\r\n\r\n export interface LifecycleApi<ReducerPath extends string = string> {\r\n /**\r\n * The dispatch method for the store\r\n */\r\n dispatch: ThunkDispatch<any, any, AnyAction>\r\n /**\r\n * A method to get the current state\r\n */\r\n getState(): RootState<any, any, ReducerPath>\r\n /**\r\n * `extra` as provided as `thunk.extraArgument` to the `configureStore` `getDefaultMiddleware` option.\r\n */\r\n extra: unknown\r\n /**\r\n * A unique ID generated for the mutation\r\n */\r\n requestId: string\r\n }\r\n\r\n export interface CacheLifecyclePromises<\r\n ResultType = unknown,\r\n MetaType = unknown\r\n > {\r\n /**\r\n * Promise that will resolve with the first value for this cache key.\r\n * This allows you to `await` until an actual value is in cache.\r\n *\r\n * If the cache entry is removed from the cache before any value has ever\r\n * been resolved, this Promise will reject with\r\n * `new Error('Promise never resolved before cacheEntryRemoved.')`\r\n * to prevent memory leaks.\r\n * You can just re-throw that error (or not handle it at all) -\r\n * it will be caught outside of `cacheEntryAdded`.\r\n *\r\n * If you don't interact with this promise, it will not throw.\r\n */\r\n cacheDataLoaded: PromiseWithKnownReason<\r\n {\r\n /**\r\n * The (transformed) query result.\r\n */\r\n data: ResultType\r\n /**\r\n * The `meta` returned by the `baseQuery`\r\n */\r\n meta: MetaType\r\n },\r\n typeof neverResolvedError\r\n >\r\n /**\r\n * Promise that allows you to wait for the point in time when the cache entry\r\n * has been removed from the cache, by not being used/subscribed to any more\r\n * in the application for too long or by dispatching `api.util.resetApiState`.\r\n */\r\n cacheEntryRemoved: Promise<void>\r\n }\r\n\r\n export interface QueryCacheLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>,\r\n CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>> {}\r\n\r\n export interface MutationCacheLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends MutationBaseLifecycleApi<\r\n QueryArg,\r\n BaseQuery,\r\n ResultType,\r\n ReducerPath\r\n >,\r\n CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>> {}\r\n\r\n interface QueryExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n > {\r\n onCacheEntryAdded?(\r\n arg: QueryArg,\r\n api: QueryCacheLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n ): Promise<void> | void\r\n }\r\n\r\n interface MutationExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n > {\r\n onCacheEntryAdded?(\r\n arg: QueryArg,\r\n api: MutationCacheLifecycleApi<\r\n QueryArg,\r\n BaseQuery,\r\n ResultType,\r\n ReducerPath\r\n >\r\n ): Promise<void> | void\r\n }\r\n}\r\n\r\nconst neverResolvedError = new Error(\r\n 'Promise never resolved before cacheEntryRemoved.'\r\n) as Error & {\r\n message: 'Promise never resolved before cacheEntryRemoved.'\r\n}\r\n\r\nexport const buildCacheLifecycleHandler: InternalHandlerBuilder = ({\r\n api,\r\n reducerPath,\r\n context,\r\n queryThunk,\r\n mutationThunk,\r\n internalState,\r\n}) => {\r\n const isQueryThunk = isAsyncThunkAction(queryThunk)\r\n const isMutationThunk = isAsyncThunkAction(mutationThunk)\r\n const isFulfilledThunk = isFulfilled(queryThunk, mutationThunk)\r\n\r\n type CacheLifecycle = {\r\n valueResolved?(value: { data: unknown; meta: unknown }): unknown\r\n cacheEntryRemoved(): void\r\n }\r\n const lifecycleMap: Record<string, CacheLifecycle> = {}\r\n\r\n const handler: ApiMiddlewareInternalHandler = (\r\n action,\r\n mwApi,\r\n stateBefore\r\n ) => {\r\n const cacheKey = getCacheKey(action)\r\n\r\n if (queryThunk.pending.match(action)) {\r\n const oldState = stateBefore[reducerPath].queries[cacheKey]\r\n const state = mwApi.getState()[reducerPath].queries[cacheKey]\r\n if (!oldState && state) {\r\n handleNewKey(\r\n action.meta.arg.endpointName,\r\n action.meta.arg.originalArgs,\r\n cacheKey,\r\n mwApi,\r\n action.meta.requestId\r\n )\r\n }\r\n } else if (mutationThunk.pending.match(action)) {\r\n const state = mwApi.getState()[reducerPath].mutations[cacheKey]\r\n if (state) {\r\n handleNewKey(\r\n action.meta.arg.endpointName,\r\n action.meta.arg.originalArgs,\r\n cacheKey,\r\n mwApi,\r\n action.meta.requestId\r\n )\r\n }\r\n } else if (isFulfilledThunk(action)) {\r\n const lifecycle = lifecycleMap[cacheKey]\r\n if (lifecycle?.valueResolved) {\r\n lifecycle.valueResolved({\r\n data: action.payload,\r\n meta: action.meta.baseQueryMeta,\r\n })\r\n delete lifecycle.valueResolved\r\n }\r\n } else if (\r\n api.internalActions.removeQueryResult.match(action) ||\r\n api.internalActions.removeMutationResult.match(action)\r\n ) {\r\n const lifecycle = lifecycleMap[cacheKey]\r\n if (lifecycle) {\r\n delete lifecycleMap[cacheKey]\r\n lifecycle.cacheEntryRemoved()\r\n }\r\n } else if (api.util.resetApiState.match(action)) {\r\n for (const [cacheKey, lifecycle] of Object.entries(lifecycleMap)) {\r\n delete lifecycleMap[cacheKey]\r\n lifecycle.cacheEntryRemoved()\r\n }\r\n }\r\n }\r\n\r\n function getCacheKey(action: any) {\r\n if (isQueryThunk(action)) return action.meta.arg.queryCacheKey\r\n if (isMutationThunk(action)) return action.meta.requestId\r\n if (api.internalActions.removeQueryResult.match(action))\r\n return action.payload.queryCacheKey\r\n if (api.internalActions.removeMutationResult.match(action))\r\n return getMutationCacheKey(action.payload)\r\n return ''\r\n }\r\n\r\n function handleNewKey(\r\n endpointName: string,\r\n originalArgs: any,\r\n queryCacheKey: string,\r\n mwApi: SubMiddlewareApi,\r\n requestId: string\r\n ) {\r\n const endpointDefinition = context.endpointDefinitions[endpointName]\r\n const onCacheEntryAdded = endpointDefinition?.onCacheEntryAdded\r\n if (!onCacheEntryAdded) return\r\n\r\n let lifecycle = {} as CacheLifecycle\r\n\r\n const cacheEntryRemoved = new Promise<void>((resolve) => {\r\n lifecycle.cacheEntryRemoved = resolve\r\n })\r\n const cacheDataLoaded: PromiseWithKnownReason<\r\n { data: unknown; meta: unknown },\r\n typeof neverResolvedError\r\n > = Promise.race([\r\n new Promise<{ data: unknown; meta: unknown }>((resolve) => {\r\n lifecycle.valueResolved = resolve\r\n }),\r\n cacheEntryRemoved.then(() => {\r\n throw neverResolvedError\r\n }),\r\n ])\r\n // prevent uncaught promise rejections from happening.\r\n // if the original promise is used in any way, that will create a new promise that will throw again\r\n cacheDataLoaded.catch(() => {})\r\n lifecycleMap[queryCacheKey] = lifecycle\r\n const selector = (api.endpoints[endpointName] as any).select(\r\n endpointDefinition.type === DefinitionType.query\r\n ? originalArgs\r\n : queryCacheKey\r\n )\r\n\r\n const extra = mwApi.dispatch((_, __, extra) => extra)\r\n const lifecycleApi = {\r\n ...mwApi,\r\n getCacheEntry: () => selector(mwApi.getState()),\r\n requestId,\r\n extra,\r\n updateCachedData: (endpointDefinition.type === DefinitionType.query\r\n ? (updateRecipe: Recipe<any>) =>\r\n mwApi.dispatch(\r\n api.util.updateQueryData(\r\n endpointName as never,\r\n originalArgs,\r\n updateRecipe\r\n )\r\n )\r\n : undefined) as any,\r\n\r\n cacheDataLoaded,\r\n cacheEntryRemoved,\r\n }\r\n\r\n const runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi)\r\n // if a `neverResolvedError` was thrown, but not handled in the running handler, do not let it leak out further\r\n Promise.resolve(runningHandler).catch((e) => {\r\n if (e === neverResolvedError) return\r\n throw e\r\n })\r\n }\r\n\r\n return handler\r\n}\r\n","import { isPending, isRejected, isFulfilled } from '@reduxjs/toolkit'\r\nimport type {\r\n BaseQueryError,\r\n BaseQueryFn,\r\n BaseQueryMeta,\r\n} from '../../baseQueryTypes'\r\nimport { DefinitionType } from '../../endpointDefinitions'\r\nimport type { QueryFulfilledRejectionReason } from '../../endpointDefinitions'\r\nimport type { Recipe } from '../buildThunks'\r\nimport type {\r\n PromiseWithKnownReason,\r\n PromiseConstructorWithKnownReason,\r\n InternalHandlerBuilder,\r\n ApiMiddlewareInternalHandler,\r\n} from './types'\r\n\r\nexport type ReferenceQueryLifecycle = never\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n export interface QueryLifecyclePromises<\r\n ResultType,\r\n BaseQuery extends BaseQueryFn\r\n > {\r\n /**\r\n * Promise that will resolve with the (transformed) query result.\r\n *\r\n * If the query fails, this promise will reject with the error.\r\n *\r\n * This allows you to `await` for the query to finish.\r\n *\r\n * If you don't interact with this promise, it will not throw.\r\n */\r\n queryFulfilled: PromiseWithKnownReason<\r\n {\r\n /**\r\n * The (transformed) query result.\r\n */\r\n data: ResultType\r\n /**\r\n * The `meta` returned by the `baseQuery`\r\n */\r\n meta: BaseQueryMeta<BaseQuery>\r\n },\r\n QueryFulfilledRejectionReason<BaseQuery>\r\n >\r\n }\r\n\r\n type QueryFulfilledRejectionReason<BaseQuery extends BaseQueryFn> =\r\n | {\r\n error: BaseQueryError<BaseQuery>\r\n /**\r\n * If this is `false`, that means this error was returned from the `baseQuery` or `queryFn` in a controlled manner.\r\n */\r\n isUnhandledError: false\r\n /**\r\n * The `meta` returned by the `baseQuery`\r\n */\r\n meta: BaseQueryMeta<BaseQuery>\r\n }\r\n | {\r\n error: unknown\r\n meta?: undefined\r\n /**\r\n * If this is `true`, that means that this error is the result of `baseQueryFn`, `queryFn`, `transformResponse` or `transformErrorResponse` throwing an error instead of handling it properly.\r\n * There can not be made any assumption about the shape of `error`.\r\n */\r\n isUnhandledError: true\r\n }\r\n\r\n interface QueryExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n > {\r\n /**\r\n * A function that is called when the individual query is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\r\n *\r\n * Can be used to perform side-effects throughout the lifecycle of the query.\r\n *\r\n * @example\r\n * ```ts\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n * import { messageCreated } from './notificationsSlice\r\n * export interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({\r\n * baseUrl: '/',\r\n * }),\r\n * endpoints: (build) => ({\r\n * getPost: build.query<Post, number>({\r\n * query: (id) => `post/${id}`,\r\n * async onQueryStarted(id, { dispatch, queryFulfilled }) {\r\n * // `onStart` side-effect\r\n * dispatch(messageCreated('Fetching posts...'))\r\n * try {\r\n * const { data } = await queryFulfilled\r\n * // `onSuccess` side-effect\r\n * dispatch(messageCreated('Posts received!'))\r\n * } catch (err) {\r\n * // `onError` side-effect\r\n * dispatch(messageCreated('Error fetching posts!'))\r\n * }\r\n * }\r\n * }),\r\n * }),\r\n * })\r\n * ```\r\n */\r\n onQueryStarted?(\r\n arg: QueryArg,\r\n api: QueryLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n ): Promise<void> | void\r\n }\r\n\r\n interface MutationExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n > {\r\n /**\r\n * A function that is called when the individual mutation is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\r\n *\r\n * Can be used for `optimistic updates`.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n * export interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({\r\n * baseUrl: '/',\r\n * }),\r\n * tagTypes: ['Post'],\r\n * endpoints: (build) => ({\r\n * getPost: build.query<Post, number>({\r\n * query: (id) => `post/${id}`,\r\n * providesTags: ['Post'],\r\n * }),\r\n * updatePost: build.mutation<void, Pick<Post, 'id'> & Partial<Post>>({\r\n * query: ({ id, ...patch }) => ({\r\n * url: `post/${id}`,\r\n * method: 'PATCH',\r\n * body: patch,\r\n * }),\r\n * invalidatesTags: ['Post'],\r\n * async onQueryStarted({ id, ...patch }, { dispatch, queryFulfilled }) {\r\n * const patchResult = dispatch(\r\n * api.util.updateQueryData('getPost', id, (draft) => {\r\n * Object.assign(draft, patch)\r\n * })\r\n * )\r\n * try {\r\n * await queryFulfilled\r\n * } catch {\r\n * patchResult.undo()\r\n * }\r\n * },\r\n * }),\r\n * }),\r\n * })\r\n * ```\r\n */\r\n onQueryStarted?(\r\n arg: QueryArg,\r\n api: MutationLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n ): Promise<void> | void\r\n }\r\n\r\n export interface QueryLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>,\r\n QueryLifecyclePromises<ResultType, BaseQuery> {}\r\n\r\n export interface MutationLifecycleApi<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType,\r\n ReducerPath extends string = string\r\n > extends MutationBaseLifecycleApi<\r\n QueryArg,\r\n BaseQuery,\r\n ResultType,\r\n ReducerPath\r\n >,\r\n QueryLifecyclePromises<ResultType, BaseQuery> {}\r\n}\r\n\r\nexport const buildQueryLifecycleHandler: InternalHandlerBuilder = ({\r\n api,\r\n context,\r\n queryThunk,\r\n mutationThunk,\r\n}) => {\r\n const isPendingThunk = isPending(queryThunk, mutationThunk)\r\n const isRejectedThunk = isRejected(queryThunk, mutationThunk)\r\n const isFullfilledThunk = isFulfilled(queryThunk, mutationThunk)\r\n\r\n type CacheLifecycle = {\r\n resolve(value: { data: unknown; meta: unknown }): unknown\r\n reject(value: QueryFulfilledRejectionReason<any>): unknown\r\n }\r\n const lifecycleMap: Record<string, CacheLifecycle> = {}\r\n\r\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n if (isPendingThunk(action)) {\r\n const {\r\n requestId,\r\n arg: { endpointName, originalArgs },\r\n } = action.meta\r\n const endpointDefinition = context.endpointDefinitions[endpointName]\r\n const onQueryStarted = endpointDefinition?.onQueryStarted\r\n if (onQueryStarted) {\r\n const lifecycle = {} as CacheLifecycle\r\n const queryFulfilled =\r\n new (Promise as PromiseConstructorWithKnownReason)<\r\n { data: unknown; meta: unknown },\r\n QueryFulfilledRejectionReason<any>\r\n >((resolve, reject) => {\r\n lifecycle.resolve = resolve\r\n lifecycle.reject = reject\r\n })\r\n // prevent uncaught promise rejections from happening.\r\n // if the original promise is used in any way, that will create a new promise that will throw again\r\n queryFulfilled.catch(() => {})\r\n lifecycleMap[requestId] = lifecycle\r\n const selector = (api.endpoints[endpointName] as any).select(\r\n endpointDefinition.type === DefinitionType.query\r\n ? originalArgs\r\n : requestId\r\n )\r\n\r\n const extra = mwApi.dispatch((_, __, extra) => extra)\r\n const lifecycleApi = {\r\n ...mwApi,\r\n getCacheEntry: () => selector(mwApi.getState()),\r\n requestId,\r\n extra,\r\n updateCachedData: (endpointDefinition.type === DefinitionType.query\r\n ? (updateRecipe: Recipe<any>) =>\r\n mwApi.dispatch(\r\n api.util.updateQueryData(\r\n endpointName as never,\r\n originalArgs,\r\n updateRecipe\r\n )\r\n )\r\n : undefined) as any,\r\n queryFulfilled,\r\n }\r\n onQueryStarted(originalArgs, lifecycleApi)\r\n }\r\n } else if (isFullfilledThunk(action)) {\r\n const { requestId, baseQueryMeta } = action.meta\r\n lifecycleMap[requestId]?.resolve({\r\n data: action.payload,\r\n meta: baseQueryMeta,\r\n })\r\n delete lifecycleMap[requestId]\r\n } else if (isRejectedThunk(action)) {\r\n const { requestId, rejectedWithValue, baseQueryMeta } = action.meta\r\n lifecycleMap[requestId]?.reject({\r\n error: action.payload ?? action.error,\r\n isUnhandledError: !rejectedWithValue,\r\n meta: baseQueryMeta as any,\r\n })\r\n delete lifecycleMap[requestId]\r\n }\r\n }\r\n\r\n return handler\r\n}\r\n","import type { InternalHandlerBuilder } from './types'\r\n\r\nexport const buildDevCheckHandler: InternalHandlerBuilder = ({\r\n api,\r\n context: { apiUid },\r\n reducerPath,\r\n}) => {\r\n return (action, mwApi) => {\r\n if (api.util.resetApiState.match(action)) {\r\n // dispatch after api reset\r\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid))\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (\r\n api.internalActions.middlewareRegistered.match(action) &&\r\n action.payload === apiUid &&\r\n mwApi.getState()[reducerPath]?.config?.middlewareRegistered ===\r\n 'conflict'\r\n ) {\r\n console.warn(`There is a mismatch between slice and middleware for the reducerPath \"${reducerPath}\".\r\nYou can only have one api per reducer path, this will lead to crashes in various situations!${\r\n reducerPath === 'api'\r\n ? `\r\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!`\r\n : ''\r\n }`)\r\n }\r\n }\r\n }\r\n}\r\n","import type { AnyAction, Middleware, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { createAction } from '@reduxjs/toolkit'\r\n\r\nimport type {\r\n EndpointDefinitions,\r\n FullTagDescription,\r\n} from '../../endpointDefinitions'\r\nimport type { QueryStatus, QuerySubState, RootState } from '../apiState'\r\nimport type { QueryThunkArg } from '../buildThunks'\r\nimport { buildCacheCollectionHandler } from './cacheCollection'\r\nimport { buildInvalidationByTagsHandler } from './invalidationByTags'\r\nimport { buildPollingHandler } from './polling'\r\nimport type {\r\n BuildMiddlewareInput,\r\n InternalHandlerBuilder,\r\n InternalMiddlewareState,\r\n} from './types'\r\nimport { buildWindowEventHandler } from './windowEventHandling'\r\nimport { buildCacheLifecycleHandler } from './cacheLifecycle'\r\nimport { buildQueryLifecycleHandler } from './queryLifecycle'\r\nimport { buildDevCheckHandler } from './devMiddleware'\r\nimport { buildBatchedActionsHandler } from './batchActions'\r\n\r\nexport function buildMiddleware<\r\n Definitions extends EndpointDefinitions,\r\n ReducerPath extends string,\r\n TagTypes extends string\r\n>(input: BuildMiddlewareInput<Definitions, ReducerPath, TagTypes>) {\r\n const { reducerPath, queryThunk, api, context } = input\r\n const { apiUid } = context\r\n\r\n const actions = {\r\n invalidateTags: createAction<\r\n Array<TagTypes | FullTagDescription<TagTypes>>\r\n >(`${reducerPath}/invalidateTags`),\r\n }\r\n\r\n const isThisApiSliceAction = (action: AnyAction) => {\r\n return (\r\n !!action &&\r\n typeof action.type === 'string' &&\r\n action.type.startsWith(`${reducerPath}/`)\r\n )\r\n }\r\n\r\n const handlerBuilders: InternalHandlerBuilder[] = [\r\n buildDevCheckHandler,\r\n buildCacheCollectionHandler,\r\n buildInvalidationByTagsHandler,\r\n buildPollingHandler,\r\n buildCacheLifecycleHandler,\r\n buildQueryLifecycleHandler,\r\n ]\r\n\r\n const middleware: Middleware<\r\n {},\r\n RootState<Definitions, string, ReducerPath>,\r\n ThunkDispatch<any, any, AnyAction>\r\n > = (mwApi) => {\r\n let initialized = false\r\n\r\n let internalState: InternalMiddlewareState = {\r\n currentSubscriptions: {},\r\n }\r\n\r\n const builderArgs = {\r\n ...(input as any as BuildMiddlewareInput<\r\n EndpointDefinitions,\r\n string,\r\n string\r\n >),\r\n internalState,\r\n refetchQuery,\r\n }\r\n\r\n const handlers = handlerBuilders.map((build) => build(builderArgs))\r\n\r\n const batchedActionsHandler = buildBatchedActionsHandler(builderArgs)\r\n const windowEventsHandler = buildWindowEventHandler(builderArgs)\r\n\r\n return (next) => {\r\n return (action) => {\r\n if (!initialized) {\r\n initialized = true\r\n // dispatch before any other action\r\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid))\r\n }\r\n\r\n const mwApiWithNext = { ...mwApi, next }\r\n\r\n const stateBefore = mwApi.getState()\r\n\r\n const [actionShouldContinue, hasSubscription] = batchedActionsHandler(\r\n action,\r\n mwApiWithNext,\r\n stateBefore\r\n )\r\n\r\n let res: any\r\n\r\n if (actionShouldContinue) {\r\n res = next(action)\r\n } else {\r\n res = hasSubscription\r\n }\r\n\r\n if (!!mwApi.getState()[reducerPath]) {\r\n // Only run these checks if the middleware is registered okay\r\n\r\n // This looks for actions that aren't specific to the API slice\r\n windowEventsHandler(action, mwApiWithNext, stateBefore)\r\n\r\n if (\r\n isThisApiSliceAction(action) ||\r\n context.hasRehydrationInfo(action)\r\n ) {\r\n // Only run these additional checks if the actions are part of the API slice,\r\n // or the action has hydration-related data\r\n for (let handler of handlers) {\r\n handler(action, mwApiWithNext, stateBefore)\r\n }\r\n }\r\n }\r\n\r\n return res\r\n }\r\n }\r\n }\r\n\r\n return { middleware, actions }\r\n\r\n function refetchQuery(\r\n querySubState: Exclude<\r\n QuerySubState<any>,\r\n { status: QueryStatus.uninitialized }\r\n >,\r\n queryCacheKey: string,\r\n override: Partial<QueryThunkArg> = {}\r\n ) {\r\n return queryThunk({\r\n type: 'query',\r\n endpointName: querySubState.endpointName,\r\n originalArgs: querySubState.originalArgs,\r\n subscribe: false,\r\n forceRefetch: true,\r\n queryCacheKey: queryCacheKey as any,\r\n ...override,\r\n })\r\n }\r\n}\r\n","import { QueryStatus } from '../apiState'\r\nimport type { QueryCacheKey } from '../apiState'\r\nimport { onFocus, onOnline } from '../setupListeners'\r\nimport type {\r\n ApiMiddlewareInternalHandler,\r\n InternalHandlerBuilder,\r\n SubMiddlewareApi,\r\n} from './types'\r\n\r\nexport const buildWindowEventHandler: InternalHandlerBuilder = ({\r\n reducerPath,\r\n context,\r\n api,\r\n refetchQuery,\r\n internalState,\r\n}) => {\r\n const { removeQueryResult } = api.internalActions\r\n\r\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n if (onFocus.match(action)) {\r\n refetchValidQueries(mwApi, 'refetchOnFocus')\r\n }\r\n if (onOnline.match(action)) {\r\n refetchValidQueries(mwApi, 'refetchOnReconnect')\r\n }\r\n }\r\n\r\n function refetchValidQueries(\r\n api: SubMiddlewareApi,\r\n type: 'refetchOnFocus' | 'refetchOnReconnect'\r\n ) {\r\n const state = api.getState()[reducerPath]\r\n const queries = state.queries\r\n const subscriptions = internalState.currentSubscriptions\r\n\r\n context.batch(() => {\r\n for (const queryCacheKey of Object.keys(subscriptions)) {\r\n const querySubState = queries[queryCacheKey]\r\n const subscriptionSubState = subscriptions[queryCacheKey]\r\n\r\n if (!subscriptionSubState || !querySubState) continue\r\n\r\n const shouldRefetch =\r\n Object.values(subscriptionSubState).some(\r\n (sub) => sub[type] === true\r\n ) ||\r\n (Object.values(subscriptionSubState).every(\r\n (sub) => sub[type] === undefined\r\n ) &&\r\n state.config[type])\r\n\r\n if (shouldRefetch) {\r\n if (Object.keys(subscriptionSubState).length === 0) {\r\n api.dispatch(\r\n removeQueryResult({\r\n queryCacheKey: queryCacheKey as QueryCacheKey,\r\n })\r\n )\r\n } else if (querySubState.status !== QueryStatus.uninitialized) {\r\n api.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n return handler\r\n}\r\n","export type Id<T> = { [K in keyof T]: T[K] } & {}\r\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> &\r\n Required<Pick<T, K>>\r\nexport type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never\r\nexport function assertCast<T>(v: any): asserts v is T {}\r\n\r\nexport function safeAssign<T extends object>(\r\n target: T,\r\n ...args: Array<Partial<NoInfer<T>>>\r\n) {\r\n Object.assign(target, ...args)\r\n}\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection<U> = (\r\n U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n ? I\r\n : never\r\n\r\nexport type NonOptionalKeys<T> = {\r\n [K in keyof T]-?: undefined extends T[K] ? never : K\r\n}[keyof T]\r\n\r\nexport type HasRequiredProps<T, True, False> = NonOptionalKeys<T> extends never\r\n ? False\r\n : True\r\n\r\nexport type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>\r\n\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type NonUndefined<T> = T extends undefined ? never : T\r\n\r\nexport type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T\r\n\r\nexport type MaybePromise<T> = T | PromiseLike<T>\r\n\r\nexport type OmitFromUnion<T, K extends keyof T> = T extends any\r\n ? Omit<T, K>\r\n : never\r\n\r\nexport type IsAny<T, True, False = never> = true | false extends (\r\n T extends never ? true : false\r\n)\r\n ? True\r\n : False\r\n\r\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>\r\n","/**\r\n * Note: this file should import all other files for type discovery and declaration merging\r\n */\r\nimport type {\r\n PatchQueryDataThunk,\r\n UpdateQueryDataThunk,\r\n UpsertQueryDataThunk,\r\n} from './buildThunks'\r\nimport { buildThunks } from './buildThunks'\r\nimport type {\r\n ActionCreatorWithPayload,\r\n AnyAction,\r\n Middleware,\r\n Reducer,\r\n ThunkAction,\r\n ThunkDispatch,\r\n} from '@reduxjs/toolkit'\r\nimport type {\r\n EndpointDefinitions,\r\n QueryArgFrom,\r\n QueryDefinition,\r\n MutationDefinition,\r\n AssertTagTypes,\r\n TagDescription,\r\n} from '../endpointDefinitions'\r\nimport { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'\r\nimport type {\r\n CombinedState,\r\n QueryKeys,\r\n MutationKeys,\r\n RootState,\r\n} from './apiState'\r\nimport type { Api, Module } from '../apiTypes'\r\nimport { onFocus, onFocusLost, onOnline, onOffline } from './setupListeners'\r\nimport { buildSlice } from './buildSlice'\r\nimport { buildMiddleware } from './buildMiddleware'\r\nimport { buildSelectors } from './buildSelectors'\r\nimport type {\r\n MutationActionCreatorResult,\r\n QueryActionCreatorResult,\r\n} from './buildInitiate'\r\nimport { buildInitiate } from './buildInitiate'\r\nimport { assertCast, safeAssign } from '../tsHelpers'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { SliceActions } from './buildSlice'\r\nimport type { BaseQueryFn } from '../baseQueryTypes'\r\n\r\nimport type { ReferenceCacheLifecycle } from './buildMiddleware/cacheLifecycle'\r\nimport type { ReferenceQueryLifecycle } from './buildMiddleware/queryLifecycle'\r\nimport type { ReferenceCacheCollection } from './buildMiddleware/cacheCollection'\r\nimport { enablePatches } from 'immer'\r\n\r\n/**\r\n * `ifOlderThan` - (default: `false` | `number`) - _number is value in seconds_\r\n * - If specified, it will only run the query if the difference between `new Date()` and the last `fulfilledTimeStamp` is greater than the given value\r\n *\r\n * @overloadSummary\r\n * `force`\r\n * - If `force: true`, it will ignore the `ifOlderThan` value if it is set and the query will be run even if it exists in the cache.\r\n */\r\nexport type PrefetchOptions =\r\n | {\r\n ifOlderThan?: false | number\r\n }\r\n | { force?: boolean }\r\n\r\nexport const coreModuleName = /* @__PURE__ */ Symbol()\r\nexport type CoreModule =\r\n | typeof coreModuleName\r\n | ReferenceCacheLifecycle\r\n | ReferenceQueryLifecycle\r\n | ReferenceCacheCollection\r\n\r\nexport interface ThunkWithReturnValue<T> extends ThunkAction<T, any, any, AnyAction> {}\r\n\r\ndeclare module '../apiTypes' {\r\n export interface ApiModules<\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n BaseQuery extends BaseQueryFn,\r\n Definitions extends EndpointDefinitions,\r\n ReducerPath extends string,\r\n TagTypes extends string\r\n > {\r\n [coreModuleName]: {\r\n /**\r\n * This api's reducer should be mounted at `store[api.reducerPath]`.\r\n *\r\n * @example\r\n * ```ts\r\n * configureStore({\r\n * reducer: {\r\n * [api.reducerPath]: api.reducer,\r\n * },\r\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n * })\r\n * ```\r\n */\r\n reducerPath: ReducerPath\r\n /**\r\n * Internal actions not part of the public API. Note: These are subject to change at any given time.\r\n */\r\n internalActions: InternalActions\r\n /**\r\n * A standard redux reducer that enables core functionality. Make sure it's included in your store.\r\n *\r\n * @example\r\n * ```ts\r\n * configureStore({\r\n * reducer: {\r\n * [api.reducerPath]: api.reducer,\r\n * },\r\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n * })\r\n * ```\r\n */\r\n reducer: Reducer<\r\n CombinedState<Definitions, TagTypes, ReducerPath>,\r\n AnyAction\r\n >\r\n /**\r\n * This is a standard redux middleware and is responsible for things like polling, garbage collection and a handful of other things. Make sure it's included in your store.\r\n *\r\n * @example\r\n * ```ts\r\n * configureStore({\r\n * reducer: {\r\n * [api.reducerPath]: api.reducer,\r\n * },\r\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n * })\r\n * ```\r\n */\r\n middleware: Middleware<\r\n {},\r\n RootState<Definitions, string, ReducerPath>,\r\n ThunkDispatch<any, any, AnyAction>\r\n >\r\n /**\r\n * A collection of utility thunks for various situations.\r\n */\r\n util: {\r\n /**\r\n * This method had to be removed due to a conceptual bug in RTK.\r\n *\r\n * Despite TypeScript errors, it will continue working in the \"buggy\" way it did\r\n * before in production builds and will be removed in the next major release.\r\n *\r\n * Nonetheless, you should immediately replace it with the new recommended approach.\r\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.\r\n *\r\n * Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n * @deprecated\r\n */\r\n getRunningOperationPromises: never // this is now types as `never` to immediately throw TS errors on use, but still allow for a comment\r\n\r\n /**\r\n * This method had to be removed due to a conceptual bug in RTK.\r\n * It has been replaced by `api.util.getRunningQueryThunk` and `api.util.getRunningMutationThunk`.\r\n * Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n * @deprecated\r\n */\r\n getRunningOperationPromise: never // this is now types as `never` to immediately throw TS errors on use, but still allow for a comment\r\n\r\n /**\r\n * A thunk that (if dispatched) will return a specific running query, identified\r\n * by `endpointName` and `args`.\r\n * If that query is not running, dispatching the thunk will result in `undefined`.\r\n *\r\n * Can be used to await a specific query triggered in any way,\r\n * including via hook calls or manually dispatching `initiate` actions.\r\n *\r\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n */\r\n getRunningQueryThunk<EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n args: QueryArgFrom<Definitions[EndpointName]>\r\n ): ThunkWithReturnValue<\r\n | QueryActionCreatorResult<\r\n Definitions[EndpointName] & { type: 'query' }\r\n >\r\n | undefined\r\n >\r\n\r\n /**\r\n * A thunk that (if dispatched) will return a specific running mutation, identified\r\n * by `endpointName` and `fixedCacheKey` or `requestId`.\r\n * If that mutation is not running, dispatching the thunk will result in `undefined`.\r\n *\r\n * Can be used to await a specific mutation triggered in any way,\r\n * including via hook trigger functions or manually dispatching `initiate` actions.\r\n *\r\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n */\r\n getRunningMutationThunk<EndpointName extends MutationKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n fixedCacheKeyOrRequestId: string\r\n ): ThunkWithReturnValue<\r\n | MutationActionCreatorResult<\r\n Definitions[EndpointName] & { type: 'mutation' }\r\n >\r\n | undefined\r\n >\r\n\r\n /**\r\n * A thunk that (if dispatched) will return all running queries.\r\n *\r\n * Useful for SSR scenarios to await all running queries triggered in any way,\r\n * including via hook calls or manually dispatching `initiate` actions.\r\n *\r\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n */\r\n getRunningQueriesThunk(): ThunkWithReturnValue<\r\n Array<QueryActionCreatorResult<any>>\r\n >\r\n\r\n /**\r\n * A thunk that (if dispatched) will return all running mutations.\r\n *\r\n * Useful for SSR scenarios to await all running mutations triggered in any way,\r\n * including via hook calls or manually dispatching `initiate` actions.\r\n *\r\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n */\r\n getRunningMutationsThunk(): ThunkWithReturnValue<\r\n Array<MutationActionCreatorResult<any>>\r\n >\r\n\r\n /**\r\n * A Redux thunk that can be used to manually trigger pre-fetching of data.\r\n *\r\n * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a set of options used to determine if the data actually should be re-fetched based on cache staleness.\r\n *\r\n * React Hooks users will most likely never need to use this directly, as the `usePrefetch` hook will dispatch this thunk internally as needed when you call the prefetching function supplied by the hook.\r\n *\r\n * @example\r\n *\r\n * ```ts no-transpile\r\n * dispatch(api.util.prefetch('getPosts', undefined, { force: true }))\r\n * ```\r\n */\r\n prefetch<EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n arg: QueryArgFrom<Definitions[EndpointName]>,\r\n options: PrefetchOptions\r\n ): ThunkAction<void, any, any, AnyAction>\r\n /**\r\n * A Redux thunk action creator that, when dispatched, creates and applies a set of JSON diff/patch objects to the current state. This immediately updates the Redux state with those changes.\r\n *\r\n * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and an `updateRecipe` callback function. The callback receives an Immer-wrapped `draft` of the current state, and may modify the draft to match the expected results after the mutation completes successfully.\r\n *\r\n * The thunk executes _synchronously_, and returns an object containing `{patches: Patch[], inversePatches: Patch[], undo: () => void}`. The `patches` and `inversePatches` are generated using Immer's [`produceWithPatches` method](https://immerjs.github.io/immer/patches).\r\n *\r\n * This is typically used as the first step in implementing optimistic updates. The generated `inversePatches` can be used to revert the updates by calling `dispatch(patchQueryData(endpointName, args, inversePatches))`. Alternatively, the `undo` method can be called directly to achieve the same effect.\r\n *\r\n * Note that the first two arguments (`endpointName` and `args`) are used to determine which existing cache entry to update. If no existing cache entry is found, the `updateRecipe` callback will not run.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * const patchCollection = dispatch(\r\n * api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\r\n * draftPosts.push({ id: 1, name: 'Teddy' })\r\n * })\r\n * )\r\n * ```\r\n */\r\n updateQueryData: UpdateQueryDataThunk<\r\n Definitions,\r\n RootState<Definitions, string, ReducerPath>\r\n >\r\n /** @deprecated renamed to `updateQueryData` */\r\n updateQueryResult: UpdateQueryDataThunk<\r\n Definitions,\r\n RootState<Definitions, string, ReducerPath>\r\n >\r\n /**\r\n * A Redux thunk action creator that, when dispatched, acts as an artificial API request to upsert a value into the cache.\r\n *\r\n * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and the data to upsert.\r\n *\r\n * If no cache entry for that cache key exists, a cache entry will be created and the data added. If a cache entry already exists, this will _overwrite_ the existing cache entry data.\r\n *\r\n * The thunk executes _asynchronously_, and returns a promise that resolves when the store has been updated.\r\n *\r\n * If dispatched while an actual request is in progress, both the upsert and request will be handled as soon as they resolve, resulting in a \"last result wins\" update behavior.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * await dispatch(\r\n * api.util.upsertQueryData('getPost', {id: 1}, {id: 1, text: \"Hello!\"})\r\n * )\r\n * ```\r\n */\r\n upsertQueryData: UpsertQueryDataThunk<\r\n Definitions,\r\n RootState<Definitions, string, ReducerPath>\r\n >\r\n /**\r\n * A Redux thunk that applies a JSON diff/patch array to the cached data for a given query result. This immediately updates the Redux state with those changes.\r\n *\r\n * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a JSON diff/patch array as produced by Immer's `produceWithPatches`.\r\n *\r\n * This is typically used as the second step in implementing optimistic updates. If a request fails, the optimistically-applied changes can be reverted by dispatching `patchQueryData` with the `inversePatches` that were generated by `updateQueryData` earlier.\r\n *\r\n * In cases where it is desired to simply revert the previous changes, it may be preferable to call the `undo` method returned from dispatching `updateQueryData` instead.\r\n *\r\n * @example\r\n * ```ts\r\n * const patchCollection = dispatch(\r\n * api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\r\n * draftPosts.push({ id: 1, name: 'Teddy' })\r\n * })\r\n * )\r\n *\r\n * // later\r\n * dispatch(\r\n * api.util.patchQueryData('getPosts', undefined, patchCollection.inversePatches)\r\n * )\r\n *\r\n * // or\r\n * patchCollection.undo()\r\n * ```\r\n */\r\n patchQueryData: PatchQueryDataThunk<\r\n Definitions,\r\n RootState<Definitions, string, ReducerPath>\r\n >\r\n /** @deprecated renamed to `patchQueryData` */\r\n patchQueryResult: PatchQueryDataThunk<\r\n Definitions,\r\n RootState<Definitions, string, ReducerPath>\r\n >\r\n /**\r\n * A Redux action creator that can be dispatched to manually reset the api state completely. This will immediately remove all existing cache entries, and all queries will be considered 'uninitialized'.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * dispatch(api.util.resetApiState())\r\n * ```\r\n */\r\n resetApiState: SliceActions['resetApiState']\r\n /**\r\n * A Redux action creator that can be used to manually invalidate cache tags for [automated re-fetching](../../usage/automated-refetching.mdx).\r\n *\r\n * The action creator accepts one argument: the cache tags to be invalidated. It returns an action with those tags as a payload, and the corresponding `invalidateTags` action type for the api.\r\n *\r\n * Dispatching the result of this action creator will [invalidate](../../usage/automated-refetching.mdx#invalidating-cache-data) the given tags, causing queries to automatically re-fetch if they are subscribed to cache data that [provides](../../usage/automated-refetching.mdx#providing-cache-data) the corresponding tags.\r\n *\r\n * The array of tags provided to the action creator should be in one of the following formats, where `TagType` is equal to a string provided to the [`tagTypes`](../createApi.mdx#tagtypes) property of the api:\r\n *\r\n * - `[TagType]`\r\n * - `[{ type: TagType }]`\r\n * - `[{ type: TagType, id: number | string }]`\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * dispatch(api.util.invalidateTags(['Post']))\r\n * dispatch(api.util.invalidateTags([{ type: 'Post', id: 1 }]))\r\n * dispatch(\r\n * api.util.invalidateTags([\r\n * { type: 'Post', id: 1 },\r\n * { type: 'Post', id: 'LIST' },\r\n * ])\r\n * )\r\n * ```\r\n */\r\n invalidateTags: ActionCreatorWithPayload<\r\n Array<TagDescription<TagTypes>>,\r\n string\r\n >\r\n\r\n /**\r\n * A function to select all `{ endpointName, originalArgs, queryCacheKey }` combinations that would be invalidated by a specific set of tags.\r\n *\r\n * Can be used for mutations that want to do optimistic updates instead of invalidating a set of tags, but don't know exactly what they need to update.\r\n */\r\n selectInvalidatedBy: (\r\n state: RootState<Definitions, string, ReducerPath>,\r\n tags: ReadonlyArray<TagDescription<TagTypes>>\r\n ) => Array<{\r\n endpointName: string\r\n originalArgs: any\r\n queryCacheKey: string\r\n }>\r\n }\r\n /**\r\n * Endpoints based on the input endpoints provided to `createApi`, containing `select` and `action matchers`.\r\n */\r\n endpoints: {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n any,\r\n any,\r\n any,\r\n any,\r\n any\r\n >\r\n ? ApiEndpointQuery<Definitions[K], Definitions>\r\n : Definitions[K] extends MutationDefinition<any, any, any, any, any>\r\n ? ApiEndpointMutation<Definitions[K], Definitions>\r\n : never\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface ApiEndpointQuery<\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definition extends QueryDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n> {\r\n name: string\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types: NonNullable<Definition['Types']>\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport interface ApiEndpointMutation<\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definition extends MutationDefinition<any, any, any, any, any>,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Definitions extends EndpointDefinitions\r\n> {\r\n name: string\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types: NonNullable<Definition['Types']>\r\n}\r\n\r\nexport type ListenerActions = {\r\n /**\r\n * Will cause the RTK Query middleware to trigger any refetchOnReconnect-related behavior\r\n * @link https://rtk-query-docs.netlify.app/api/setupListeners\r\n */\r\n onOnline: typeof onOnline\r\n onOffline: typeof onOffline\r\n /**\r\n * Will cause the RTK Query middleware to trigger any refetchOnFocus-related behavior\r\n * @link https://rtk-query-docs.netlify.app/api/setupListeners\r\n */\r\n onFocus: typeof onFocus\r\n onFocusLost: typeof onFocusLost\r\n}\r\n\r\nexport type InternalActions = SliceActions & ListenerActions\r\n\r\n/**\r\n * Creates a module containing the basic redux logic for use with `buildCreateApi`.\r\n *\r\n * @example\r\n * ```ts\r\n * const createBaseApi = buildCreateApi(coreModule());\r\n * ```\r\n */\r\nexport const coreModule = (): Module<CoreModule> => ({\r\n name: coreModuleName,\r\n init(\r\n api,\r\n {\r\n baseQuery,\r\n tagTypes,\r\n reducerPath,\r\n serializeQueryArgs,\r\n keepUnusedDataFor,\r\n refetchOnMountOrArgChange,\r\n refetchOnFocus,\r\n refetchOnReconnect,\r\n },\r\n context\r\n ) {\r\n enablePatches()\r\n\r\n assertCast<InternalSerializeQueryArgs>(serializeQueryArgs)\r\n\r\n const assertTagType: AssertTagTypes = (tag) => {\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (!tagTypes.includes(tag.type as any)) {\r\n console.error(\r\n `Tag type '${tag.type}' was used, but not specified in \\`tagTypes\\`!`\r\n )\r\n }\r\n }\r\n return tag\r\n }\r\n\r\n Object.assign(api, {\r\n reducerPath,\r\n endpoints: {},\r\n internalActions: {\r\n onOnline,\r\n onOffline,\r\n onFocus,\r\n onFocusLost,\r\n },\r\n util: {},\r\n })\r\n\r\n const {\r\n queryThunk,\r\n mutationThunk,\r\n patchQueryData,\r\n updateQueryData,\r\n upsertQueryData,\r\n prefetch,\r\n buildMatchThunkActions,\r\n } = buildThunks({\r\n baseQuery,\r\n reducerPath,\r\n context,\r\n api,\r\n serializeQueryArgs,\r\n })\r\n\r\n const { reducer, actions: sliceActions } = buildSlice({\r\n context,\r\n queryThunk,\r\n mutationThunk,\r\n reducerPath,\r\n assertTagType,\r\n config: {\r\n refetchOnFocus,\r\n refetchOnReconnect,\r\n refetchOnMountOrArgChange,\r\n keepUnusedDataFor,\r\n reducerPath,\r\n },\r\n })\r\n\r\n safeAssign(api.util, {\r\n patchQueryData,\r\n updateQueryData,\r\n upsertQueryData,\r\n prefetch,\r\n resetApiState: sliceActions.resetApiState,\r\n })\r\n safeAssign(api.internalActions, sliceActions)\r\n\r\n const { middleware, actions: middlewareActions } = buildMiddleware({\r\n reducerPath,\r\n context,\r\n queryThunk,\r\n mutationThunk,\r\n api,\r\n assertTagType,\r\n })\r\n safeAssign(api.util, middlewareActions)\r\n\r\n safeAssign(api, { reducer: reducer as any, middleware })\r\n\r\n const { buildQuerySelector, buildMutationSelector, selectInvalidatedBy } =\r\n buildSelectors({\r\n serializeQueryArgs: serializeQueryArgs as any,\r\n reducerPath,\r\n })\r\n\r\n safeAssign(api.util, { selectInvalidatedBy })\r\n\r\n const {\r\n buildInitiateQuery,\r\n buildInitiateMutation,\r\n getRunningMutationThunk,\r\n getRunningMutationsThunk,\r\n getRunningQueriesThunk,\r\n getRunningQueryThunk,\r\n getRunningOperationPromises,\r\n removalWarning,\r\n } = buildInitiate({\r\n queryThunk,\r\n mutationThunk,\r\n api,\r\n serializeQueryArgs: serializeQueryArgs as any,\r\n context,\r\n })\r\n\r\n safeAssign(api.util, {\r\n getRunningOperationPromises: getRunningOperationPromises as any,\r\n getRunningOperationPromise: removalWarning as any,\r\n getRunningMutationThunk,\r\n getRunningMutationsThunk,\r\n getRunningQueryThunk,\r\n getRunningQueriesThunk,\r\n })\r\n\r\n return {\r\n name: coreModuleName,\r\n injectEndpoint(endpointName, definition) {\r\n const anyApi = api as any as Api<\r\n any,\r\n Record<string, any>,\r\n string,\r\n string,\r\n CoreModule\r\n >\r\n anyApi.endpoints[endpointName] ??= {} as any\r\n if (isQueryDefinition(definition)) {\r\n safeAssign(\r\n anyApi.endpoints[endpointName],\r\n {\r\n name: endpointName,\r\n select: buildQuerySelector(endpointName, definition),\r\n initiate: buildInitiateQuery(endpointName, definition),\r\n },\r\n buildMatchThunkActions(queryThunk, endpointName)\r\n )\r\n } else if (isMutationDefinition(definition)) {\r\n safeAssign(\r\n anyApi.endpoints[endpointName],\r\n {\r\n name: endpointName,\r\n select: buildMutationSelector(),\r\n initiate: buildInitiateMutation(endpointName),\r\n },\r\n buildMatchThunkActions(mutationThunk, endpointName)\r\n )\r\n }\r\n },\r\n }\r\n },\r\n})\r\n","import { buildCreateApi, CreateApi } from '../createApi'\r\nimport { coreModule, coreModuleName } from './module'\r\n\r\nconst createApi = /* @__PURE__ */ buildCreateApi(coreModule())\r\n\r\nexport { createApi, coreModule }\r\n","import { useEffect, useRef, useMemo } from 'react'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/dist/query/defaultSerializeQueryArgs'\r\nimport type { EndpointDefinition } from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\n\r\nexport function useStableQueryArgs<T>(\r\n queryArgs: T,\r\n serialize: SerializeQueryArgs<any>,\r\n endpointDefinition: EndpointDefinition<any, any, any, any>,\r\n endpointName: string\r\n) {\r\n const incoming = useMemo(\r\n () => ({\r\n queryArgs,\r\n serialized:\r\n typeof queryArgs == 'object'\r\n ? serialize({ queryArgs, endpointDefinition, endpointName })\r\n : queryArgs,\r\n }),\r\n [queryArgs, serialize, endpointDefinition, endpointName]\r\n )\r\n const cache = useRef(incoming)\r\n useEffect(() => {\r\n if (cache.current.serialized !== incoming.serialized) {\r\n cache.current = incoming\r\n }\r\n }, [incoming])\r\n\r\n return cache.current.serialized === incoming.serialized\r\n ? cache.current.queryArgs\r\n : queryArgs\r\n}\r\n","export const UNINITIALIZED_VALUE = Symbol()\r\nexport type UninitializedValue = typeof UNINITIALIZED_VALUE\r\n","import { useEffect, useRef } from 'react'\r\nimport { shallowEqual } from 'react-redux'\r\n\r\nexport function useShallowStableValue<T>(value: T) {\r\n const cache = useRef(value)\r\n useEffect(() => {\r\n if (!shallowEqual(cache.current, value)) {\r\n cache.current = value\r\n }\r\n }, [value])\r\n\r\n return shallowEqual(cache.current, value) ? cache.current : value\r\n}\r\n","import type { AnyAction, ThunkAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { createSelector } from '@reduxjs/toolkit'\r\nimport type { Selector } from '@reduxjs/toolkit'\r\nimport type { DependencyList } from 'react'\r\nimport {\r\n useCallback,\r\n useDebugValue,\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react'\r\nimport { QueryStatus, skipToken } from '@reduxjs/toolkit/query'\r\nimport type {\r\n QuerySubState,\r\n SubscriptionOptions,\r\n QueryKeys,\r\n RootState,\r\n} from '@reduxjs/toolkit/dist/query/core/apiState'\r\nimport type {\r\n EndpointDefinitions,\r\n MutationDefinition,\r\n QueryDefinition,\r\n QueryArgFrom,\r\n ResultTypeFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type {\r\n QueryResultSelectorResult,\r\n MutationResultSelectorResult,\r\n SkipToken,\r\n} from '@reduxjs/toolkit/dist/query/core/buildSelectors'\r\nimport type {\r\n QueryActionCreatorResult,\r\n MutationActionCreatorResult,\r\n} from '@reduxjs/toolkit/dist/query/core/buildInitiate'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/dist/query/defaultSerializeQueryArgs'\r\nimport { shallowEqual } from 'react-redux'\r\nimport type { Api, ApiContext } from '@reduxjs/toolkit/dist/query/apiTypes'\r\nimport type {\r\n Id,\r\n NoInfer,\r\n Override,\r\n} from '@reduxjs/toolkit/dist/query/tsHelpers'\r\nimport type {\r\n ApiEndpointMutation,\r\n ApiEndpointQuery,\r\n CoreModule,\r\n PrefetchOptions,\r\n} from '@reduxjs/toolkit/dist/query/core/module'\r\nimport type { ReactHooksModuleOptions } from './module'\r\nimport { useStableQueryArgs } from './useSerializedStableValue'\r\nimport type { UninitializedValue } from './constants'\r\nimport { UNINITIALIZED_VALUE } from './constants'\r\nimport { useShallowStableValue } from './useShallowStableValue'\r\nimport type { BaseQueryFn } from '../baseQueryTypes'\r\nimport { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\n\r\n// Copy-pasted from React-Redux\r\nexport const useIsomorphicLayoutEffect =\r\n typeof window !== 'undefined' &&\r\n !!window.document &&\r\n !!window.document.createElement\r\n ? useLayoutEffect\r\n : useEffect\r\n\r\nexport interface QueryHooks<\r\n Definition extends QueryDefinition<any, any, any, any, any>\r\n> {\r\n useQuery: UseQuery<Definition>\r\n useLazyQuery: UseLazyQuery<Definition>\r\n useQuerySubscription: UseQuerySubscription<Definition>\r\n useLazyQuerySubscription: UseLazyQuerySubscription<Definition>\r\n useQueryState: UseQueryState<Definition>\r\n}\r\n\r\nexport interface MutationHooks<\r\n Definition extends MutationDefinition<any, any, any, any, any>\r\n> {\r\n useMutation: UseMutation<Definition>\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, 'subscribes' the component to the cached data, and reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already, and the hook will return the data for that query arg once it's available.\r\n *\r\n * This hook combines the functionality of both [`useQueryState`](#usequerystate) and [`useQuerySubscription`](#usequerysubscription) together, and is intended to be used in the majority of situations.\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQuery<D extends QueryDefinition<any, any, any, any>> = <\r\n R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n arg: QueryArgFrom<D> | SkipToken,\r\n options?: UseQuerySubscriptionOptions & UseQueryStateOptions<D, R>\r\n) => UseQueryHookResult<D, R>\r\n\r\nexport type UseQueryHookResult<\r\n D extends QueryDefinition<any, any, any, any>,\r\n R = UseQueryStateDefaultResult<D>\r\n> = UseQueryStateResult<D, R> & UseQuerySubscriptionResult<D>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuery` hook in userland code.\r\n */\r\nexport type TypedUseQueryHookResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = UseQueryStateDefaultResult<\r\n QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n >\r\n> = TypedUseQueryStateResult<ResultType, QueryArg, BaseQuery, R> &\r\n TypedUseQuerySubscriptionResult<ResultType, QueryArg, BaseQuery>\r\n\r\ninterface UseQuerySubscriptionOptions extends SubscriptionOptions {\r\n /**\r\n * Prevents a query from automatically running.\r\n *\r\n * @remarks\r\n * When `skip` is true (or `skipToken` is passed in as `arg`):\r\n *\r\n * - **If the query has cached data:**\r\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n * * The query will have a status of `uninitialized`\r\n * * If `skip: false` is set after the initial load, the cached result will be used\r\n * - **If the query does not have cached data:**\r\n * * The query will have a status of `uninitialized`\r\n * * The query will not exist in the state when viewed with the dev tools\r\n * * The query will not automatically fetch on mount\r\n * * The query will not automatically run when additional components with the same query are added that do run\r\n *\r\n * @example\r\n * ```tsx\r\n * // codeblock-meta no-transpile title=\"Skip example\"\r\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n * skip,\r\n * });\r\n *\r\n * return (\r\n * <div>\r\n * {name} - {status}\r\n * </div>\r\n * );\r\n * };\r\n * ```\r\n */\r\n skip?: boolean\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether if a cached result is already available, RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\r\n * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\r\n * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\r\n * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n */\r\n refetchOnMountOrArgChange?: boolean | number\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, and 'subscribes' the component to the cached data.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useQuery`](#usequery) or [`useQueryState`](#usequerystate).\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n */\r\nexport type UseQuerySubscription<\r\n D extends QueryDefinition<any, any, any, any>\r\n> = (\r\n arg: QueryArgFrom<D> | SkipToken,\r\n options?: UseQuerySubscriptionOptions\r\n) => UseQuerySubscriptionResult<D>\r\n\r\nexport type UseQuerySubscriptionResult<\r\n D extends QueryDefinition<any, any, any, any>\r\n> = Pick<QueryActionCreatorResult<D>, 'refetch'>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuerySubscription` hook in userland code.\r\n */\r\nexport type TypedUseQuerySubscriptionResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn\r\n> = UseQuerySubscriptionResult<\r\n QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n>\r\n\r\nexport type UseLazyQueryLastPromiseInfo<\r\n D extends QueryDefinition<any, any, any, any>\r\n> = {\r\n lastArg: QueryArgFrom<D>\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuery`](#usequery), but with manual control over when the data fetching occurs.\r\n *\r\n * This hook includes the functionality of [`useLazyQuerySubscription`](#uselazyquerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n *\r\n * #### Note\r\n *\r\n * When the trigger function returned from a LazyQuery is called, it always initiates a new request to the server even if there is cached data. Set `preferCacheValue`(the second argument to the function) as `true` if you want it to immediately return a cached value if one exists.\r\n */\r\nexport type UseLazyQuery<D extends QueryDefinition<any, any, any, any>> = <\r\n R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n options?: SubscriptionOptions & Omit<UseQueryStateOptions<D, R>, 'skip'>\r\n) => [\r\n LazyQueryTrigger<D>,\r\n UseQueryStateResult<D, R>,\r\n UseLazyQueryLastPromiseInfo<D>\r\n]\r\n\r\nexport type LazyQueryTrigger<D extends QueryDefinition<any, any, any, any>> = {\r\n /**\r\n * Triggers a lazy query.\r\n *\r\n * By default, this will start a new request even if there is already a value in the cache.\r\n * If you want to use the cache value and only start a request if there is no cache value, set the second argument to `true`.\r\n *\r\n * @remarks\r\n * If you need to access the error or success payload immediately after a lazy query, you can chain .unwrap().\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap with async await\"\r\n * try {\r\n * const payload = await getUserById(1).unwrap();\r\n * console.log('fulfilled', payload)\r\n * } catch (error) {\r\n * console.error('rejected', error);\r\n * }\r\n * ```\r\n */\r\n (\r\n arg: QueryArgFrom<D>,\r\n preferCacheValue?: boolean\r\n ): QueryActionCreatorResult<D>\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuerySubscription`](#usequerysubscription), but with manual control over when the data fetching occurs.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useLazyQuery`](#uselazyquery).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n */\r\nexport type UseLazyQuerySubscription<\r\n D extends QueryDefinition<any, any, any, any>\r\n> = (\r\n options?: SubscriptionOptions\r\n) => readonly [LazyQueryTrigger<D>, QueryArgFrom<D> | UninitializedValue]\r\n\r\nexport type QueryStateSelector<\r\n R extends Record<string, any>,\r\n D extends QueryDefinition<any, any, any, any>\r\n> = (state: UseQueryStateDefaultResult<D>) => R\r\n\r\n/**\r\n * A React hook that reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * Note that this hook does not trigger fetching new data. For that use-case, see [`useQuery`](#usequery) or [`useQuerySubscription`](#usequerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQueryState<D extends QueryDefinition<any, any, any, any>> = <\r\n R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n arg: QueryArgFrom<D> | SkipToken,\r\n options?: UseQueryStateOptions<D, R>\r\n) => UseQueryStateResult<D, R>\r\n\r\nexport type UseQueryStateOptions<\r\n D extends QueryDefinition<any, any, any, any>,\r\n R extends Record<string, any>\r\n> = {\r\n /**\r\n * Prevents a query from automatically running.\r\n *\r\n * @remarks\r\n * When skip is true:\r\n *\r\n * - **If the query has cached data:**\r\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n * * The query will have a status of `uninitialized`\r\n * * If `skip: false` is set after skipping the initial load, the cached result will be used\r\n * - **If the query does not have cached data:**\r\n * * The query will have a status of `uninitialized`\r\n * * The query will not exist in the state when viewed with the dev tools\r\n * * The query will not automatically fetch on mount\r\n * * The query will not automatically run when additional components with the same query are added that do run\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Skip example\"\r\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n * skip,\r\n * });\r\n *\r\n * return (\r\n * <div>\r\n * {name} - {status}\r\n * </div>\r\n * );\r\n * };\r\n * ```\r\n */\r\n skip?: boolean\r\n /**\r\n * `selectFromResult` allows you to get a specific segment from a query result in a performant manner.\r\n * When using this feature, the component will not rerender unless the underlying data of the selected item has changed.\r\n * If the selected item is one element in a larger collection, it will disregard changes to elements in the same collection.\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using selectFromResult to extract a single result\"\r\n * function PostsList() {\r\n * const { data: posts } = api.useGetPostsQuery();\r\n *\r\n * return (\r\n * <ul>\r\n * {posts?.data?.map((post) => (\r\n * <PostById key={post.id} id={post.id} />\r\n * ))}\r\n * </ul>\r\n * );\r\n * }\r\n *\r\n * function PostById({ id }: { id: number }) {\r\n * // Will select the post with the given id, and will only rerender if the given posts data changes\r\n * const { post } = api.useGetPostsQuery(undefined, {\r\n * selectFromResult: ({ data }) => ({ post: data?.find((post) => post.id === id) }),\r\n * });\r\n *\r\n * return <li>{post?.name}</li>;\r\n * }\r\n * ```\r\n */\r\n selectFromResult?: QueryStateSelector<R, D>\r\n}\r\n\r\nexport type UseQueryStateResult<\r\n _ extends QueryDefinition<any, any, any, any>,\r\n R\r\n> = NoInfer<R>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQueryState` hook in userland code.\r\n */\r\nexport type TypedUseQueryStateResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = UseQueryStateDefaultResult<\r\n QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n >\r\n> = NoInfer<R>\r\n\r\ntype UseQueryStateBaseResult<D extends QueryDefinition<any, any, any, any>> =\r\n QuerySubState<D> & {\r\n /**\r\n * Where `data` tries to hold data as much as possible, also re-using\r\n * data from the last arguments passed into the hook, this property\r\n * will always contain the received data from the query, for the current query arguments.\r\n */\r\n currentData?: ResultTypeFrom<D>\r\n /**\r\n * Query has not started yet.\r\n */\r\n isUninitialized: false\r\n /**\r\n * Query is currently loading for the first time. No data yet.\r\n */\r\n isLoading: false\r\n /**\r\n * Query is currently fetching, but might have data from an earlier request.\r\n */\r\n isFetching: false\r\n /**\r\n * Query has data from a successful load.\r\n */\r\n isSuccess: false\r\n /**\r\n * Query is currently in \"error\" state.\r\n */\r\n isError: false\r\n }\r\n\r\ntype UseQueryStateDefaultResult<D extends QueryDefinition<any, any, any, any>> =\r\n Id<\r\n | Override<\r\n Extract<\r\n UseQueryStateBaseResult<D>,\r\n { status: QueryStatus.uninitialized }\r\n >,\r\n { isUninitialized: true }\r\n >\r\n | Override<\r\n UseQueryStateBaseResult<D>,\r\n | { isLoading: true; isFetching: boolean; data: undefined }\r\n | ({\r\n isSuccess: true\r\n isFetching: true\r\n error: undefined\r\n } & Required<\r\n Pick<UseQueryStateBaseResult<D>, 'data' | 'fulfilledTimeStamp'>\r\n >)\r\n | ({\r\n isSuccess: true\r\n isFetching: false\r\n error: undefined\r\n } & Required<\r\n Pick<\r\n UseQueryStateBaseResult<D>,\r\n 'data' | 'fulfilledTimeStamp' | 'currentData'\r\n >\r\n >)\r\n | ({ isError: true } & Required<\r\n Pick<UseQueryStateBaseResult<D>, 'error'>\r\n >)\r\n >\r\n > & {\r\n /**\r\n * @deprecated will be removed in the next version\r\n * please use the `isLoading`, `isFetching`, `isSuccess`, `isError`\r\n * and `isUninitialized` flags instead\r\n */\r\n status: QueryStatus\r\n }\r\n\r\nexport type MutationStateSelector<\r\n R extends Record<string, any>,\r\n D extends MutationDefinition<any, any, any, any>\r\n> = (state: MutationResultSelectorResult<D>) => R\r\n\r\nexport type UseMutationStateOptions<\r\n D extends MutationDefinition<any, any, any, any>,\r\n R extends Record<string, any>\r\n> = {\r\n selectFromResult?: MutationStateSelector<R, D>\r\n fixedCacheKey?: string\r\n}\r\n\r\nexport type UseMutationStateResult<\r\n D extends MutationDefinition<any, any, any, any>,\r\n R\r\n> = NoInfer<R> & {\r\n originalArgs?: QueryArgFrom<D>\r\n /**\r\n * Resets the hook state to it's initial `uninitialized` state.\r\n * This will also remove the last result from the cache.\r\n */\r\n reset: () => void\r\n}\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useMutation` hook in userland code.\r\n */\r\nexport type TypedUseMutationResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = MutationResultSelectorResult<\r\n MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n >\r\n> = UseMutationStateResult<\r\n MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>,\r\n R\r\n>\r\n\r\n/**\r\n * A React hook that lets you trigger an update request for a given endpoint, and subscribes the component to read the request status from the Redux store. The component will re-render as the loading status changes.\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to alter data on the server or possibly invalidate the cache\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseMutation<D extends MutationDefinition<any, any, any, any>> = <\r\n R extends Record<string, any> = MutationResultSelectorResult<D>\r\n>(\r\n options?: UseMutationStateOptions<D, R>\r\n) => readonly [MutationTrigger<D>, UseMutationStateResult<D, R>]\r\n\r\nexport type MutationTrigger<D extends MutationDefinition<any, any, any, any>> =\r\n {\r\n /**\r\n * Triggers the mutation and returns a Promise.\r\n * @remarks\r\n * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap with async await\"\r\n * try {\r\n * const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\r\n * console.log('fulfilled', payload)\r\n * } catch (error) {\r\n * console.error('rejected', error);\r\n * }\r\n * ```\r\n */\r\n (arg: QueryArgFrom<D>): MutationActionCreatorResult<D>\r\n }\r\n\r\nconst defaultQueryStateSelector: QueryStateSelector<any, any> = (x) => x\r\nconst defaultMutationStateSelector: MutationStateSelector<any, any> = (x) => x\r\n\r\n/**\r\n * Wrapper around `defaultQueryStateSelector` to be used in `useQuery`.\r\n * We want the initial render to already come back with\r\n * `{ isUninitialized: false, isFetching: true, isLoading: true }`\r\n * to prevent that the library user has to do an additional check for `isUninitialized`/\r\n */\r\nconst noPendingQueryStateSelector: QueryStateSelector<any, any> = (\r\n selected\r\n) => {\r\n if (selected.isUninitialized) {\r\n return {\r\n ...selected,\r\n isUninitialized: false,\r\n isFetching: true,\r\n isLoading: selected.data !== undefined ? false : true,\r\n status: QueryStatus.pending,\r\n } as any\r\n }\r\n return selected\r\n}\r\n\r\ntype GenericPrefetchThunk = (\r\n endpointName: any,\r\n arg: any,\r\n options: PrefetchOptions\r\n) => ThunkAction<void, any, any, AnyAction>\r\n\r\n/**\r\n *\r\n * @param opts.api - An API with defined endpoints to create hooks for\r\n * @param opts.moduleOptions.batch - The version of the `batchedUpdates` function to be used\r\n * @param opts.moduleOptions.useDispatch - The version of the `useDispatch` hook to be used\r\n * @param opts.moduleOptions.useSelector - The version of the `useSelector` hook to be used\r\n * @returns An object containing functions to generate hooks based on an endpoint\r\n */\r\nexport function buildHooks<Definitions extends EndpointDefinitions>({\r\n api,\r\n moduleOptions: {\r\n batch,\r\n useDispatch,\r\n useSelector,\r\n useStore,\r\n unstable__sideEffectsInRender,\r\n },\r\n serializeQueryArgs,\r\n context,\r\n}: {\r\n api: Api<any, Definitions, any, any, CoreModule>\r\n moduleOptions: Required<ReactHooksModuleOptions>\r\n serializeQueryArgs: SerializeQueryArgs<any>\r\n context: ApiContext<Definitions>\r\n}) {\r\n const usePossiblyImmediateEffect: (\r\n effect: () => void | undefined,\r\n deps?: DependencyList\r\n ) => void = unstable__sideEffectsInRender ? (cb) => cb() : useEffect\r\n\r\n return { buildQueryHooks, buildMutationHook, usePrefetch }\r\n\r\n function queryStatePreSelector(\r\n currentState: QueryResultSelectorResult<any>,\r\n lastResult: UseQueryStateDefaultResult<any> | undefined,\r\n queryArgs: any\r\n ): UseQueryStateDefaultResult<any> {\r\n // if we had a last result and the current result is uninitialized,\r\n // we might have called `api.util.resetApiState`\r\n // in this case, reset the hook\r\n if (lastResult?.endpointName && currentState.isUninitialized) {\r\n const { endpointName } = lastResult\r\n const endpointDefinition = context.endpointDefinitions[endpointName]\r\n if (\r\n serializeQueryArgs({\r\n queryArgs: lastResult.originalArgs,\r\n endpointDefinition,\r\n endpointName,\r\n }) ===\r\n serializeQueryArgs({\r\n queryArgs,\r\n endpointDefinition,\r\n endpointName,\r\n })\r\n )\r\n lastResult = undefined\r\n }\r\n\r\n // data is the last known good request result we have tracked - or if none has been tracked yet the last good result for the current args\r\n let data = currentState.isSuccess ? currentState.data : lastResult?.data\r\n if (data === undefined) data = currentState.data\r\n\r\n const hasData = data !== undefined\r\n\r\n // isFetching = true any time a request is in flight\r\n const isFetching = currentState.isLoading\r\n // isLoading = true only when loading while no data is present yet (initial load with no data in the cache)\r\n const isLoading = !hasData && isFetching\r\n // isSuccess = true when data is present\r\n const isSuccess = currentState.isSuccess || (isFetching && hasData)\r\n\r\n return {\r\n ...currentState,\r\n data,\r\n currentData: currentState.data,\r\n isFetching,\r\n isLoading,\r\n isSuccess,\r\n } as UseQueryStateDefaultResult<any>\r\n }\r\n\r\n function usePrefetch<EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n defaultOptions?: PrefetchOptions\r\n ) {\r\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n const stableDefaultOptions = useShallowStableValue(defaultOptions)\r\n\r\n return useCallback(\r\n (arg: any, options?: PrefetchOptions) =>\r\n dispatch(\r\n (api.util.prefetch as GenericPrefetchThunk)(endpointName, arg, {\r\n ...stableDefaultOptions,\r\n ...options,\r\n })\r\n ),\r\n [endpointName, dispatch, stableDefaultOptions]\r\n )\r\n }\r\n\r\n function buildQueryHooks(name: string): QueryHooks<any> {\r\n const useQuerySubscription: UseQuerySubscription<any> = (\r\n arg: any,\r\n {\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n refetchOnMountOrArgChange,\r\n skip = false,\r\n pollingInterval = 0,\r\n } = {}\r\n ) => {\r\n const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition<any, any, any, any, any>,\r\n Definitions\r\n >\r\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n const stableArg = useStableQueryArgs(\r\n skip ? skipToken : arg,\r\n // Even if the user provided a per-endpoint `serializeQueryArgs` with\r\n // a consistent return value, _here_ we want to use the default behavior\r\n // so we can tell if _anything_ actually changed. Otherwise, we can end up\r\n // with a case where the query args did change but the serialization doesn't,\r\n // and then we never try to initiate a refetch.\r\n defaultSerializeQueryArgs,\r\n context.endpointDefinitions[name],\r\n name\r\n )\r\n const stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval,\r\n })\r\n\r\n const lastRenderHadSubscription = useRef(false)\r\n\r\n const promiseRef = useRef<QueryActionCreatorResult<any>>()\r\n\r\n let { queryCacheKey, requestId } = promiseRef.current || {}\r\n\r\n // HACK Because the latest state is in the middleware, we actually\r\n // dispatch an action that will be intercepted and returned.\r\n let currentRenderHasSubscription = false\r\n if (queryCacheKey && requestId) {\r\n // This _should_ return a boolean, even if the types don't line up\r\n const returnedValue = dispatch(\r\n api.internalActions.internal_probeSubscription({\r\n queryCacheKey,\r\n requestId,\r\n })\r\n )\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof returnedValue !== 'boolean') {\r\n throw new Error(\r\n `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\r\n You must add the middleware for RTK-Query to function correctly!`\r\n )\r\n }\r\n }\r\n\r\n currentRenderHasSubscription = !!returnedValue\r\n }\r\n\r\n const subscriptionRemoved =\r\n !currentRenderHasSubscription && lastRenderHadSubscription.current\r\n\r\n usePossiblyImmediateEffect(() => {\r\n lastRenderHadSubscription.current = currentRenderHasSubscription\r\n })\r\n\r\n usePossiblyImmediateEffect((): void | undefined => {\r\n if (subscriptionRemoved) {\r\n promiseRef.current = undefined\r\n }\r\n }, [subscriptionRemoved])\r\n\r\n usePossiblyImmediateEffect((): void | undefined => {\r\n const lastPromise = promiseRef.current\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'removeMeOnCompilation'\r\n ) {\r\n // this is only present to enforce the rule of hooks to keep `isSubscribed` in the dependency array\r\n console.log(subscriptionRemoved)\r\n }\r\n\r\n if (stableArg === skipToken) {\r\n lastPromise?.unsubscribe()\r\n promiseRef.current = undefined\r\n return\r\n }\r\n\r\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n if (!lastPromise || lastPromise.arg !== stableArg) {\r\n lastPromise?.unsubscribe()\r\n const promise = dispatch(\r\n initiate(stableArg, {\r\n subscriptionOptions: stableSubscriptionOptions,\r\n forceRefetch: refetchOnMountOrArgChange,\r\n })\r\n )\r\n\r\n promiseRef.current = promise\r\n } else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n lastPromise.updateSubscriptionOptions(stableSubscriptionOptions)\r\n }\r\n }, [\r\n dispatch,\r\n initiate,\r\n refetchOnMountOrArgChange,\r\n stableArg,\r\n stableSubscriptionOptions,\r\n subscriptionRemoved,\r\n ])\r\n\r\n useEffect(() => {\r\n return () => {\r\n promiseRef.current?.unsubscribe()\r\n promiseRef.current = undefined\r\n }\r\n }, [])\r\n\r\n return useMemo(\r\n () => ({\r\n /**\r\n * A method to manually refetch data for the query\r\n */\r\n refetch: () => {\r\n if (!promiseRef.current)\r\n throw new Error(\r\n 'Cannot refetch a query that has not been started yet.'\r\n )\r\n return promiseRef.current?.refetch()\r\n },\r\n }),\r\n []\r\n )\r\n }\r\n\r\n const useLazyQuerySubscription: UseLazyQuerySubscription<any> = ({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval = 0,\r\n } = {}) => {\r\n const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition<any, any, any, any, any>,\r\n Definitions\r\n >\r\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n\r\n const [arg, setArg] = useState<any>(UNINITIALIZED_VALUE)\r\n const promiseRef = useRef<QueryActionCreatorResult<any> | undefined>()\r\n\r\n const stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval,\r\n })\r\n\r\n usePossiblyImmediateEffect(() => {\r\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n promiseRef.current?.updateSubscriptionOptions(\r\n stableSubscriptionOptions\r\n )\r\n }\r\n }, [stableSubscriptionOptions])\r\n\r\n const subscriptionOptionsRef = useRef(stableSubscriptionOptions)\r\n usePossiblyImmediateEffect(() => {\r\n subscriptionOptionsRef.current = stableSubscriptionOptions\r\n }, [stableSubscriptionOptions])\r\n\r\n const trigger = useCallback(\r\n function (arg: any, preferCacheValue = false) {\r\n let promise: QueryActionCreatorResult<any>\r\n\r\n batch(() => {\r\n promiseRef.current?.unsubscribe()\r\n\r\n promiseRef.current = promise = dispatch(\r\n initiate(arg, {\r\n subscriptionOptions: subscriptionOptionsRef.current,\r\n forceRefetch: !preferCacheValue,\r\n })\r\n )\r\n\r\n setArg(arg)\r\n })\r\n\r\n return promise!\r\n },\r\n [dispatch, initiate]\r\n )\r\n\r\n /* cleanup on unmount */\r\n useEffect(() => {\r\n return () => {\r\n promiseRef?.current?.unsubscribe()\r\n }\r\n }, [])\r\n\r\n /* if \"cleanup on unmount\" was triggered from a fast refresh, we want to reinstate the query */\r\n useEffect(() => {\r\n if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\r\n trigger(arg, true)\r\n }\r\n }, [arg, trigger])\r\n\r\n return useMemo(() => [trigger, arg] as const, [trigger, arg])\r\n }\r\n\r\n const useQueryState: UseQueryState<any> = (\r\n arg: any,\r\n { skip = false, selectFromResult } = {}\r\n ) => {\r\n const { select } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition<any, any, any, any, any>,\r\n Definitions\r\n >\r\n const stableArg = useStableQueryArgs(\r\n skip ? skipToken : arg,\r\n serializeQueryArgs,\r\n context.endpointDefinitions[name],\r\n name\r\n )\r\n\r\n type ApiRootState = Parameters<ReturnType<typeof select>>[0]\r\n\r\n const lastValue = useRef<any>()\r\n\r\n const selectDefaultResult: Selector<ApiRootState, any, [any]> = useMemo(\r\n () =>\r\n createSelector(\r\n [\r\n select(stableArg),\r\n (_: ApiRootState, lastResult: any) => lastResult,\r\n (_: ApiRootState) => stableArg,\r\n ],\r\n queryStatePreSelector\r\n ),\r\n [select, stableArg]\r\n )\r\n\r\n const querySelector: Selector<ApiRootState, any, [any]> = useMemo(\r\n () =>\r\n selectFromResult\r\n ? createSelector([selectDefaultResult], selectFromResult)\r\n : selectDefaultResult,\r\n [selectDefaultResult, selectFromResult]\r\n )\r\n\r\n const currentState = useSelector(\r\n (state: RootState<Definitions, any, any>) =>\r\n querySelector(state, lastValue.current),\r\n shallowEqual\r\n )\r\n\r\n const store = useStore<RootState<Definitions, any, any>>()\r\n const newLastValue = selectDefaultResult(\r\n store.getState(),\r\n lastValue.current\r\n )\r\n useIsomorphicLayoutEffect(() => {\r\n lastValue.current = newLastValue\r\n }, [newLastValue])\r\n\r\n return currentState\r\n }\r\n\r\n return {\r\n useQueryState,\r\n useQuerySubscription,\r\n useLazyQuerySubscription,\r\n useLazyQuery(options) {\r\n const [trigger, arg] = useLazyQuerySubscription(options)\r\n const queryStateResults = useQueryState(arg, {\r\n ...options,\r\n skip: arg === UNINITIALIZED_VALUE,\r\n })\r\n\r\n const info = useMemo(() => ({ lastArg: arg }), [arg])\r\n return useMemo(\r\n () => [trigger, queryStateResults, info],\r\n [trigger, queryStateResults, info]\r\n )\r\n },\r\n useQuery(arg, options) {\r\n const querySubscriptionResults = useQuerySubscription(arg, options)\r\n const queryStateResults = useQueryState(arg, {\r\n selectFromResult:\r\n arg === skipToken || options?.skip\r\n ? undefined\r\n : noPendingQueryStateSelector,\r\n ...options,\r\n })\r\n\r\n const { data, status, isLoading, isSuccess, isError, error } =\r\n queryStateResults\r\n useDebugValue({ data, status, isLoading, isSuccess, isError, error })\r\n\r\n return useMemo(\r\n () => ({ ...queryStateResults, ...querySubscriptionResults }),\r\n [queryStateResults, querySubscriptionResults]\r\n )\r\n },\r\n }\r\n }\r\n\r\n function buildMutationHook(name: string): UseMutation<any> {\r\n return ({\r\n selectFromResult = defaultMutationStateSelector,\r\n fixedCacheKey,\r\n } = {}) => {\r\n const { select, initiate } = api.endpoints[name] as ApiEndpointMutation<\r\n MutationDefinition<any, any, any, any, any>,\r\n Definitions\r\n >\r\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n const [promise, setPromise] = useState<MutationActionCreatorResult<any>>()\r\n\r\n useEffect(\r\n () => () => {\r\n if (!promise?.arg.fixedCacheKey) {\r\n promise?.reset()\r\n }\r\n },\r\n [promise]\r\n )\r\n\r\n const triggerMutation = useCallback(\r\n function (arg: Parameters<typeof initiate>['0']) {\r\n const promise = dispatch(initiate(arg, { fixedCacheKey }))\r\n setPromise(promise)\r\n return promise\r\n },\r\n [dispatch, initiate, fixedCacheKey]\r\n )\r\n\r\n const { requestId } = promise || {}\r\n const mutationSelector = useMemo(\r\n () =>\r\n createSelector(\r\n [select({ fixedCacheKey, requestId: promise?.requestId })],\r\n selectFromResult\r\n ),\r\n [select, promise, selectFromResult, fixedCacheKey]\r\n )\r\n\r\n const currentState = useSelector(mutationSelector, shallowEqual)\r\n const originalArgs =\r\n fixedCacheKey == null ? promise?.arg.originalArgs : undefined\r\n const reset = useCallback(() => {\r\n batch(() => {\r\n if (promise) {\r\n setPromise(undefined)\r\n }\r\n if (fixedCacheKey) {\r\n dispatch(\r\n api.internalActions.removeMutationResult({\r\n requestId,\r\n fixedCacheKey,\r\n })\r\n )\r\n }\r\n })\r\n }, [dispatch, fixedCacheKey, promise, requestId])\r\n\r\n const {\r\n endpointName,\r\n data,\r\n status,\r\n isLoading,\r\n isSuccess,\r\n isError,\r\n error,\r\n } = currentState\r\n useDebugValue({\r\n endpointName,\r\n data,\r\n status,\r\n isLoading,\r\n isSuccess,\r\n isError,\r\n error,\r\n })\r\n\r\n const finalState = useMemo(\r\n () => ({ ...currentState, originalArgs, reset }),\r\n [currentState, originalArgs, reset]\r\n )\r\n\r\n return useMemo(\r\n () => [triggerMutation, finalState] as const,\r\n [triggerMutation, finalState]\r\n )\r\n }\r\n }\r\n}\r\n","export function capitalize(str: string) {\r\n return str.replace(str[0], str[0].toUpperCase())\r\n}\r\n","import type { MutationHooks, QueryHooks } from './buildHooks'\r\nimport { buildHooks } from './buildHooks'\r\nimport { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'\r\nimport type {\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type { Api, Module } from '../apiTypes'\r\nimport { capitalize } from '../utils'\r\nimport { safeAssign } from '../tsHelpers'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/dist/query/baseQueryTypes'\r\n\r\nimport type { HooksWithUniqueNames } from './namedHooks'\r\n\r\nimport {\r\n useDispatch as rrUseDispatch,\r\n useSelector as rrUseSelector,\r\n useStore as rrUseStore,\r\n batch as rrBatch,\r\n} from 'react-redux'\r\nimport type { QueryKeys } from '../core/apiState'\r\nimport type { PrefetchOptions } from '../core/module'\r\n\r\nexport const reactHooksModuleName = /* @__PURE__ */ Symbol()\r\nexport type ReactHooksModule = typeof reactHooksModuleName\r\n\r\ndeclare module '@reduxjs/toolkit/dist/query/apiTypes' {\r\n export interface ApiModules<\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n BaseQuery extends BaseQueryFn,\r\n Definitions extends EndpointDefinitions,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ReducerPath extends string,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n TagTypes extends string\r\n > {\r\n [reactHooksModuleName]: {\r\n /**\r\n * Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`.\r\n */\r\n endpoints: {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n any,\r\n any,\r\n any,\r\n any,\r\n any\r\n >\r\n ? QueryHooks<Definitions[K]>\r\n : Definitions[K] extends MutationDefinition<any, any, any, any, any>\r\n ? MutationHooks<Definitions[K]>\r\n : never\r\n }\r\n /**\r\n * A hook that accepts a string endpoint name, and provides a callback that when called, pre-fetches the data for that endpoint.\r\n */\r\n usePrefetch<EndpointName extends QueryKeys<Definitions>>(\r\n endpointName: EndpointName,\r\n options?: PrefetchOptions\r\n ): (\r\n arg: QueryArgFrom<Definitions[EndpointName]>,\r\n options?: PrefetchOptions\r\n ) => void\r\n } & HooksWithUniqueNames<Definitions>\r\n }\r\n}\r\n\r\ntype RR = typeof import('react-redux')\r\n\r\nexport interface ReactHooksModuleOptions {\r\n /**\r\n * The version of the `batchedUpdates` function to be used\r\n */\r\n batch?: RR['batch']\r\n /**\r\n * The version of the `useDispatch` hook to be used\r\n */\r\n useDispatch?: RR['useDispatch']\r\n /**\r\n * The version of the `useSelector` hook to be used\r\n */\r\n useSelector?: RR['useSelector']\r\n /**\r\n * The version of the `useStore` hook to be used\r\n */\r\n useStore?: RR['useStore']\r\n /**\r\n * Enables performing asynchronous tasks immediately within a render.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * import {\r\n * buildCreateApi,\r\n * coreModule,\r\n * reactHooksModule\r\n * } from '@reduxjs/toolkit/query/react'\r\n *\r\n * const createApi = buildCreateApi(\r\n * coreModule(),\r\n * reactHooksModule({ unstable__sideEffectsInRender: true })\r\n * )\r\n * ```\r\n */\r\n unstable__sideEffectsInRender?: boolean\r\n}\r\n\r\n/**\r\n * Creates a module that generates react hooks from endpoints, for use with `buildCreateApi`.\r\n *\r\n * @example\r\n * ```ts\r\n * const MyContext = React.createContext<ReactReduxContextValue>(null as any);\r\n * const customCreateApi = buildCreateApi(\r\n * coreModule(),\r\n * reactHooksModule({ useDispatch: createDispatchHook(MyContext) })\r\n * );\r\n * ```\r\n *\r\n * @returns A module for use with `buildCreateApi`\r\n */\r\nexport const reactHooksModule = ({\r\n batch = rrBatch,\r\n useDispatch = rrUseDispatch,\r\n useSelector = rrUseSelector,\r\n useStore = rrUseStore,\r\n unstable__sideEffectsInRender = false,\r\n}: ReactHooksModuleOptions = {}): Module<ReactHooksModule> => ({\r\n name: reactHooksModuleName,\r\n init(api, { serializeQueryArgs }, context) {\r\n const anyApi = api as any as Api<\r\n any,\r\n Record<string, any>,\r\n string,\r\n string,\r\n ReactHooksModule\r\n >\r\n const { buildQueryHooks, buildMutationHook, usePrefetch } = buildHooks({\r\n api,\r\n moduleOptions: {\r\n batch,\r\n useDispatch,\r\n useSelector,\r\n useStore,\r\n unstable__sideEffectsInRender,\r\n },\r\n serializeQueryArgs,\r\n context,\r\n })\r\n safeAssign(anyApi, { usePrefetch })\r\n safeAssign(context, { batch })\r\n\r\n return {\r\n injectEndpoint(endpointName, definition) {\r\n if (isQueryDefinition(definition)) {\r\n const {\r\n useQuery,\r\n useLazyQuery,\r\n useLazyQuerySubscription,\r\n useQueryState,\r\n useQuerySubscription,\r\n } = buildQueryHooks(endpointName)\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useQuery,\r\n useLazyQuery,\r\n useLazyQuerySubscription,\r\n useQueryState,\r\n useQuerySubscription,\r\n })\r\n ;(api as any)[`use${capitalize(endpointName)}Query`] = useQuery\r\n ;(api as any)[`useLazy${capitalize(endpointName)}Query`] =\r\n useLazyQuery\r\n } else if (isMutationDefinition(definition)) {\r\n const useMutation = buildMutationHook(endpointName)\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useMutation,\r\n })\r\n ;(api as any)[`use${capitalize(endpointName)}Mutation`] = useMutation\r\n }\r\n },\r\n }\r\n },\r\n})\r\n","import { coreModule, buildCreateApi, CreateApi } from '@reduxjs/toolkit/query'\r\nimport { reactHooksModule, reactHooksModuleName } from './module'\r\n\r\nimport type { MutationHooks, QueryHooks } from './buildHooks'\r\nimport type {\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/dist/query/baseQueryTypes'\r\n\r\nimport type { QueryKeys } from '@reduxjs/toolkit/dist/query/core/apiState'\r\nimport type { PrefetchOptions } from '@reduxjs/toolkit/dist/query/core/module'\r\n\r\nexport * from '@reduxjs/toolkit/query'\r\nexport { ApiProvider } from './ApiProvider'\r\n\r\nconst createApi = /* @__PURE__ */ buildCreateApi(\r\n coreModule(),\r\n reactHooksModule()\r\n)\r\n\r\nexport type {\r\n TypedUseQueryHookResult,\r\n TypedUseQueryStateResult,\r\n TypedUseQuerySubscriptionResult,\r\n TypedUseMutationResult,\r\n} from './buildHooks'\r\nexport { createApi, reactHooksModule }\r\n","import {\r\n createApi,\r\n fetchBaseQuery,\r\n BaseQueryFn,\r\n FetchArgs,\r\n FetchBaseQueryError,\r\n retry\r\n} from '@reduxjs/toolkit/query/react';\r\nimport { clearTokenAndRedirect, setCredentials } from '../../features/auth/slices/slice';\r\nimport { RootState } from '../store';\r\n\r\nconst baseUrl = process.env.REACT_APP_API_URL;\r\n\r\nconst baseQuery = retry(\r\n fetchBaseQuery({\r\n baseUrl,\r\n prepareHeaders: (headers, { getState }) => {\r\n const token = (getState() as RootState).auth.token;\r\n if (token) headers.set('Authorization', `Bearer ${token}`);\r\n return headers;\r\n }\r\n }),\r\n { maxRetries: 0 }\r\n);\r\n\r\nconst refreshQuery = retry(\r\n fetchBaseQuery({\r\n baseUrl,\r\n prepareHeaders: (headers, { getState }) => {\r\n const token = (getState() as RootState).auth.refresh;\r\n if (token) headers.set('Authorization', `Bearer ${token}`);\r\n return headers;\r\n }\r\n }),\r\n { maxRetries: 0 }\r\n);\r\n\r\nconst customFetchBase: BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError> = async (\r\n args,\r\n api,\r\n extraOptions\r\n) => {\r\n let result = await baseQuery(args, api, extraOptions);\r\n if (\r\n result.error?.status === 401 &&\r\n result.meta?.response?.headers\r\n .get('www-authenticate')\r\n ?.startsWith('Bearer error=\"invalid_token\"')\r\n ) {\r\n // Implement refresh\r\n try {\r\n const refreshResult = await refreshQuery({ url: 'auth/refresh' }, api, extraOptions);\r\n\r\n if (refreshResult.data) {\r\n // Update the access token\r\n const response = refreshResult.data as any;\r\n api.dispatch(\r\n setCredentials({\r\n token: response.accessToken,\r\n refresh: response.refreshToken,\r\n user: response.user\r\n })\r\n );\r\n // Retry the initial query\r\n result = await baseQuery(args, api, extraOptions);\r\n } else {\r\n // Refresh token invalid\r\n api.dispatch(clearTokenAndRedirect());\r\n }\r\n } catch (e) {\r\n api.dispatch(clearTokenAndRedirect());\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n// Create the API using the overridden base query function\r\nconst apiWithMiddleware = createApi({\r\n baseQuery: customFetchBase,\r\n tagTypes: ['Basket', 'SearchProducts', 'OpenOrders'],\r\n endpoints: () => ({})\r\n});\r\n\r\nexport default apiWithMiddleware;\r\n","import rootApiSlice from '../../../app/api/slice';\r\n\r\nexport type GetBasketResponse = {\r\n basketLines: BasketLine[];\r\n carriageLine: BasketLine;\r\n totalBasketPrice: number;\r\n};\r\n\r\nexport type BasketLine = {\r\n lineNumber: number;\r\n itemNumber: string;\r\n description: string;\r\n stock: string;\r\n packQuantity: number;\r\n quantity: number;\r\n price: number;\r\n unit: string;\r\n discountPercentage: number;\r\n additionalCharge: string;\r\n discountPrice: number;\r\n totalLinePrice: number;\r\n};\r\n\r\nexport type UpdateBasketItemRequest = {\r\n lineNumber: number;\r\n quantity: number;\r\n};\r\n\r\nexport type BasketAmountResponse = {\r\n amount: number;\r\n discountAmount: number;\r\n totalVAT: number;\r\n totalAmount: number;\r\n};\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getBasket: builder.query<GetBasketResponse, void>({\r\n query: () => ({\r\n url: '/basket',\r\n method: 'GET'\r\n }),\r\n extraOptions: { maxRetries: 1 },\r\n providesTags: ['Basket']\r\n }),\r\n updateBasketItem: builder.mutation<void, UpdateBasketItemRequest>({\r\n query: (req) => ({\r\n url: '/basket',\r\n method: 'PATCH',\r\n body: { ...req }\r\n }),\r\n invalidatesTags: ['Basket']\r\n }),\r\n deleteBasketItem: builder.mutation<void, number>({\r\n query: (lineNumber) => ({\r\n url: `/basket/${lineNumber}`,\r\n method: 'DELETE'\r\n }),\r\n invalidatesTags: ['Basket']\r\n }),\r\n getBasketAmount: builder.query<BasketAmountResponse, void>({\r\n query: () => ({\r\n url: '/basket/amount',\r\n method: 'GET'\r\n }),\r\n extraOptions: { maxRetries: 2 },\r\n providesTags: ['Basket']\r\n }),\r\n submitBasket: builder.mutation<void, number>({\r\n query: (basketAmount) => ({\r\n url: `/basket/submit/${basketAmount}`,\r\n method: 'POST'\r\n }),\r\n invalidatesTags: ['OpenOrders', 'Basket']\r\n }),\r\n getOrderConfirmation: builder.query<void, void>({\r\n query: () => ({\r\n url: '/basket/confirmation',\r\n method: 'GET'\r\n }),\r\n extraOptions: { maxRetries: 2 }\r\n })\r\n })\r\n});\r\n\r\nexport const {\r\n useGetBasketQuery,\r\n useUpdateBasketItemMutation,\r\n useDeleteBasketItemMutation,\r\n useGetBasketAmountQuery,\r\n useSubmitBasketMutation,\r\n useGetOrderConfirmationQuery\r\n} = apiSlice;\r\n","import { Link } from 'react-router-dom';\r\nimport cartImg from '../../../assets/shopping-cart-white.svg';\r\nimport dotIcon from '../../../assets/red-circle-svgrepo-com.svg';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { logout } from '../../auth/slices/slice';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { useGetBasketQuery } from '../../basket/slices/apiSlice';\r\n\r\nconst AuthenticatedNavLinks = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n const { data: basketData, isError } = useGetBasketQuery();\r\n const activePage = useSelector((state: RootState) => state.layout.activePage);\r\n const account = useSelector((state: RootState) => state.auth.user);\r\n\r\n const handleLogout = async () => {\r\n dispatch(logout());\r\n };\r\n\r\n return (\r\n <div className=\"flex justify-end items-center w-full text-white text-sm space-x-12\">\r\n <Link className={activePage === 'My Account' ? 'border-b' : ''} to=\"/account\">\r\n My Account\r\n </Link>\r\n <Link className={activePage === 'My Details' ? 'border-b' : ''} to=\"/details\">\r\n My Details\r\n </Link>\r\n <Link className={activePage === 'Open Orders' ? 'border-b' : ''} to=\"/open-orders\">\r\n Open Orders\r\n </Link>\r\n <Link className={activePage === 'Order Products' ? 'border-b' : ''} to=\"/products/search\">\r\n Order Products\r\n </Link>\r\n <span className=\"hover:cursor-pointer\" onClick={handleLogout}>\r\n Log Out\r\n </span>\r\n <Link className={activePage === 'My Basket' ? 'border-b' : ''} to=\"/basket\">\r\n {isError ? (\r\n <img className=\"w-6 h-6\" src={cartImg} alt=\"\" />\r\n ) : (\r\n <div className=\"relative\">\r\n <img className=\"z-0 w-6 h-6\" src={cartImg} alt=\"\" />\r\n <img className=\"absolute right-1/4 top-0.5 z-40 w-2 h-3\" src={dotIcon} alt=\"\" />\r\n </div>\r\n )}\r\n </Link>\r\n <div className=\"absolute right-32 mt-36\">\r\n <h1 className=\"text-blue text-sm\">{account?.name}</h1>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default AuthenticatedNavLinks;\r\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMobileLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 105,\n height: 56,\n viewBox: \"0 0 105 56\",\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: \"M45.8328 5.69046e-06C46.7074 0.0026612 47.5616 0.265695 48.2875 0.755883C49.0134 1.24607 49.5785 1.94142 49.9113 2.75411C50.2442 3.5668 50.3299 4.46038 50.1575 5.32197C49.9852 6.18356 49.5627 6.97451 48.9432 7.59493C48.3238 8.21535 47.5353 8.6374 46.6773 8.80778C45.8192 8.97816 44.9302 8.88922 44.1225 8.55219C43.3147 8.21517 42.6245 7.64518 42.139 6.91421C41.6534 6.18325 41.3944 5.3241 41.3945 4.44529C41.3955 3.86059 41.511 3.28181 41.7345 2.74197C41.9581 2.20214 42.2853 1.71184 42.6974 1.29905C43.1095 0.886269 43.5985 0.559092 44.1365 0.336201C44.6745 0.11331 45.2509 -0.000929077 45.8328 5.69046e-06Z\",\n fill: \"#3B75BB\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.5329 5.69046e-06C52.4077 0.00188053 53.2623 0.264251 53.9888 0.753966C54.7152 1.24368 55.2809 1.93876 55.6143 2.75139C55.9478 3.56401 56.034 4.45771 55.8621 5.31956C55.6903 6.18141 55.268 6.97274 54.6487 7.59356C54.0295 8.21437 53.2409 8.63682 52.3828 8.80751C51.5247 8.97821 50.6354 8.8895 49.8275 8.55259C49.0195 8.21568 48.329 7.64568 47.8433 6.91463C47.3576 6.18358 47.0985 5.32428 47.0986 4.4453C47.0996 3.8606 47.2151 3.28181 47.4386 2.74198C47.6622 2.20214 47.9894 1.71184 48.4015 1.29905C48.8136 0.88627 49.3026 0.559092 49.8406 0.336201C50.3786 0.11331 50.955 -0.000929078 51.5369 5.69046e-06\",\n fill: \"#A7B6DE\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.158 7.02331e-06C58.0324 0.00281851 58.8863 0.265917 59.612 0.756078C60.3377 1.24624 60.9025 1.94148 61.2352 2.75399C61.5679 3.5665 61.6535 4.45985 61.4812 5.32122C61.3089 6.18258 60.8864 6.97332 60.2671 7.59359C59.6478 8.21385 58.8595 8.63581 58.0017 8.80618C57.1439 8.97656 56.2551 8.8877 55.4475 8.55083C54.64 8.21396 53.9499 7.64419 53.4643 6.91348C52.9788 6.18277 52.7197 5.32388 52.7197 4.4453C52.7206 3.86057 52.836 3.28173 53.0595 2.74185C53.283 2.20197 53.6102 1.71163 54.0224 1.29882C54.4345 0.886018 54.9236 0.558844 55.4616 0.33599C55.9996 0.113136 56.576 -0.00103161 57.158 7.02331e-06Z\",\n fill: \"#CAD2EC\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.0202 13.0007C39.8418 12.6004 39.528 12.2765 39.1346 12.0863C38.7272 11.8969 38.2826 11.8021 37.8337 11.8089H35.501V18.237H37.6772C37.9277 18.2378 38.1778 18.2161 38.4244 18.1722C38.6544 18.1328 38.8778 18.0615 39.0882 17.9604C39.2926 17.8609 39.4788 17.7273 39.6388 17.5653C39.8094 17.3909 39.9456 17.1854 40.0399 16.9599C40.1507 16.6801 40.216 16.3842 40.2334 16.0835C40.2585 15.75 40.2703 15.3596 40.2703 14.91C40.2703 14.5101 40.258 14.15 40.2334 13.8297C40.2164 13.5421 40.144 13.2605 40.0202 13.0007ZM39.1551 15.6236C39.1571 15.8444 39.1322 16.0647 39.0811 16.2795C39.0395 16.4624 38.959 16.6341 38.8452 16.7829C38.7274 16.9269 38.575 17.0381 38.4024 17.1061C38.1845 17.1888 37.9526 17.228 37.7197 17.2215H36.6186V12.8252H37.6969C38.1651 12.8252 38.5248 12.9485 38.776 13.1951C39.0271 13.4416 39.1535 13.851 39.1551 14.4232V15.6236Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.6123 18.2375H45.9105V17.2212H42.7291V15.4849H45.4402V14.5058H42.7291V12.8249H45.9105V11.8086H41.6123V18.2375Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.9639 16.9955C49.7451 17.1646 49.4744 17.2512 49.1986 17.2405C49.0064 17.2456 48.8155 17.2062 48.641 17.1251C48.4888 17.0525 48.3545 16.9469 48.2477 16.8161C48.1422 16.6859 48.0622 16.5368 48.0118 16.3767C47.9588 16.2112 47.9323 16.0384 47.9331 15.8646V14.156C47.933 13.9895 47.9596 13.8241 48.0118 13.6661C48.0624 13.5092 48.1425 13.3635 48.2477 13.2369C48.3547 13.1085 48.4891 13.0059 48.641 12.9366C48.8164 12.8587 49.0069 12.8209 49.1986 12.826C49.4746 12.8149 49.7462 12.8985 49.9686 13.0631C50.168 13.2198 50.3143 13.4345 50.3878 13.6779L51.4394 13.2622C51.2874 12.8234 51.0021 12.4436 50.6237 12.1764C50.2389 11.903 49.7638 11.7662 49.1986 11.7662C48.8384 11.7584 48.4806 11.8259 48.1478 11.9646C47.8633 12.085 47.6093 12.2681 47.4046 12.5004C47.2081 12.7285 47.0589 12.9937 46.9657 13.2804C46.8685 13.5767 46.8191 13.8867 46.8194 14.1987V15.8433C46.8169 16.1707 46.8663 16.4964 46.9657 16.8082C47.0566 17.0945 47.2061 17.3586 47.4046 17.5834C47.6105 17.8099 47.8646 17.9868 48.1478 18.1011C48.4822 18.2334 48.8393 18.2976 49.1986 18.2899C49.7575 18.2899 50.2326 18.1582 50.6237 17.8948C51.0129 17.6309 51.3032 17.244 51.4488 16.7955L50.3878 16.3522C50.3166 16.6058 50.1684 16.8307 49.9639 16.9955Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.4388 12.4612C56.2238 12.2417 55.9663 12.0688 55.6822 11.953C55.0223 11.7035 54.2937 11.7086 53.6373 11.9673C53.3521 12.0877 53.0973 12.2708 52.8917 12.5031C52.6926 12.7301 52.5417 12.9955 52.4481 13.2831C52.3496 13.5786 52.2989 13.8881 52.2979 14.1998V15.8436C52.2966 16.1606 52.3463 16.4757 52.445 16.7769C52.5384 17.0645 52.6893 17.33 52.8885 17.5569C53.094 17.7904 53.3491 17.9746 53.6349 18.0958C53.968 18.2344 54.3261 18.302 54.6865 18.2942C55.0232 18.2992 55.3579 18.2413 55.6736 18.1235C55.9579 18.0175 56.2158 17.8506 56.4294 17.6343C56.6432 17.4144 56.8083 17.1515 56.9139 16.863C57.0319 16.5375 57.0897 16.1931 57.0845 15.8467V14.1998C57.0875 13.8676 57.0313 13.5376 56.9186 13.2254C56.8135 12.9398 56.6501 12.6795 56.4388 12.4612ZM55.9496 15.8783C55.9517 16.0638 55.9219 16.2483 55.8615 16.4236C55.8072 16.5831 55.7225 16.7304 55.6122 16.8575C55.5016 16.9823 55.3656 17.0817 55.2134 17.1491C55.0454 17.2218 54.8639 17.2579 54.681 17.255C54.4883 17.2597 54.297 17.2202 54.1218 17.1396C53.9698 17.0663 53.8356 16.9606 53.7285 16.8298C53.6229 16.7 53.5428 16.5511 53.4926 16.3912C53.4395 16.2255 53.413 16.0524 53.4139 15.8783V14.1476C53.4138 13.9814 53.4404 13.8162 53.4926 13.6585C53.5431 13.5013 53.6232 13.3553 53.7285 13.2285C53.8363 13.1009 53.9705 12.9984 54.1218 12.9282C54.2979 12.8508 54.4888 12.813 54.681 12.8176C54.864 12.8146 55.0456 12.8509 55.2134 12.9243C55.3648 12.9906 55.5007 13.088 55.6122 13.2104C55.7218 13.3329 55.8065 13.4757 55.8615 13.6308C55.9214 13.7964 55.9512 13.9714 55.9496 14.1476V15.8783Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.7606 14.7358C62.9871 14.4223 63.1053 14.0429 63.0972 13.6555C63.101 13.3906 63.0493 13.1277 62.9454 12.8842C62.85 12.6614 62.7069 12.4625 62.5262 12.3018C62.3413 12.1414 62.1278 12.0178 61.897 11.9375C61.6509 11.8505 61.3918 11.8069 61.1309 11.8086H58.4033V18.2367H59.5194V15.5854H60.7094L61.8254 18.2367H63.0791L61.816 15.4194C62.1924 15.2928 62.5218 15.0545 62.7606 14.7358ZM61.6634 14.3462C61.4528 14.5132 61.1897 14.5989 60.9217 14.588H59.5194V12.787H60.9579C61.2135 12.7753 61.466 12.8471 61.6775 12.9917C61.8621 13.1276 61.9544 13.347 61.9544 13.65C61.9544 13.9529 61.8574 14.185 61.6634 14.3462Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.0785 11.8086H66.1709L63.7461 18.2367H64.9164L65.4331 16.8142H67.8123L68.3204 18.2367H69.5001L67.0785 11.8086ZM65.7595 15.8627L66.1937 14.5327L66.6066 13.239H66.6341L67.0588 14.5603L67.4836 15.8627H65.7595Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.279 12.3154H68.3577L68.4599 12.528H68.5747L68.4607 12.298C68.4892 12.2859 68.5136 12.2655 68.5307 12.2395C68.5477 12.2135 68.5568 12.183 68.5566 12.1518C68.5577 12.1304 68.554 12.1091 68.5457 12.0894C68.5374 12.0697 68.5247 12.0521 68.5087 12.038C68.4766 12.0102 68.4354 11.9953 68.393 11.9961H68.1768V12.528H68.279V12.3154ZM68.279 12.0902H68.3868C68.4332 12.0902 68.4568 12.1107 68.4568 12.1518C68.457 12.161 68.4552 12.1702 68.4515 12.1787C68.4479 12.1871 68.4424 12.1947 68.4355 12.2008C68.4205 12.2133 68.4015 12.2198 68.382 12.219H68.279V12.0902Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.4729 33.293L23.4009 34.133L22.8729 34.301C21.8409 34.637 21.6489 34.757 20.2089 39.125L17.2089 48.317H15.7689L12.3849 38.213H12.3129L8.68894 48.317H7.22494L2.71294 34.973C2.61694 34.685 2.42494 34.469 1.96894 34.397L0.648937 34.133L0.576937 33.293H7.12894L7.05694 34.133L5.85694 34.325C5.04094 34.469 5.20894 34.853 5.85694 36.821L8.54494 45.269H8.66494L11.7849 36.749L11.1849 34.973C11.0889 34.685 10.8969 34.469 10.4169 34.397L9.16894 34.133L9.09694 33.293H15.5529L15.4809 34.133L14.2329 34.325C13.5369 34.445 13.6089 34.949 14.2329 36.821L16.9449 45.293L17.0649 45.269L18.9849 39.125C20.3289 34.853 20.1609 34.565 18.9849 34.325L18.0249 34.133L17.9529 33.293H23.4729ZM35.6363 48.293H30.4763L30.5483 47.453L31.1723 47.381C31.8683 47.333 31.9883 47.165 31.9883 46.925V41.909C31.9883 39.557 31.2203 38.837 29.7803 38.837C28.7483 38.837 27.7643 39.365 27.1163 39.845V46.949C27.1163 47.189 27.2603 47.333 28.0283 47.381L28.8443 47.453L28.9163 48.293H23.5883L23.6603 47.453L24.3323 47.381C24.9083 47.333 25.1483 47.213 25.1483 46.925V34.421C25.1483 34.133 25.0763 33.941 24.8843 33.869L23.2763 33.197L23.3483 32.597L27.1163 31.565V38.885H27.2363C28.4603 37.877 29.7803 37.181 31.0763 37.181C31.7723 37.181 32.5403 37.421 33.0443 37.925C33.6923 38.573 33.9563 39.461 33.9563 40.613V46.925C33.9563 47.141 34.0763 47.285 34.9403 47.381L35.5643 47.453L35.6363 48.293ZM47.5703 42.605C47.5703 45.917 45.1463 48.653 41.9062 48.653C38.6903 48.653 36.6743 46.133 36.6743 42.965C36.6743 39.749 39.1943 37.181 42.3623 37.181C45.4823 37.181 47.5703 39.557 47.5703 42.605ZM45.3863 43.613C45.3863 41.765 45.0023 40.013 44.1143 39.077C43.7783 38.717 43.0823 38.165 42.0263 38.165C40.2503 38.165 38.8583 39.653 38.8583 42.221C38.8583 44.069 39.2663 45.821 40.1543 46.757C40.4903 47.117 41.1623 47.669 42.2422 47.669C43.9463 47.669 45.3863 46.181 45.3863 43.613ZM54.2561 48.293H49.0481L49.1201 47.453L49.7921 47.381C50.3681 47.333 50.6081 47.213 50.6081 46.925V34.421C50.6081 34.133 50.5361 33.941 50.3441 33.869L48.7361 33.197L48.8081 32.597L52.5761 31.565V46.949C52.5761 47.189 52.7201 47.333 53.4881 47.381L54.1841 47.453L54.2561 48.293ZM64.8272 45.917C63.9392 47.669 62.3552 48.653 60.4592 48.653C57.6272 48.653 55.6352 46.301 55.6352 43.277C55.6352 39.701 58.1552 37.181 61.2272 37.181C63.5072 37.181 64.9712 38.621 64.9712 40.781C64.9712 41.165 64.9232 41.693 64.8272 42.077L57.6992 41.981V42.245C57.6992 45.005 59.2832 46.925 61.4192 46.925C62.4272 46.925 63.5312 46.565 64.3472 45.653L64.8272 45.917ZM62.7632 41.213C62.8832 39.269 62.0192 38.069 60.6992 38.069C59.4032 38.069 58.0592 39.197 57.7712 41.213H62.7632ZM74.6897 45.173C74.6897 46.973 73.1777 48.653 70.4897 48.653C69.2657 48.653 68.1377 48.485 67.2497 48.149L67.1057 44.981H68.3057L68.8577 47.093C69.3857 47.477 70.0817 47.765 70.7777 47.765C71.7377 47.765 72.9617 47.045 72.9617 45.845C72.9617 44.717 71.6897 44.261 70.3217 43.733C68.7377 43.109 67.1537 42.413 67.1537 40.349C67.1537 38.765 68.4977 37.133 70.9937 37.133C72.1457 37.133 72.8177 37.325 73.3937 37.541L74.1377 37.229L74.2817 40.637H73.1057L72.6257 38.645C72.1217 38.261 71.3777 38.045 70.8017 38.045C69.7457 38.045 68.9057 38.693 68.9057 39.629C68.9057 40.733 69.8417 41.117 71.4737 41.765C73.0337 42.389 74.6897 43.133 74.6897 45.173ZM86.4317 47.069C85.6877 48.029 84.9197 48.677 84.0797 48.677C83.1437 48.677 82.5437 48.125 82.4717 46.925H82.3517C81.5117 47.861 80.5757 48.653 79.3757 48.653C77.8637 48.653 76.4957 47.453 76.4957 45.845C76.4957 43.853 78.3917 42.725 82.4957 41.765V41.549C82.4957 38.885 81.5597 38.285 80.1677 38.285C79.3757 38.285 78.3917 38.621 78.3917 38.837C78.3917 38.957 78.9437 39.389 78.9437 40.037C78.9437 40.637 78.4637 41.189 77.6717 41.189C76.9277 41.189 76.4237 40.685 76.4237 40.061C76.4237 38.885 79.0877 37.157 80.9837 37.157C83.8157 37.157 84.6317 38.309 84.4637 42.101L84.2957 46.181C84.2717 46.781 84.4637 47.117 84.8477 47.117C85.1837 47.117 85.5197 46.925 86.0237 46.541L86.4317 47.069ZM82.3277 46.133L82.4477 42.557C79.2797 43.349 78.5117 44.309 78.5117 45.341C78.5117 46.445 79.3277 47.141 80.2397 47.141C80.9357 47.141 81.5837 46.805 82.3277 46.133ZM92.3655 48.293H87.1575L87.2295 47.453L87.9015 47.381C88.4775 47.333 88.7175 47.213 88.7175 46.925V34.421C88.7175 34.133 88.6455 33.941 88.4535 33.869L86.8455 33.197L86.9175 32.597L90.6855 31.565V46.949C90.6855 47.189 90.8295 47.333 91.5975 47.381L92.2935 47.453L92.3655 48.293ZM102.937 45.917C102.049 47.669 100.465 48.653 98.5686 48.653C95.7366 48.653 93.7446 46.301 93.7446 43.277C93.7446 39.701 96.2646 37.181 99.3366 37.181C101.617 37.181 103.081 38.621 103.081 40.781C103.081 41.165 103.033 41.693 102.937 42.077L95.8086 41.981V42.245C95.8086 45.005 97.3926 46.925 99.5286 46.925C100.537 46.925 101.641 46.565 102.457 45.653L102.937 45.917ZM100.873 41.213C100.993 39.269 100.129 38.069 98.8086 38.069C97.5126 38.069 96.1686 39.197 95.8806 41.213H100.873Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileLogo);\nexport default __webpack_public_path__ + \"static/media/mobile-logo.42cfd5951570700bc46790d270721546.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMobileMenu(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 31,\n viewBox: \"0 0 31 31\",\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, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2103_8342)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.1213 5.62891H4.69141V7.50545H27.1213V5.62891Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.1213 22.5195H4.69141V24.3961H27.1213V22.5195Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.1213 11.2578H4.69141V13.1344H27.1213V11.2578Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.1213 16.8906H4.69141V18.7672H27.1213V16.8906Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2103_8342\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 29.9065,\n height: 30.0247,\n fill: \"white\",\n transform: \"translate(0.953125)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileMenu);\nexport default __webpack_public_path__ + \"static/media/mobile-menu.e807a915310f593b06ccf74f9dabc52d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMyAccount(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 101,\n viewBox: \"0 0 100 101\",\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: \"M17.3077 81.8252C22.4359 78.3454 27.612 75.621 32.8359 73.6521C38.0598 71.6833 43.7833 70.6988 50.0062 70.6988C56.2292 70.6988 61.9277 71.6833 67.1017 73.6521C72.2756 75.621 77.5183 78.3454 82.8297 81.8252C86.6758 77.5212 89.6978 72.8011 91.8956 67.665C94.0934 62.529 95.1923 56.901 95.1923 50.7813C95.1923 38.2355 90.7967 27.567 82.0055 18.7758C73.2143 9.98455 62.5458 5.58894 50 5.58894C37.4542 5.58894 26.7857 9.98455 17.9945 18.7758C9.2033 27.567 4.80769 38.2355 4.80769 50.7813C4.80769 56.901 5.90659 62.529 8.1044 67.665C10.3022 72.8011 13.37 77.5212 17.3077 81.8252ZM49.969 53.9406C45.1362 53.9406 41.0714 52.2819 37.7747 48.9645C34.478 45.6471 32.8297 41.572 32.8297 36.7392C32.8297 31.9064 34.4884 27.8417 37.8058 24.545C41.1232 21.2483 45.1983 19.5999 50.031 19.5999C54.8638 19.5999 58.9286 21.2586 62.2253 24.576C65.522 27.8934 67.1703 31.9685 67.1703 36.8013C67.1703 41.6341 65.5116 45.6988 62.1942 48.9955C58.8768 52.2922 54.8017 53.9406 49.969 53.9406ZM50.0643 100.781C43.0617 100.781 36.55 99.4872 30.5291 96.899C24.5082 94.3108 19.2198 90.7165 14.6637 86.116C10.1077 81.5155 6.52473 76.227 3.91484 70.2502C1.30495 64.2735 0 57.7716 0 50.7447C0 43.9009 1.31461 37.4611 3.94382 31.4251C6.57294 25.389 10.1656 20.0668 14.7218 15.4584C19.2781 10.85 24.5462 7.25172 30.5262 4.66353C36.5062 2.07534 43.0096 0.78125 50.0365 0.78125C56.8803 0.78125 63.3202 2.09586 69.3562 4.72507C75.3923 7.35419 80.7036 10.9485 85.2903 15.508C89.877 20.0675 93.4753 25.3669 96.0852 31.4064C98.6951 37.4459 100 43.8828 100 50.717C100 57.7195 98.7059 64.2313 96.1177 70.2521C93.5295 76.273 89.9312 81.5519 85.3228 86.0887C80.7145 90.6254 75.3945 94.2083 69.3629 96.8374C63.3313 99.4667 56.8984 100.781 50.0643 100.781ZM50 95.9736C55.0366 95.9736 60.119 95.0807 65.2473 93.295C70.3755 91.5093 74.9542 88.8307 78.9835 85.2593C74.9921 82.2403 70.5144 79.8601 65.5504 78.1188C60.5864 76.3773 55.4029 75.5065 50 75.5065C44.5971 75.5065 39.4002 76.3536 34.4093 78.0477C29.4185 79.7419 25.0458 82.1596 21.2912 85.3009C25.1374 88.8086 29.6245 91.4643 34.7528 93.2679C39.881 95.0717 44.9634 95.9736 50 95.9736ZM50.0192 49.1329C53.4863 49.1329 56.4103 47.936 58.7912 45.5422C61.1722 43.1486 62.3626 40.2182 62.3626 36.751C62.3626 33.284 61.1658 30.36 58.772 27.9791C56.3783 25.5981 53.4479 24.4076 49.9808 24.4076C46.5137 24.4076 43.5897 25.6045 41.2088 27.9983C38.8278 30.392 37.6374 33.3224 37.6374 36.7895C37.6374 40.2565 38.8343 43.1805 41.228 45.5615C43.6217 47.9424 46.5521 49.1329 50.0192 49.1329Z\",\n fill: \"#373F41\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMyAccount);\nexport default __webpack_public_path__ + \"static/media/my-account.8e71ba2d439f5b2725965bd4ddf25bc5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMyDetails(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 122,\n height: 101,\n viewBox: \"0 0 122 101\",\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: \"M50.1149 41.8432C44.2137 41.8432 39.3166 39.9261 35.4235 36.092C31.5304 32.2581 29.5839 27.3315 29.5839 21.3122C29.5839 15.411 31.5304 10.5139 35.4235 6.6209C39.3166 2.7278 44.2137 0.78125 50.1149 0.78125C56.016 0.78125 60.9131 2.7278 64.8062 6.6209C68.6993 10.5139 70.6458 15.411 70.6458 21.3122C70.6458 27.3315 68.6993 32.2581 64.8062 36.092C60.9131 39.9261 56.016 41.8432 50.1149 41.8432ZM0.0263672 97.9494V87.0552C0.0263672 83.5805 0.855983 80.6996 2.51522 78.4124C4.17457 76.1253 6.58979 74.2011 9.76088 72.6397C17.3125 69.0998 24.0087 66.622 29.8494 65.206C35.6901 63.7901 42.4175 63.0821 50.0315 63.0821H51.7963C52.3273 63.0821 52.8877 62.9641 53.4777 62.7282C53.0057 64.1441 52.6517 65.324 52.4157 66.268C52.1798 67.2119 52.0028 68.2149 51.8848 69.2768H50.0393C43.482 69.2768 37.4305 69.7783 31.8848 70.7812C26.3391 71.7842 20.0264 74.1736 12.9467 77.9494C10.2329 79.3653 8.43345 80.7405 7.54849 82.0751C6.66354 83.4097 6.22106 85.0433 6.22106 86.9759V91.7547H52.2388C52.3568 92.8167 52.6812 93.9081 53.2122 95.029C53.7432 96.15 54.2447 97.1234 54.7166 97.9494H0.0263672ZM96.171 100.781L95.2476 92.2857C93.1237 92.0497 91.1178 91.3712 89.2299 90.2503C87.342 89.1293 85.7491 87.8019 84.4511 86.268L77.0175 89.0998L74.5396 85.206L81.0883 80.0733C80.3803 78.558 80.0264 76.6453 80.0264 74.3351C80.0264 72.0248 80.3803 69.9848 81.0883 68.2149L74.8936 62.9051L77.1945 59.0113L84.4511 62.0202C85.6311 60.4863 87.1891 59.1975 89.1253 58.154C91.0615 57.1105 93.1022 56.3343 95.2476 55.8255L96.171 47.3299H100.911L101.619 55.8255C103.507 56.2975 105.483 57.056 107.546 58.1011C109.609 59.1461 111.291 60.3935 112.593 61.8432L119.672 59.0113L121.973 62.5512L115.602 68.0379C116.546 70.1059 117.018 72.1863 117.018 74.2791C117.018 76.372 116.546 78.3034 115.602 80.0733L121.973 85.206L119.849 89.0998L112.593 86.268C111.177 87.8019 109.466 89.0998 107.46 90.1618C105.454 91.2237 103.507 91.9317 101.619 92.2857L100.911 100.781H96.171ZM98.3019 87.1529C102.165 87.1529 105.277 85.931 107.637 83.4871C109.997 81.0431 111.177 78.0047 111.177 74.372C111.177 70.6212 109.982 67.5069 107.591 65.029C105.201 62.5512 102.075 61.3122 98.211 61.3122C94.4655 61.3122 91.3833 62.5663 88.9644 65.0745C86.5455 67.5826 85.3361 70.712 85.3361 74.4628C85.3361 78.0956 86.5607 81.1188 89.0099 83.5324C91.459 85.9461 94.5563 87.1529 98.3019 87.1529ZM50.1149 35.6485C54.1267 35.6485 57.519 34.2916 60.2919 31.5777C63.0647 28.8638 64.4511 25.442 64.4511 21.3122C64.4511 17.3004 63.0647 13.9081 60.2919 11.1352C57.519 8.36237 54.1267 6.97594 50.1149 6.97594C46.1031 6.97594 42.7107 8.36237 39.9379 11.1352C37.165 13.9081 35.7786 17.3004 35.7786 21.3122C35.7786 25.442 37.165 28.8638 39.9379 31.5777C42.7107 34.2916 46.1031 35.6485 50.1149 35.6485Z\",\n fill: \"#08202C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMyDetails);\nexport default __webpack_public_path__ + \"static/media/my-details.c7ed8ec6b044beee29361055cc48c5ef.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgOpenOrders(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 112,\n viewBox: \"0 0 100 112\",\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: \"M11.8644 111.781C8.50026 111.781 5.68182 110.591 3.40909 108.212C1.13636 105.832 0 103.009 0 99.7432V86.2982H18.9522V0.78125L26.8105 5.62773L34.9769 0.78125L43.1433 5.62773L51.3097 0.78125L59.4761 5.62773L67.6425 0.78125L75.8089 5.62773L83.9753 0.78125L92.1418 5.62773L100 0.78125V99.7432C100 103.009 98.8273 105.832 96.4818 108.212C94.1363 110.591 91.3542 111.781 88.1356 111.781H11.8644ZM88.2126 106.309C89.9076 106.309 91.397 105.69 92.681 104.451C93.9651 103.213 94.6071 101.664 94.6071 99.8058V9.69252H24.3451V86.2982H81.8182V99.7432C81.8182 101.619 82.4345 103.183 83.6672 104.433C84.8998 105.684 86.415 106.309 88.2126 106.309ZM33.5901 31.7362V26.2644H66.2558V31.7362H33.5901ZM33.5901 52.6855V47.2136H66.2558V52.6855H33.5901ZM80.1233 33.9249C78.7879 33.9249 77.6579 33.4203 76.7334 32.4109C75.8089 31.4016 75.3467 30.2551 75.3467 28.9715C75.3467 27.6879 75.8089 26.551 76.7334 25.5608C77.6579 24.5707 78.7879 24.0756 80.1233 24.0756C81.4587 24.0756 82.6143 24.5707 83.5901 25.5608C84.566 26.551 85.0539 27.6879 85.0539 28.9715C85.0539 30.2551 84.566 31.4016 83.5901 32.4109C82.6143 33.4203 81.4587 33.9249 80.1233 33.9249ZM80.1233 54.5615C78.7879 54.5615 77.6579 54.0569 76.7334 53.0476C75.8089 52.0382 75.3467 50.8918 75.3467 49.6081C75.3467 48.3245 75.8089 47.1876 76.7334 46.1974C77.6579 45.2073 78.7879 44.7122 80.1233 44.7122C81.4587 44.7122 82.6143 45.2073 83.5901 46.1974C84.566 47.1876 85.0539 48.3245 85.0539 49.6081C85.0539 50.8918 84.566 52.0382 83.5901 53.0476C82.6143 54.0569 81.4587 54.5615 80.1233 54.5615ZM11.7544 106.309H76.4253V91.77H5.39291V99.7432C5.39291 101.619 6.01695 103.183 7.26502 104.433C8.5131 105.684 10.0096 106.309 11.7544 106.309Z\",\n fill: \"#08202C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOpenOrders);\nexport default __webpack_public_path__ + \"static/media/open-orders.e6bebfa3b2357adfe72b81123e3f5c7c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgOrderProducts(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 110,\n viewBox: \"0 0 100 110\",\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: \"M53.1035 38.8812V22.0536H36.1379V17.226H53.1035V0.398438H57.931V17.226H74.6207V22.0536H57.931V38.8812H53.1035ZM29.0632 109.778C26.7475 109.778 24.8189 108.994 23.2775 107.425C21.7362 105.857 20.9655 103.915 20.9655 101.6C20.9655 99.4195 21.7497 97.5479 23.3179 95.9846C24.8861 94.4214 26.828 93.6398 29.1437 93.6398C31.4594 93.6398 33.3879 94.4349 34.9292 96.0249C36.4707 97.615 37.2414 99.523 37.2414 101.749C37.2414 103.975 36.4572 105.87 34.889 107.433C33.3208 108.996 31.3789 109.778 29.0632 109.778ZM81.477 109.778C79.1993 109.778 77.3032 108.994 75.7888 107.425C74.2744 105.857 73.5172 103.915 73.5172 101.6C73.5172 99.4195 74.2873 97.5479 75.8273 95.9846C77.3674 94.4214 79.2754 93.6398 81.5515 93.6398C83.8275 93.6398 85.7471 94.4349 87.3103 96.0249C88.8736 97.615 89.6552 99.523 89.6552 101.749C89.6552 103.975 88.871 105.87 87.3028 107.433C85.7346 108.996 83.7926 109.778 81.477 109.778ZM29.1034 81.6398C26.0007 81.6398 23.6848 80.3295 22.1557 77.7088C20.6266 75.0881 20.5977 72.4444 22.069 69.7778L30.7586 54.1915L9.93104 10.7433H0V5.91568H12.9655L36 54.0536H75.3103L95.8621 17.226L100 19.5709L80.5517 54.7433C79.7672 56.035 78.7653 57.0476 77.5461 57.7811C76.3268 58.5145 74.9838 58.8812 73.5172 58.8812H33.5172L26.7586 71.295C26.023 72.3984 26 73.5938 26.6897 74.8812C27.3793 76.1686 28.4138 76.8122 29.7931 76.8122H89.6552V81.6398H29.1034Z\",\n fill: \"#08202C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOrderProducts);\nexport default __webpack_public_path__ + \"static/media/order-products.8a4648d93eac993f66f505a62c47558e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgViewBasket(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 103,\n viewBox: \"0 0 100 103\",\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: \"M28.899 102.781C26.6571 102.781 24.7795 102.032 23.2662 100.533C21.7527 99.0337 20.996 97.1884 20.996 94.9968C20.996 92.9087 21.7626 91.1165 23.2959 89.6203C24.8291 88.124 26.7166 87.3758 28.9584 87.3758C31.2003 87.3758 33.0779 88.1337 34.5913 89.6494C36.1048 91.165 36.8615 92.9844 36.8615 95.1076C36.8615 97.2307 36.0948 99.0405 34.5615 100.537C33.0283 102.033 31.1407 102.781 28.899 102.781ZM81.7336 102.781C79.5214 102.781 77.6692 102.032 76.1769 100.533C74.6845 99.0337 73.9384 97.1884 73.9384 94.9968C73.9384 92.9087 74.694 91.1165 76.2052 89.6203C77.7165 88.124 79.5775 87.3758 81.7882 87.3758C83.9991 87.3758 85.8698 88.1337 87.4003 89.6494C88.9309 91.165 89.6961 92.9844 89.6961 95.1076C89.6961 97.2307 88.9295 99.0405 87.3961 100.537C85.8629 102.033 83.9754 102.781 81.7336 102.781ZM28.9287 74.9525C25.7959 74.9525 23.5163 73.7162 22.0899 71.2434C20.6636 68.7707 20.669 66.2523 22.1061 63.6883L30.9765 48.1669L9.95904 4.99609H0V0.78125H12.6968L35.6543 48.2197H75.5982L96.2708 11.9717L100 13.9106L80.3945 48.5885C79.6515 49.8563 78.6933 50.8142 77.5199 51.4624C76.3466 52.1105 75.0306 52.4345 73.572 52.4345H33.3692L25.4366 66.5227C24.8617 67.3657 24.8437 68.2789 25.3826 69.2624C25.9216 70.2458 26.73 70.7376 27.8078 70.7376H89.6961V74.9525H28.9287Z\",\n fill: \"black\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgViewBasket);\nexport default __webpack_public_path__ + \"static/media/view-basket.aee08707761405e4b5ab00eba8d4aa9f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgMobileX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 19,\n height: 19,\n viewBox: \"0 0 19 19\",\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.5 15.2L3 14.7L8.6 9.1L3 3.5L3.5 3L9.1 8.6L14.7 3L15.2 3.5L9.6 9.1L15.2 14.7L14.7 15.2L9.1 9.6L3.5 15.2Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileX);\nexport default __webpack_public_path__ + \"static/media/mobile-x.99790ab3493c73bbade6437234ebd664.svg\";\nexport { ForwardRef as ReactComponent };","import { Link, useNavigate } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport AuthenticatedNavLinks from \"./AuthenticatedNavLinks\";\r\nimport mobileLogo from '../../../assets/mobile-logo.svg';\r\nimport mobileMenu from '../../../assets/mobile-menu.svg';\r\nimport cartImg from \"../../../assets/shopping-cart-white.svg\";\r\nimport dotIcon from \"../../../assets/red-circle-svgrepo-com.svg\";\r\nimport {useState} from \"react\";\r\nimport accountImg from \"../../../assets/my-account.svg\";\r\nimport detailsImg from \"../../../assets/my-details.svg\";\r\nimport openOrders from \"../../../assets/open-orders.svg\";\r\nimport addCart from \"../../../assets/order-products.svg\";\r\nimport viewCart from \"../../../assets/view-basket.svg\";\r\nimport mobileX from '../../../assets/mobile-x.svg';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { logout } from '../../auth/slices/slice';\r\n\r\nconst NavBar = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n const navigate = useNavigate();\r\n const { token, user } = useSelector((state: RootState) => state.auth);\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const toggleMenu = () => setIsOpen(!isOpen);\r\n\r\n const handleLogout = async () => {\r\n dispatch(logout());\r\n };\r\n\r\n return (\r\n <div className=\"flex w-full h-20 mb-2 lg:mb-20 bg-navy\">\r\n <div className={`absolute bg-black bg-opacity-40 h-screen w-full z-30 left-0 top-0 lg:hidden ${isOpen ? '' : 'hidden'}`}></div>\r\n <div className={`absolute bg-white h-screen z-50 left-0 top-0 w-5/6 sm:w-4/6 flex flex-col pt-10 px-2 text-grey-submenu lg:hidden ${isOpen ? '' : 'hidden'}`}>\r\n <div className=\"flex items-center pb-16 pl-2 relative\">\r\n <div className=\"absolute -top-10 -right-16 -mr-2 bg-navy h-16 w-16 flex justify-center items-center\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-8 w-8\"\r\n src={mobileX}></img>\r\n </div>\r\n <div className=\"pl-5 flex flex-col\">\r\n <span className=\"underline hover:cursor-pointer\" onClick={handleLogout}>Sign out</span>\r\n </div>\r\n </div>\r\n <div className=\"flex flex-col w-full\">\r\n <Link to=\"/account\" className=\"text-lg flex items-center border-b border-gray-300 p-4\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-6 w-6 mr-4\"\r\n src={accountImg}></img>\r\n My Account\r\n </Link>\r\n <Link to=\"/products/search\" className=\"text-lg flex items-center border-b border-gray-300 p-4\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-6 w-6 mr-4\"\r\n src={detailsImg}></img>\r\n Order Products\r\n </Link>\r\n <Link to=\"/details\" className=\"text-lg flex items-center border-b border-gray-300 p-4\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-6 w-6 mr-4\"\r\n src={openOrders}></img>\r\n My details\r\n </Link>\r\n <Link to=\"/basket\" className=\"text-lg flex items-center border-b border-gray-300 p-4\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-6 w-6 mr-4\"\r\n src={addCart}></img>\r\n View basket\r\n </Link>\r\n <Link to=\"open-orders\" className=\"text-lg flex items-center border-b border-gray-300 p-4\" onClick={toggleMenu}>\r\n <img\r\n className=\"h-6 w-6 mr-4\"\r\n src={viewCart}></img>\r\n Open Orders\r\n </Link>\r\n </div>\r\n </div>\r\n\r\n <div className={`flex items-center ${(token && user) ? 'justify-between' : 'justify-center'} w-full mx-5 sm:mx-12 md:mx-24 lg:hidden`}>\r\n {token && user && (\r\n <img\r\n className={`h-12 ${isOpen ? 'mobile-open' : 'mobile-close'}`}\r\n src={mobileMenu}\r\n alt=\"\"\r\n onClick={toggleMenu}></img>)\r\n }\r\n\r\n <img\r\n className=\"h-12\"\r\n src={mobileLogo}\r\n alt=\"\"\r\n onClick={() => navigate('/')}></img>\r\n \r\n {token && user && (\r\n <Link to=\"/basket\">\r\n <div className=\"relative\">\r\n <img className=\"z-0 w-8 h-8\" src={cartImg} alt=\"\" />\r\n <img className=\"absolute right-1/4 top-0.5 z-40 w-2 h-3\" src={dotIcon} alt=\"\" />\r\n </div>\r\n </Link>)\r\n }\r\n </div>\r\n\r\n <div className=\"w-full ml-32 mr-32 lg:flex hidden\">\r\n <img\r\n className=\"h-32 shadow-lg bg-white hover:cursor-pointer\"\r\n src=\"https://www.decora.co.uk/wp-content/themes/decora/assets/logo.png\"\r\n alt=\"\"\r\n onClick={() => navigate('/')}></img>\r\n <h1 className=\"text-3xl text-white font-serif p-8\">Wholesale</h1>\r\n <div className=\"flex justify-end items-center w-full text-white text-sm space-x-12 font-light\">\r\n {token && user ? (\r\n <>\r\n <AuthenticatedNavLinks />\r\n </>\r\n ) : (\r\n <>\r\n <Link to=\"https://www.decora.co.uk/\">Decora.co.uk</Link>\r\n <Link to=\"https://mydecora.co.uk/login\">My Decora</Link>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default NavBar;\r\n\r\n","const GenericRenderingError = () => {\r\n return <div>Something went wrong!</div>;\r\n};\r\n\r\nexport default GenericRenderingError;\r\n","import { ErrorBoundary } from 'react-error-boundary';\r\nimport { Outlet } from 'react-router-dom';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport Footer from '../features/layout/components/Footer';\r\nimport Navbar from '../features/layout/components/Navbar';\r\nimport GenericRenderingError from '../features/layout/components/GenericRenderingError';\r\n\r\nfunction App() {\r\n return (\r\n <>\r\n <ErrorBoundary FallbackComponent={GenericRenderingError}>\r\n <Navbar />\r\n <Outlet />\r\n <Footer />\r\n <ToastContainer\r\n position=\"bottom-right\"\r\n hideProgressBar={true}\r\n pauseOnFocusLoss={false}\r\n closeOnClick\r\n pauseOnHover\r\n limit={2}\r\n theme=\"colored\"\r\n />\r\n </ErrorBoundary>\r\n </>\r\n );\r\n}\r\n\r\nexport default App;\r\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext<FormikContextType<any>>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext<Values>() {\n const formik = React.useContext<FormikContextType<Values>>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.`\n );\n\n return formik;\n}\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike<any> =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent<any> =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n // check if path is not in the end\n if (p !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues<T>(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport invariant from 'tiny-warning';\nimport { FieldConfig } from './Field';\nimport { FormikProvider } from './FormikContext';\nimport {\n FieldHelperProps,\n FieldInputProps,\n FieldMetaProps,\n FormikConfig,\n FormikErrors,\n FormikHandlers,\n FormikHelpers,\n FormikProps,\n FormikState,\n FormikTouched,\n FormikValues,\n} from './types';\nimport {\n getActiveElement,\n getIn,\n isEmptyChildren,\n isFunction,\n isObject,\n isPromise,\n isString,\n setIn,\n setNestedObjectValues,\n} from './utils';\n\ntype FormikMessage<Values> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched<Values> }\n | { type: 'SET_ERRORS'; payload: FormikErrors<Values> }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState<Values>) => FormikState<Values>;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState<Values>;\n };\n\n// State reducer\nfunction formikReducer<Values>(\n state: FormikState<Values>,\n msg: FormikMessage<Values>\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues<FormikTouched<Values>>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors<unknown> = {};\nconst emptyTouched: FormikTouched<unknown> = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise<string> | undefined;\n };\n}\n\nexport function useFormik<Values extends FormikValues = FormikValues>({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig<Values>) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef<boolean>(false);\n const fieldRegistry = React.useRef<FieldRegistry>({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [, setIteration] = React.useState(0);\n const stateRef = React.useRef<FormikState<Values>>({\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const state = stateRef.current;\n\n const dispatch = React.useCallback((action: FormikMessage<Values>) => {\n const prev = stateRef.current;\n\n stateRef.current = formikReducer(prev, action);\n\n // force rerender\n if (prev !== stateRef.current) setIteration(x => x + 1);\n }, []);\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise<any>).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validate />`,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise<string> => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise<FormikErrors<Values>> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise<string>[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all<FormikErrors<Values>>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial<FormikState<Values>>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise<any>).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched<Values>, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors<Values>) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction<Values>, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent<any>, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent<any>).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent<any>).target\n : (eventOrTextValue as React.ChangeEvent<any>).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // <select multiple>\n ? getSelectedValues(options)\n : value;\n }\n\n if (field) {\n // Set form fields by name\n setFieldValue(field, val);\n }\n },\n [setFieldValue, state.values]\n );\n\n const handleChange = useEventCallback<FormikHandlers['handleChange']>(\n (\n eventOrPath: string | React.ChangeEvent<any>\n ): void | ((eventOrTextValue: string | React.ChangeEvent<any>) => void) => {\n if (isString(eventOrPath)) {\n return event => executeChange(event, eventOrPath);\n } else {\n executeChange(eventOrPath);\n }\n }\n );\n\n const setFieldTouched = useEventCallback(\n (field: string, touched: boolean = true, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field,\n value: touched,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const executeBlur = React.useCallback(\n (e: any, path?: string) => {\n if (e.persist) {\n e.persist();\n }\n const { name, id, outerHTML } = e.target;\n const field = path ? path : name ? name : id;\n\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur',\n });\n }\n\n setFieldTouched(field, true);\n },\n [setFieldTouched]\n );\n\n const handleBlur = useEventCallback<FormikHandlers['handleBlur']>(\n (eventOrString: any): void | ((e: any) => void) => {\n if (isString(eventOrString)) {\n return event => executeBlur(event, eventOrString);\n } else {\n executeBlur(eventOrString);\n }\n }\n );\n\n const setFormikState = React.useCallback(\n (\n stateOrCb:\n | FormikState<Values>\n | ((state: FormikState<Values>) => FormikState<Values>)\n ): void => {\n if (isFunction(stateOrCb)) {\n dispatch({ type: 'SET_FORMIK_STATE', payload: stateOrCb });\n } else {\n dispatch({ type: 'SET_FORMIK_STATE', payload: () => stateOrCb });\n }\n },\n []\n );\n\n const setStatus = React.useCallback((status: any) => {\n dispatch({ type: 'SET_STATUS', payload: status });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const submitForm = useEventCallback(() => {\n dispatch({ type: 'SUBMIT_ATTEMPT' });\n return validateFormWithHighPriority().then(\n (combinedErrors: FormikErrors<Values>) => {\n // In case an error was thrown and passed to the resolved Promise,\n // `combinedErrors` can be an instance of an Error. We need to check\n // that and abort the submit.\n // If we don't do that, calling `Object.keys(new Error())` yields an\n // empty array, which causes the validation to pass and the form\n // to be submitted.\n\n const isInstanceOfError = combinedErrors instanceof Error;\n const isActuallyValid =\n !isInstanceOfError && Object.keys(combinedErrors).length === 0;\n if (isActuallyValid) {\n // Proceed with submit...\n //\n // To respect sync submit fns, we can't simply wrap executeSubmit in a promise and\n // _always_ dispatch SUBMIT_SUCCESS because isSubmitting would then always be false.\n // This would be fine in simple cases, but make it impossible to disable submit\n // buttons where people use callbacks or promises as side effects (which is basically\n // all of v1 Formik code). Instead, recall that we are inside of a promise chain already,\n // so we can try/catch executeSubmit(), if it returns undefined, then just bail.\n // If there are errors, throw em. Otherwise, wrap executeSubmit in a promise and handle\n // cleanup of isSubmitting on behalf of the consumer.\n let promiseOrUndefined;\n try {\n promiseOrUndefined = executeSubmit();\n // Bail if it's sync, consumer is responsible for cleaning up\n // via setSubmitting(false)\n if (promiseOrUndefined === undefined) {\n return;\n }\n } catch (error) {\n throw error;\n }\n\n return Promise.resolve(promiseOrUndefined)\n .then(result => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_SUCCESS' });\n }\n return result;\n })\n .catch(_errors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_FAILURE' });\n // This is a legit error rejected by the onSubmit fn\n // so we don't want to break the promise chain\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n // ^^^ Make sure Formik is still mounted before updating state\n dispatch({ type: 'SUBMIT_FAILURE' });\n // throw combinedErrors;\n if (isInstanceOfError) {\n throw combinedErrors;\n }\n }\n return;\n }\n );\n });\n\n const handleSubmit = useEventCallback(\n (e?: React.FormEvent<HTMLFormElement>) => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n // Warn if form submission is triggered by a <button> without a\n // specified `type` attribute during development. This mitigates\n // a common gotcha in forms with both reset and submit buttons,\n // where the dev forgets to add type=\"button\" to the reset button.\n if (__DEV__ && typeof document !== 'undefined') {\n // Safely get the active element (works with IE)\n const activeElement = getActiveElement();\n if (\n activeElement !== null &&\n activeElement instanceof HTMLButtonElement\n ) {\n invariant(\n activeElement.attributes &&\n activeElement.attributes.getNamedItem('type'),\n 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.'\n );\n }\n }\n\n submitForm().catch(reason => {\n console.warn(\n `Warning: An unhandled error was caught from submitForm()`,\n reason\n );\n });\n }\n );\n\n const imperativeMethods: FormikHelpers<Values> = {\n resetForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n setErrors,\n setFieldError,\n setFieldTouched,\n setFieldValue,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n setFormikState,\n submitForm,\n };\n\n const executeSubmit = useEventCallback(() => {\n return onSubmit(state.values, imperativeMethods);\n });\n\n const handleReset = useEventCallback(e => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n resetForm();\n });\n\n const getFieldMeta = React.useCallback(\n (name: string): FieldMetaProps<any> => {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name),\n };\n },\n [state.errors, state.touched, state.values]\n );\n\n const getFieldHelpers = React.useCallback(\n (name: string): FieldHelperProps<any> => {\n return {\n setValue: (value: any, shouldValidate?: boolean) =>\n setFieldValue(name, value, shouldValidate),\n setTouched: (value: boolean, shouldValidate?: boolean) =>\n setFieldTouched(name, value, shouldValidate),\n setError: (value: any) => setFieldError(name, value),\n };\n },\n [setFieldValue, setFieldTouched, setFieldError]\n );\n\n const getFieldProps = React.useCallback(\n (nameOrOptions: string | FieldConfig<any>): FieldInputProps<any> => {\n const isAnObject = isObject(nameOrOptions);\n const name = isAnObject\n ? (nameOrOptions as FieldConfig<any>).name\n : nameOrOptions;\n const valueState = getIn(state.values, name);\n\n const field: FieldInputProps<any> = {\n name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n if (isAnObject) {\n const {\n type,\n value: valueProp, // value is special for checkboxes\n as: is,\n multiple,\n } = nameOrOptions as FieldConfig<any>;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(\n Array.isArray(valueState) && ~valueState.indexOf(valueProp)\n );\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n return field;\n },\n [handleBlur, handleChange, state.values]\n );\n\n const dirty = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [initialValues.current, state.values]\n );\n\n const isValid = React.useMemo(\n () =>\n typeof isInitialValid !== 'undefined'\n ? dirty\n ? state.errors && Object.keys(state.errors).length === 0\n : isInitialValid !== false && isFunction(isInitialValid)\n ? (isInitialValid as (props: FormikConfig<Values>) => boolean)(props)\n : (isInitialValid as boolean)\n : state.errors && Object.keys(state.errors).length === 0,\n [isInitialValid, dirty, state.errors, props]\n );\n\n const ctx = {\n ...state,\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur,\n handleChange,\n handleReset,\n handleSubmit,\n resetForm,\n setErrors,\n setFormikState,\n setFieldTouched,\n setFieldValue,\n setFieldError,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n submitForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n isValid,\n dirty,\n unregisterField,\n registerField,\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n validateOnBlur,\n validateOnChange,\n validateOnMount,\n };\n\n return ctx;\n}\n\nexport function Formik<\n Values extends FormikValues = FormikValues,\n ExtraProps = {}\n>(props: FormikConfig<Values> & ExtraProps) {\n const formikbag = useFormik<Values>(props);\n const { component, children, render, innerRef } = props;\n\n // This allows folks to pass a ref to <Formik />\n React.useImperativeHandle(innerRef, () => formikbag);\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !props.render,\n `<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>`\n );\n // eslint-disable-next-line\n }, []);\n }\n return (\n <FormikProvider value={formikbag}>\n {component\n ? React.createElement(component as any, formikbag)\n : render\n ? render(formikbag)\n : children // children come last, always called\n ? isFunction(children)\n ? (children as (bag: FormikProps<Values>) => React.ReactNode)(\n formikbag as FormikProps<Values>\n )\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null}\n </FormikProvider>\n );\n}\n\nfunction warnAboutMissingIdentifier({\n htmlContent,\n documentationAnchorLink,\n handlerName,\n}: {\n htmlContent: string;\n documentationAnchorLink: string;\n handlerName: string;\n}) {\n console.warn(\n `Warning: Formik called \\`${handlerName}\\`, but you forgot to pass an \\`id\\` or \\`name\\` attribute to your input:\n ${htmlContent}\n Formik cannot determine which value to update. For more info see https://formik.org/docs/api/formik#${documentationAnchorLink}\n `\n );\n}\n\n/**\n * Transform Yup ValidationError to a more usable object\n */\nexport function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {\n let errors: FormikErrors<Values> = {};\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n for (let err of yupError.inner) {\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n return errors;\n}\n\n/**\n * Validate a yup schema.\n */\nexport function validateYupSchema<T extends FormikValues>(\n values: T,\n schema: any,\n sync: boolean = false,\n context?: any\n): Promise<Partial<T>> {\n const normalizedValues: FormikValues = prepareDataForValidation(values);\n\n return schema[sync ? 'validateSync' : 'validate'](normalizedValues, {\n abortEarly: false,\n context: context || normalizedValues,\n });\n}\n\n/**\n * Recursively prepare values.\n */\nexport function prepareDataForValidation<T extends FormikValues>(\n values: T\n): FormikValues {\n let data: FormikValues = Array.isArray(values) ? [] : {};\n for (let k in values) {\n if (Object.prototype.hasOwnProperty.call(values, k)) {\n const key = String(k);\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map((value: any) => {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n return data;\n}\n\n/**\n * deepmerge array merging algorithm\n * https://github.com/KyleAMathews/deepmerge#combine-array\n */\nfunction arrayMerge(target: any[], source: any[], options: any): any[] {\n const destination = target.slice();\n\n source.forEach(function merge(e: any, i: number) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone\n ? deepmerge(Array.isArray(e) ? [] : {}, e, options)\n : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\n/** Return multi select values based on an array of options */\nfunction getSelectedValues(options: any[]) {\n return Array.from(options)\n .filter(el => el.selected)\n .map(el => el.value);\n}\n\n/** Return the next value for a checkbox */\nfunction getValueForCheckbox(\n currentValue: string | any[],\n checked: boolean,\n valueProp: any\n) {\n // If the current value was a boolean, return a boolean\n if (typeof currentValue === 'boolean') {\n return Boolean(checked);\n }\n\n // If the currentValue was not a boolean we want to return an array\n let currentArrayOfValues = [];\n let isValueInArray = false;\n let index = -1;\n\n if (!Array.isArray(currentValue)) {\n // eslint-disable-next-line eqeqeq\n if (!valueProp || valueProp == 'true' || valueProp == 'false') {\n return Boolean(checked);\n }\n } else {\n // If the current value is already an array, use it\n currentArrayOfValues = currentValue;\n index = currentValue.indexOf(valueProp);\n isValueInArray = index >= 0;\n }\n\n // If the checkbox was checked and the value is not already present in the aray we want to add the new value to the array of values\n if (checked && valueProp && !isValueInArray) {\n return currentArrayOfValues.concat(valueProp);\n }\n\n // If the checkbox was unchecked and the value is not in the array, simply return the already existing array of values\n if (!isValueInArray) {\n return currentArrayOfValues;\n }\n\n // If the checkbox was unchecked and the value is in the array, remove the value and return the array\n return currentArrayOfValues\n .slice(0, index)\n .concat(currentArrayOfValues.slice(index + 1));\n}\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect;\n\nfunction useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref: any = React.useRef(fn);\n\n // we copy a ref to the callback scoped to the current state/props on each render\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback(\n (...args: any[]) => ref.current.apply(void 0, args),\n []\n ) as T;\n}\n","import * as React from 'react';\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FieldValidator,\n} from './types';\nimport { useFormikContext } from './FormikContext';\nimport { isFunction, isEmptyChildren, isObject } from './utils';\nimport invariant from 'tiny-warning';\n\nexport interface FieldProps<V = any, FormValues = any> {\n field: FieldInputProps<V>;\n form: FormikProps<FormValues>; // if ppl want to restrict this for a given form, let them.\n meta: FieldMetaProps<V>;\n}\n\nexport interface FieldConfig<V = any> {\n /**\n * Field component to render. Can either be a string like 'select' or a component.\n */\n component?:\n | string\n | React.ComponentType<FieldProps<V>>\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Component to render. Can either be a string e.g. 'select', 'input', or 'textarea', or a component.\n */\n as?:\n | React.ComponentType<FieldProps<V>['field']>\n | string\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Render prop (works like React router's <Route render={props =>} />)\n * @deprecated\n */\n render?: (props: FieldProps<V>) => React.ReactNode;\n\n /**\n * Children render function <Field name>{props => ...}</Field>)\n */\n children?: ((props: FieldProps<V>) => React.ReactNode) | React.ReactNode;\n\n /**\n * Validate a single field value independently\n */\n validate?: FieldValidator;\n\n /**\n * Used for 'select' and related input types.\n */\n multiple?: boolean;\n\n /**\n * Field name\n */\n name: string;\n\n /** HTML input type */\n type?: string;\n\n /** Field value */\n value?: any;\n\n /** Inner ref */\n innerRef?: (instance: any) => void;\n}\n\nexport type FieldAttributes<T> = GenericFieldHTMLAttributes &\n FieldConfig<T> &\n T & { name: string };\n\nexport type FieldHookConfig<T> = GenericFieldHTMLAttributes & FieldConfig<T>;\n\nexport function useField<Val = any>(\n propsOrFieldName: string | FieldHookConfig<Val>\n): [FieldInputProps<Val>, FieldMetaProps<Val>, FieldHelperProps<Val>] {\n const formik = useFormikContext();\n const {\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n registerField,\n unregisterField,\n } = formik;\n\n const isAnObject = isObject(propsOrFieldName);\n\n // Normalize propsOrFieldName to FieldHookConfig<Val>\n const props: FieldHookConfig<Val> = isAnObject\n ? (propsOrFieldName as FieldHookConfig<Val>)\n : { name: propsOrFieldName as string };\n\n const { name: fieldName, validate: validateFn } = props;\n\n React.useEffect(() => {\n if (fieldName) {\n registerField(fieldName, {\n validate: validateFn,\n });\n }\n return () => {\n if (fieldName) {\n unregisterField(fieldName);\n }\n };\n }, [registerField, unregisterField, fieldName, validateFn]);\n\n if (__DEV__) {\n invariant(\n formik,\n 'useField() / <Field /> must be used underneath a <Formik> component or withFormik() higher order component'\n );\n }\n\n invariant(\n fieldName,\n 'Invalid field name. Either pass `useField` a string or an object containing a `name` key.'\n );\n\n const fieldHelpers = React.useMemo(() => getFieldHelpers(fieldName), [\n getFieldHelpers,\n fieldName,\n ]);\n\n return [getFieldProps(props), getFieldMeta(fieldName), fieldHelpers];\n}\n\nexport function Field({\n validate,\n name,\n render,\n children,\n as: is, // `as` is reserved in typescript lol\n component,\n ...props\n}: FieldAttributes<any>) {\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n\n ...formik\n } = useFormikContext();\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !render,\n `<Field render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Field name=\"${name}\" render={({field, form}) => ...} /> with <Field name=\"${name}\">{({field, form, meta}) => ...}</Field>`\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <Field as> and <Field children> as a function in the same <Field> component; <Field as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <Field component> and <Field children> as a function in the same <Field> component; <Field component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <Field render> and <Field children> in the same <Field> component; <Field children> will be ignored'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n // Register field and field-level validation with parent <Formik>\n const { registerField, unregisterField } = formik;\n React.useEffect(() => {\n registerField(name, {\n validate: validate,\n });\n return () => {\n unregisterField(name);\n };\n }, [registerField, unregisterField, name, validate]);\n const field = formik.getFieldProps({ name, ...props });\n const meta = formik.getFieldMeta(name);\n const legacyBag = { field, form: formik };\n\n if (render) {\n return render({ ...legacyBag, meta });\n }\n\n if (isFunction(children)) {\n return children({ ...legacyBag, meta });\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n\n return React.createElement(asElement, { ...field, ...props }, children);\n}\n","import * as React from 'react';\nimport { useFormikContext } from './FormikContext';\n\nexport type FormikFormProps = Pick<\n React.FormHTMLAttributes<HTMLFormElement>,\n Exclude<\n keyof React.FormHTMLAttributes<HTMLFormElement>,\n 'onReset' | 'onSubmit'\n >\n>;\n\ntype FormProps = React.ComponentPropsWithoutRef<'form'>;\n\n// @todo tests\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props: FormikFormProps, ref) => {\n // iOS needs an \"action\" attribute for nice input: https://stackoverflow.com/a/39485162/406725\n // We default the action to \"#\" in case the preventDefault fails (just updates the URL hash)\n const { action, ...rest } = props;\n const _action = action ?? '#';\n const { handleReset, handleSubmit } = useFormikContext();\n return (\n <form\n onSubmit={handleSubmit}\n ref={ref}\n onReset={handleReset}\n action={_action}\n {...rest}\n />\n );\n }\n);\n\nForm.displayName = 'Form';\n","import * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\nimport { FormikContextType } from './types';\nimport { FormikConsumer } from './FormikContext';\nimport invariant from 'tiny-warning';\n\n/**\n * Connect any component to Formik context, and inject as a prop called `formik`;\n * @param Comp React Component\n */\nexport function connect<OuterProps, Values = {}>(\n Comp: React.ComponentType<OuterProps & { formik: FormikContextType<Values> }>\n) {\n const C: React.FC<OuterProps> = props => (\n <FormikConsumer>\n {formik => {\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are rendering <Form>, <Field>, <FastField>, <FieldArray>, or your custom context-using component as a child of a <Formik> component. Component name: ${Comp.name}`\n );\n return <Comp {...props} formik={formik} />;\n }}\n </FormikConsumer>\n );\n\n const componentDisplayName =\n Comp.displayName ||\n Comp.name ||\n (Comp.constructor && Comp.constructor.name) ||\n 'Component';\n\n // Assign Comp to C.WrappedComponent so we can access the inner component in tests\n // For example, <Field.WrappedComponent /> gets us <FieldInner/>\n (C as React.FC<OuterProps> & {\n WrappedComponent: typeof Comp;\n }).WrappedComponent = Comp;\n\n C.displayName = `FormikConnect(${componentDisplayName})`;\n\n return hoistNonReactStatics(\n C,\n Comp as React.ComponentClass<\n OuterProps & { formik: FormikContextType<Values> }\n > // cast type to ComponentClass (even if SFC)\n );\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport { connect } from './connect';\nimport {\n FormikContextType,\n FormikProps,\n FormikState,\n SharedRenderProps,\n} from './types';\nimport {\n getIn,\n isEmptyArray,\n isEmptyChildren,\n isFunction,\n isObject,\n setIn,\n} from './utils';\n\nexport type FieldArrayRenderProps = ArrayHelpers & {\n form: FormikProps<any>;\n name: string;\n};\n\nexport type FieldArrayConfig = {\n /** Really the path to the array field to be updated */\n name: string;\n /** Should field array validate the form AFTER array updates/changes? */\n validateOnChange?: boolean;\n} & SharedRenderProps<FieldArrayRenderProps>;\nexport interface ArrayHelpers<T extends any[] = any[]> {\n /** Imperatively add a value to the end of an array */\n push<X = T[number]>(obj: X): void;\n /** Curried fn to add a value to the end of an array */\n handlePush<X = T[number]>(obj: X): () => void;\n /** Imperatively swap two values in an array */\n swap: (indexA: number, indexB: number) => void;\n /** Curried fn to swap two values in an array */\n handleSwap: (indexA: number, indexB: number) => () => void;\n /** Imperatively move an element in an array to another index */\n move: (from: number, to: number) => void;\n /** Imperatively move an element in an array to another index */\n handleMove: (from: number, to: number) => () => void;\n /** Imperatively insert an element at a given index into the array */\n insert<X = T[number]>(index: number, value: X): void;\n /** Curried fn to insert an element at a given index into the array */\n handleInsert<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively replace a value at an index of an array */\n replace<X = T[number]>(index: number, value: X): void;\n /** Curried fn to replace an element at a given index into the array */\n handleReplace<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively add an element to the beginning of an array and return its length */\n unshift<X = T[number]>(value: X): number;\n /** Curried fn to add an element to the beginning of an array */\n handleUnshift<X = T[number]>(value: X): () => void;\n /** Curried fn to remove an element at an index of an array */\n handleRemove: (index: number) => () => void;\n /** Curried fn to remove a value from the end of the array */\n handlePop: () => () => void;\n /** Imperatively remove and element at an index of an array */\n remove<X = T[number]>(index: number): X | undefined;\n /** Imperatively remove and return value from the end of the array */\n pop<X = T[number]>(): X | undefined;\n}\n\n/**\n * Some array helpers!\n */\nexport const move = <T,>(array: T[], from: number, to: number) => {\n const copy = copyArrayLike(array);\n const value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\n\nexport const swap = <T,>(\n arrayLike: ArrayLike<T>,\n indexA: number,\n indexB: number\n) => {\n const copy = copyArrayLike(arrayLike);\n const a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\n\nexport const insert = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\n\nexport const replace = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nconst copyArrayLike = (arrayLike: ArrayLike<any>) => {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [...arrayLike];\n } else {\n const maxIndex = Object.keys(arrayLike)\n .map(key => parseInt(key))\n .reduce((max, el) => (el > max ? el : max), 0);\n return Array.from({ ...arrayLike, length: maxIndex + 1 });\n }\n};\n\nconst createAlterationHandler = (\n alteration: boolean | Function,\n defaultFunction: Function\n) => {\n const fn = typeof alteration === 'function' ? alteration : defaultFunction;\n\n return (data: any | any[]) => {\n if (Array.isArray(data) || isObject(data)) {\n const clone = copyArrayLike(data);\n return fn(clone);\n }\n\n // This can be assumed to be a primitive, which\n // is a case for top level validation errors\n return data;\n };\n};\n\nclass FieldArrayInner<Values = {}> extends React.Component<\n FieldArrayConfig & { formik: FormikContextType<Values> },\n {}\n> {\n static defaultProps = {\n validateOnChange: true,\n };\n\n constructor(props: FieldArrayConfig & { formik: FormikContextType<Values> }) {\n super(props);\n // We need TypeScript generics on these, so we'll bind them in the constructor\n // @todo Fix TS 3.2.1\n this.remove = this.remove.bind(this) as any;\n this.pop = this.pop.bind(this) as any;\n }\n\n componentDidUpdate(\n prevProps: FieldArrayConfig & { formik: FormikContextType<Values> }\n ) {\n if (\n this.props.validateOnChange &&\n this.props.formik.validateOnChange &&\n !isEqual(\n getIn(prevProps.formik.values, prevProps.name),\n getIn(this.props.formik.values, this.props.name)\n )\n ) {\n this.props.formik.validateForm(this.props.formik.values);\n }\n }\n\n updateArrayField = (\n fn: Function,\n alterTouched: boolean | Function,\n alterErrors: boolean | Function\n ) => {\n const {\n name,\n\n formik: { setFormikState },\n } = this.props;\n\n setFormikState((prevState: FormikState<any>) => {\n let updateErrors = createAlterationHandler(alterErrors, fn);\n let updateTouched = createAlterationHandler(alterTouched, fn);\n\n // values fn should be executed before updateErrors and updateTouched,\n // otherwise it causes an error with unshift.\n let values = setIn(\n prevState.values,\n name,\n fn(getIn(prevState.values, name))\n );\n\n let fieldError = alterErrors\n ? updateErrors(getIn(prevState.errors, name))\n : undefined;\n let fieldTouched = alterTouched\n ? updateTouched(getIn(prevState.touched, name))\n : undefined;\n\n if (isEmptyArray(fieldError)) {\n fieldError = undefined;\n }\n if (isEmptyArray(fieldTouched)) {\n fieldTouched = undefined;\n }\n\n return {\n ...prevState,\n values,\n errors: alterErrors\n ? setIn(prevState.errors, name, fieldError)\n : prevState.errors,\n touched: alterTouched\n ? setIn(prevState.touched, name, fieldTouched)\n : prevState.touched,\n };\n });\n };\n\n push = (value: any) =>\n this.updateArrayField(\n (arrayLike: ArrayLike<any>) => [\n ...copyArrayLike(arrayLike),\n cloneDeep(value),\n ],\n false,\n false\n );\n\n handlePush = (value: any) => () => this.push(value);\n\n swap = (indexA: number, indexB: number) =>\n this.updateArrayField(\n (array: any[]) => swap(array, indexA, indexB),\n true,\n true\n );\n\n handleSwap = (indexA: number, indexB: number) => () =>\n this.swap(indexA, indexB);\n\n move = (from: number, to: number) =>\n this.updateArrayField((array: any[]) => move(array, from, to), true, true);\n\n handleMove = (from: number, to: number) => () => this.move(from, to);\n\n insert = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => insert(array, index, value),\n (array: any[]) => insert(array, index, null),\n (array: any[]) => insert(array, index, null)\n );\n\n handleInsert = (index: number, value: any) => () => this.insert(index, value);\n\n replace = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => replace(array, index, value),\n false,\n false\n );\n\n handleReplace = (index: number, value: any) => () =>\n this.replace(index, value);\n\n unshift = (value: any) => {\n let length = -1;\n this.updateArrayField(\n (array: any[]) => {\n const arr = array ? [value, ...array] : [value];\n\n length = arr.length;\n\n return arr;\n },\n (array: any[]) => {\n return array ? [null, ...array] : [null];\n },\n (array: any[]) => {\n return array ? [null, ...array] : [null];\n }\n );\n\n return length;\n };\n\n handleUnshift = (value: any) => () => this.unshift(value);\n\n remove<T>(index: number): T {\n // We need to make sure we also remove relevant pieces of `touched` and `errors`\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array?: any[]) => {\n const copy = array ? copyArrayLike(array) : [];\n if (!result) {\n result = copy[index];\n }\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n // if the array only includes undefined values we have to return an empty array\n return isFunction(copy.every)\n ? copy.every(v => v === undefined)\n ? []\n : copy\n : copy;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handleRemove = (index: number) => () => this.remove<any>(index);\n\n pop<T>(): T {\n // Remove relevant pieces of `touched` and `errors` too!\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array: any[]) => {\n const tmp = array.slice();\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n return tmp;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handlePop = () => () => this.pop<any>();\n\n render() {\n const arrayHelpers: ArrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove,\n };\n\n const {\n component,\n render,\n children,\n name,\n formik: {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n },\n } = this.props;\n\n const props: FieldArrayRenderProps = {\n ...arrayHelpers,\n form: restOfFormik,\n name,\n };\n\n return component\n ? React.createElement(component as any, props)\n : render\n ? (render as any)(props)\n : children // children come last, always called\n ? typeof children === 'function'\n ? (children as any)(props)\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null;\n }\n}\n\nexport const FieldArray = connect<FieldArrayConfig, any>(FieldArrayInner);\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport { getIn, isFunction } from './utils';\nimport { connect } from './connect';\n\nexport interface ErrorMessageProps {\n id?: string;\n name: string;\n className?: string;\n component?: string | React.ComponentType;\n children?: (errorMessage: string) => React.ReactNode;\n render?: (errorMessage: string) => React.ReactNode;\n}\n\nclass ErrorMessageImpl extends React.Component<\n ErrorMessageProps & { formik: FormikContextType<any> }\n> {\n shouldComponentUpdate(\n props: ErrorMessageProps & { formik: FormikContextType<any> }\n ) {\n if (\n getIn(this.props.formik.errors, this.props.name) !==\n getIn(props.formik.errors, this.props.name) ||\n getIn(this.props.formik.touched, this.props.name) !==\n getIn(props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n render() {\n let { component, formik, render, children, name, ...rest } = this.props;\n\n const touch = getIn(formik.touched, name);\n const error = getIn(formik.errors, name);\n\n return !!touch && !!error\n ? render\n ? isFunction(render)\n ? render(error)\n : null\n : children\n ? isFunction(children)\n ? children(error)\n : null\n : component\n ? React.createElement(component, rest as any, error)\n : error\n : null;\n }\n}\n\nexport const ErrorMessage = connect<\n ErrorMessageProps,\n ErrorMessageProps & { formik: FormikContextType<any> }\n>(ErrorMessageImpl);\n","import rootApiSlice from '../../../app/api/slice';\r\nimport { LoginCredentials } from '../components/Login';\r\nimport { User } from './slice';\r\nimport { ChangePasswordCredentials } from '../components/ChangePassword';\r\n\r\nexport type LoginResponse = {\r\n accessToken: string | null;\r\n refreshToken: string | null;\r\n user: User | null;\r\n error: string | null;\r\n};\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n login: builder.mutation<LoginResponse, LoginCredentials>({\r\n query: (credentials) => ({\r\n url: '/auth/login',\r\n method: 'POST',\r\n body: { ...credentials },\r\n extraOptions: { shouldRedirect: false }\r\n })\r\n }),\r\n changePassword: builder.mutation<void, ChangePasswordCredentials>({\r\n query: (passwordInformation) => ({\r\n url: '/auth/changepassword',\r\n method: 'POST',\r\n body: { ...passwordInformation }\r\n })\r\n }),\r\n refresh: builder.query<LoginResponse, string>({\r\n query: (rt) => ({\r\n url: `/auth/refresh/${rt}`,\r\n method: 'GET'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const { useLoginMutation, useChangePasswordMutation, useLazyRefreshQuery } = apiSlice;\r\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 if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\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 return object;\n}","import { getter, forEach, split, normalizePath, join } from 'property-expr';\nimport { camelCase, snakeCase } from 'tiny-case';\nimport toposort from 'toposort';\n\nconst toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\nfunction printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nfunction toArray(value) {\n return value == null ? [] : [].concat(value);\n}\n\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nclass ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = Object.assign({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n constructor(errorOrErrors, value, field, type) {\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.errors = void 0;\n this.params = void 0;\n this.inner = void 0;\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n this.inner = this.inner.concat(err.inner.length ? err.inner : err);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n }\n}\n\nlet mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n defined: '${path} must be defined',\n notNull: '${path} cannot be null',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n const castMsg = originalValue != null && originalValue !== value ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.';\n return type !== 'mixed' ? `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + castMsg : `${path} must match the configured type. ` + `The validated value was: \\`${printValue(value, true)}\\`` + castMsg;\n }\n};\nlet string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nlet number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nlet date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nlet boolean = {\n isValue: '${path} field must be ${value}'\n};\nlet object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nlet array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nlet tuple = {\n notType: params => {\n const {\n path,\n value,\n spec\n } = params;\n const typeLen = spec.types.length;\n if (Array.isArray(value)) {\n if (value.length < typeLen) return `${path} tuple value has too few items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n if (value.length > typeLen) return `${path} tuple value has too many items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n }\n return ValidationError.formatError(mixed.notType, params);\n }\n};\nvar locale = Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean\n});\n\nconst isSchema = obj => obj && obj.__isYupSchema__;\n\nclass Condition {\n static fromOptions(refs, config) {\n if (!config.then && !config.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = config;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n return new Condition(refs, (values, schema) => {\n var _branch;\n let branch = check(...values) ? then : otherwise;\n return (_branch = branch == null ? void 0 : branch(schema)) != null ? _branch : schema;\n });\n }\n constructor(refs, builder) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n this.fn = builder;\n }\n resolve(base, options) {\n let values = this.refs.map(ref =>\n // TODO: ? operator here?\n ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn(values, base, options);\n if (schema === undefined ||\n // @ts-ignore this can be base\n schema === base) {\n return base;\n }\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n}\n\nconst prefixes = {\n context: '$',\n value: '.'\n};\nfunction create$9(key, options) {\n return new Reference(key, options);\n}\nclass Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n resolve() {\n return this;\n }\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n toString() {\n return `Ref(${this.key})`;\n }\n static isRef(value) {\n return value && value.__isYupRef;\n }\n}\n\n// @ts-ignore\nReference.prototype.__isYupRef = true;\n\nconst isAbsent = value => value == null;\n\nfunction createValidation(config) {\n function validate({\n value,\n path = '',\n options,\n originalValue,\n schema\n }, panic, next) {\n const {\n name,\n test,\n params,\n message,\n skipAbsent\n } = config;\n let {\n parent,\n context,\n abortEarly = schema.spec.abortEarly\n } = options;\n function resolve(item) {\n return Reference.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n function createError(overrides = {}) {\n const nextParams = Object.assign({\n value,\n originalValue,\n label: schema.spec.label,\n path: overrides.path || path,\n spec: schema.spec\n }, params, overrides.params);\n for (const key of Object.keys(nextParams)) nextParams[key] = resolve(nextParams[key]);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n const invalid = abortEarly ? panic : next;\n let ctx = {\n path,\n parent,\n type: name,\n from: options.from,\n createError,\n resolve,\n options,\n originalValue,\n schema\n };\n const handleResult = validOrError => {\n if (ValidationError.isError(validOrError)) invalid(validOrError);else if (!validOrError) invalid(createError());else next(null);\n };\n const handleError = err => {\n if (ValidationError.isError(err)) invalid(err);else panic(err);\n };\n const shouldSkip = skipAbsent && isAbsent(value);\n if (!options.sync) {\n try {\n Promise.resolve(!shouldSkip ? test.call(ctx, value, ctx) : true).then(handleResult, handleError);\n } catch (err) {\n handleError(err);\n }\n return;\n }\n let result;\n try {\n var _result;\n result = !shouldSkip ? test.call(ctx, value, ctx) : true;\n if (typeof ((_result = result) == null ? void 0 : _result.then) === 'function') {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n } catch (err) {\n handleError(err);\n return;\n }\n handleResult(result);\n }\n validate.OPTIONS = config;\n return validate;\n}\n\nfunction getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug;\n\n // root path: ''\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? _part.slice(1, _part.length - 1) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n let isTuple = schema.type === 'tuple';\n let idx = isArray ? parseInt(part, 10) : 0;\n if (schema.innerType || isTuple) {\n if (isTuple && !isArray) throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part \"${lastPartDebug}\" must contain an index to the tuple element, e.g. \"${lastPartDebug}[0]\"`);\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n parent = value;\n value = value && value[idx];\n schema = isTuple ? schema.spec.types[idx] : schema.innerType;\n }\n\n // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema.type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\nfunction reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n}\n\nclass ReferenceSet extends Set {\n describe() {\n const description = [];\n for (const item of this.values()) {\n description.push(Reference.isRef(item) ? item.describe() : item);\n }\n return description;\n }\n resolveAll(resolve) {\n let result = [];\n for (const item of this.values()) {\n result.push(resolve(item));\n }\n return result;\n }\n clone() {\n return new ReferenceSet(this.values());\n }\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.forEach(value => next.add(value));\n removeItems.forEach(value => next.delete(value));\n return next;\n }\n}\n\n// tweaked from https://github.com/Kelin2025/nanoclone/blob/0abeb7635bda9b68ef2277093f76dbe3bf3948e1/src/index.js\nfunction clone(src, seen = new Map()) {\n if (isSchema(src) || !src || typeof src !== 'object') return src;\n if (seen.has(src)) return seen.get(src);\n let copy;\n if (src instanceof Date) {\n // Date\n copy = new Date(src.getTime());\n seen.set(src, copy);\n } else if (src instanceof RegExp) {\n // RegExp\n copy = new RegExp(src);\n seen.set(src, copy);\n } else if (Array.isArray(src)) {\n // Array\n copy = new Array(src.length);\n seen.set(src, copy);\n for (let i = 0; i < src.length; i++) copy[i] = clone(src[i], seen);\n } else if (src instanceof Map) {\n // Map\n copy = new Map();\n seen.set(src, copy);\n for (const [k, v] of src.entries()) copy.set(k, clone(v, seen));\n } else if (src instanceof Set) {\n // Set\n copy = new Set();\n seen.set(src, copy);\n for (const v of src) copy.add(clone(v, seen));\n } else if (src instanceof Object) {\n // Object\n copy = {};\n seen.set(src, copy);\n for (const [k, v] of Object.entries(src)) copy[k] = clone(v, seen);\n } else {\n throw Error(`Unable to clone ${src}`);\n }\n return copy;\n}\n\nclass Schema {\n constructor(options) {\n this.type = void 0;\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this.internalTests = {};\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this._typeCheck = void 0;\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(mixed.notType);\n });\n this.type = options.type;\n this._typeCheck = options.check;\n this.spec = Object.assign({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n nullable: false,\n optional: true,\n coerce: true\n }, options == null ? void 0 : options.spec);\n this.withMutation(s => {\n s.nonNullable();\n });\n }\n\n // TODO: remove\n get _type() {\n return this.type;\n }\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n }\n\n // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n const next = Object.create(Object.getPrototypeOf(this));\n\n // @ts-expect-error this is readonly\n next.type = this.type;\n next._typeCheck = this._typeCheck;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.internalTests = Object.assign({}, this.internalTests);\n next.exclusiveTests = Object.assign({}, this.exclusiveTests);\n\n // @ts-expect-error this is readonly\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = clone(Object.assign({}, this.spec, spec));\n return next;\n }\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n const mergedSpec = Object.assign({}, base.spec, combined.spec);\n combined.spec = mergedSpec;\n combined.internalTests = Object.assign({}, base.internalTests, combined.internalTests);\n\n // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist);\n\n // start with the current tests\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests;\n\n // manually add the new tests to ensure\n // the deduping logic is consistent\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n isType(v) {\n if (v == null) {\n if (this.spec.nullable && v === null) return true;\n if (this.spec.optional && v === undefined) return true;\n return false;\n }\n return this._typeCheck(v);\n }\n resolve(options) {\n let schema = this;\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((prevSchema, condition) => condition.resolve(prevSchema, options), schema);\n schema = schema.resolve(options);\n }\n return schema;\n }\n resolveOptions(options) {\n var _options$strict, _options$abortEarly, _options$recursive;\n return Object.assign({}, options, {\n from: options.from || [],\n strict: (_options$strict = options.strict) != null ? _options$strict : this.spec.strict,\n abortEarly: (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly,\n recursive: (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive\n });\n }\n\n /**\n * Run the configured transform pipeline over an input value.\n */\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(Object.assign({\n value\n }, options));\n let allowOptionality = options.assert === 'ignore-optionality';\n let result = resolvedSchema._cast(value, options);\n if (options.assert !== false && !resolvedSchema.isType(result)) {\n if (allowOptionality && isAbsent(result)) {\n return result;\n }\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema.type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n return result;\n }\n _cast(rawValue, options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((prevValue, fn) => fn.call(this, prevValue, rawValue, this), rawValue);\n if (value === undefined) {\n value = this.getDefault(options);\n }\n return value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n path,\n originalValue = _value,\n strict = this.spec.strict\n } = options;\n let value = _value;\n if (!strict) {\n value = this._cast(value, Object.assign({\n assert: false\n }, options));\n }\n let initialTests = [];\n for (let test of Object.values(this.internalTests)) {\n if (test) initialTests.push(test);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: initialTests\n }, panic, initialErrors => {\n // even if we aren't ending early we can't proceed further if the types aren't correct\n if (initialErrors.length) {\n return next(initialErrors, value);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: this.tests\n }, panic, next);\n });\n }\n\n /**\n * Executes a set of validations, either schema, produced Tests or a nested\n * schema validate result.\n */\n runTests(runOptions, panic, next) {\n let fired = false;\n let {\n tests,\n value,\n originalValue,\n path,\n options\n } = runOptions;\n let panicOnce = arg => {\n if (fired) return;\n fired = true;\n panic(arg, value);\n };\n let nextOnce = arg => {\n if (fired) return;\n fired = true;\n next(arg, value);\n };\n let count = tests.length;\n let nestedErrors = [];\n if (!count) return nextOnce([]);\n let args = {\n value,\n originalValue,\n path,\n options,\n schema: this\n };\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, panicOnce, function finishTestRun(err) {\n if (err) {\n nestedErrors = nestedErrors.concat(err);\n }\n if (--count <= 0) {\n nextOnce(nestedErrors);\n }\n });\n }\n }\n asNestedTest({\n key,\n index,\n parent,\n parentPath,\n originalParent,\n options\n }) {\n const k = key != null ? key : index;\n if (k == null) {\n throw TypeError('Must include `key` or `index` for nested validations');\n }\n const isIndex = typeof k === 'number';\n let value = parent[k];\n const testOptions = Object.assign({}, options, {\n // Nested validations fields are always strict:\n // 1. parent isn't strict so the casting will also have cast inner values\n // 2. parent is strict in which case the nested values weren't cast either\n strict: true,\n parent,\n value,\n originalValue: originalParent[k],\n // FIXME: tests depend on `index` being passed around deeply,\n // we should not let the options.key/index bleed through\n key: undefined,\n // index: undefined,\n [isIndex ? 'index' : 'key']: k,\n path: isIndex || k.includes('.') ? `${parentPath || ''}[${value ? k : `\"${k}\"`}]` : (parentPath ? `${parentPath}.` : '') + key\n });\n return (_, panic, next) => this.resolve(testOptions)._validate(value, testOptions, panic, next);\n }\n validate(value, options) {\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n return new Promise((resolve, reject) => schema._validate(value, options, (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n reject(error);\n }, (errors, validated) => {\n if (errors.length) reject(new ValidationError(errors, validated));else resolve(validated);\n }));\n }\n validateSync(value, options) {\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let result;\n schema._validate(value, Object.assign({}, options, {\n sync: true\n }), (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n throw error;\n }, (errors, validated) => {\n if (errors.length) throw new ValidationError(errors, value);\n result = validated;\n });\n return result;\n }\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n _getDefault(options) {\n let defaultValue = this.spec.default;\n if (defaultValue == null) {\n return defaultValue;\n }\n return typeof defaultValue === 'function' ? defaultValue.call(this, options) : clone(defaultValue);\n }\n getDefault(options\n // If schema is defaulted we know it's at least not undefined\n ) {\n let schema = this.resolve(options || {});\n return schema._getDefault(options);\n }\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n let next = this.clone({\n default: def\n });\n return next;\n }\n strict(isStrict = true) {\n return this.clone({\n strict: isStrict\n });\n }\n nullability(nullable, message) {\n const next = this.clone({\n nullable\n });\n next.internalTests.nullable = createValidation({\n message,\n name: 'nullable',\n test(value) {\n return value === null ? this.schema.spec.nullable : true;\n }\n });\n return next;\n }\n optionality(optional, message) {\n const next = this.clone({\n optional\n });\n next.internalTests.optionality = createValidation({\n message,\n name: 'optionality',\n test(value) {\n return value === undefined ? this.schema.spec.optional : true;\n }\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n defined(message = mixed.defined) {\n return this.optionality(false, message);\n }\n nullable() {\n return this.nullability(true);\n }\n nonNullable(message = mixed.notNull) {\n return this.nullability(false, message);\n }\n required(message = mixed.required) {\n return this.clone().withMutation(next => next.nonNullable(message).defined(message));\n }\n notRequired() {\n return this.clone().withMutation(next => next.nullable().optional());\n }\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n test(...args) {\n let opts;\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n if (opts.message === undefined) opts.message = mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n let next = this.clone();\n let deps = toArray(keys).map(key => new Reference(key));\n deps.forEach(dep => {\n // @ts-ignore readonly array\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(typeof options === 'function' ? new Condition(deps, options) : Condition.fromOptions(deps, options));\n return next;\n }\n typeError(message) {\n let next = this.clone();\n next.internalTests.typeError = createValidation({\n message,\n name: 'typeError',\n skipAbsent: true,\n test(value) {\n if (!this.schema._typeCheck(value)) return this.createError({\n params: {\n type: this.schema.type\n }\n });\n return true;\n }\n });\n return next;\n }\n oneOf(enums, message = mixed.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n next._blacklist.delete(val);\n });\n next.internalTests.whiteList = createValidation({\n message,\n name: 'oneOf',\n skipAbsent: true,\n test(value) {\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: Array.from(valids).join(', '),\n resolved\n }\n });\n }\n });\n return next;\n }\n notOneOf(enums, message = mixed.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n next._whitelist.delete(val);\n });\n next.internalTests.blacklist = createValidation({\n message,\n name: 'notOneOf',\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: Array.from(invalids).join(', '),\n resolved\n }\n });\n return true;\n }\n });\n return next;\n }\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n /**\n * Return a serialized description of the schema including validations, flags, types etc.\n *\n * @param options Provide any needed context for resolving runtime schema alterations (lazy, when conditions, etc).\n */\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const {\n label,\n meta,\n optional,\n nullable\n } = next.spec;\n const description = {\n meta,\n label,\n optional,\n nullable,\n default: next.getDefault(options),\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n}\n// @ts-expect-error\nSchema.prototype.__isYupSchema__ = true;\nfor (const method of ['validate', 'validateSync']) Schema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], Object.assign({}, options, {\n parent,\n path\n }));\n};\nfor (const alias of ['equals', 'is']) Schema.prototype[alias] = Schema.prototype.oneOf;\nfor (const alias of ['not', 'nope']) Schema.prototype[alias] = Schema.prototype.notOneOf;\n\nconst returnsTrue = () => true;\nfunction create$8(spec) {\n return new MixedSchema(spec);\n}\nclass MixedSchema extends Schema {\n constructor(spec) {\n super(typeof spec === 'function' ? {\n type: 'mixed',\n check: spec\n } : Object.assign({\n type: 'mixed',\n check: returnsTrue\n }, spec));\n }\n}\ncreate$8.prototype = MixedSchema.prototype;\n\nfunction create$7() {\n return new BooleanSchema();\n}\nclass BooleanSchema extends Schema {\n constructor() {\n super({\n type: 'boolean',\n check(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (ctx.spec.coerce && !ctx.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n return value;\n });\n });\n }\n isTrue(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n test(value) {\n return isAbsent(value) || value === true;\n }\n });\n }\n isFalse(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n test(value) {\n return isAbsent(value) || value === false;\n }\n });\n }\n default(def) {\n return super.default(def);\n }\n defined(msg) {\n return super.defined(msg);\n }\n optional() {\n return super.optional();\n }\n required(msg) {\n return super.required(msg);\n }\n notRequired() {\n return super.notRequired();\n }\n nullable() {\n return super.nullable();\n }\n nonNullable(msg) {\n return super.nonNullable(msg);\n }\n strip(v) {\n return super.strip(v);\n }\n}\ncreate$7.prototype = BooleanSchema.prototype;\n\n// Taken from HTML spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nlet rEmail =\n// eslint-disable-next-line\n/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nlet rUrl =\n// eslint-disable-next-line\n/^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\n// eslint-disable-next-line\nlet rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\nlet objStringTag = {}.toString();\nfunction create$6() {\n return new StringSchema();\n}\nclass StringSchema extends Schema {\n constructor() {\n super({\n type: 'string',\n check(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce || ctx.isType(value)) return value;\n\n // don't ever convert arrays\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n\n // no one wants plain objects converted to [Object object]\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n required(message) {\n return super.required(message).withMutation(schema => schema.test({\n message: message || mixed.required,\n name: 'required',\n skipAbsent: true,\n test: value => !!value.length\n }));\n }\n notRequired() {\n return super.notRequired().withMutation(schema => {\n schema.tests = schema.tests.filter(t => t.OPTIONS.name !== 'required');\n return schema;\n });\n }\n length(length, message = string.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message = string.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message = string.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n return this.test({\n name: name || 'matches',\n message: message || string.matches,\n params: {\n regex\n },\n skipAbsent: true,\n test: value => value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n email(message = string.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n url(message = string.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n uuid(message = string.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n }\n\n //-- transforms --\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n trim(message = string.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n lowercase(message = string.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n uppercase(message = string.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n}\ncreate$6.prototype = StringSchema.prototype;\n\n//\n// String Interfaces\n//\n\nlet isNaN$1 = value => value != +value;\nfunction create$5() {\n return new NumberSchema();\n}\nclass NumberSchema extends Schema {\n constructor() {\n super({\n type: 'number',\n check(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN$1(value);\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce) return value;\n let parsed = value;\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN;\n // don't use parseFloat to avoid positives on alpha-numeric strings\n parsed = +parsed;\n }\n\n // null -> NaN isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (ctx.isType(parsed) || parsed === null) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n min(min, message = number.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(min);\n }\n });\n }\n max(max, message = number.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(max);\n }\n });\n }\n lessThan(less, message = number.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n skipAbsent: true,\n test(value) {\n return value < this.resolve(less);\n }\n });\n }\n moreThan(more, message = number.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n skipAbsent: true,\n test(value) {\n return value > this.resolve(more);\n }\n });\n }\n positive(msg = number.positive) {\n return this.moreThan(0, msg);\n }\n negative(msg = number.negative) {\n return this.lessThan(0, msg);\n }\n integer(message = number.integer) {\n return this.test({\n name: 'integer',\n message,\n skipAbsent: true,\n test: val => Number.isInteger(val)\n });\n }\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n round(method) {\n var _method;\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round';\n\n // this exists for symemtry with the new Math.trunc\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n}\ncreate$5.prototype = NumberSchema.prototype;\n\n//\n// Number Interfaces\n//\n\n/* eslint-disable */\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nfunction parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined†values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) struct[k] = +struct[k] || 0;\n\n // allow undefined days and months\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1;\n\n // allow arbitrary sub-second precision beyond milliseconds\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0;\n\n // timestamps without timezone identifiers should be considered local time\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n return timestamp;\n}\n\n// @ts-ignore\nlet invalidDate = new Date('');\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\nfunction create$4() {\n return new DateSchema();\n}\nclass DateSchema extends Schema {\n constructor() {\n super({\n type: 'date',\n check(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n // null -> InvalidDate isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (!ctx.spec.coerce || ctx.isType(value) || value === null) return value;\n value = parseIsoDate(value);\n\n // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n return !isNaN(value) ? new Date(value) : DateSchema.INVALID_DATE;\n });\n });\n }\n prepareParam(ref, name) {\n let param;\n if (!Reference.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n return param;\n }\n min(min, message = date.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(limit);\n }\n });\n }\n max(max, message = date.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(limit);\n }\n });\n }\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate$4.prototype = DateSchema.prototype;\ncreate$4.INVALID_DATE = invalidDate;\n\n// @ts-expect-error\nfunction sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n for (const key of Object.keys(fields)) {\n let value = fields[key];\n nodes.add(key);\n if (Reference.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n return toposort.array(Array.from(nodes), edges).reverse();\n}\n\nfunction findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n if ((_err$path = err.path) != null && _err$path.includes(key)) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\nfunction sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nconst parseJson = (value, _, ctx) => {\n if (typeof value !== 'string') {\n return value;\n }\n let parsed = value;\n try {\n parsed = JSON.parse(value);\n } catch (err) {\n /* */\n }\n return ctx.isType(parsed) ? parsed : value;\n};\n\n// @ts-ignore\nfunction deepPartial(schema) {\n if ('fields' in schema) {\n const partial = {};\n for (const [key, fieldSchema] of Object.entries(schema.fields)) {\n partial[key] = deepPartial(fieldSchema);\n }\n return schema.setFields(partial);\n }\n if (schema.type === 'array') {\n const nextArray = schema.optional();\n if (nextArray.innerType) nextArray.innerType = deepPartial(nextArray.innerType);\n return nextArray;\n }\n if (schema.type === 'tuple') {\n return schema.optional().clone({\n types: schema.spec.types.map(deepPartial)\n });\n }\n if ('optional' in schema) {\n return schema.optional();\n }\n return schema;\n}\nconst deepHas = (obj, p) => {\n const path = [...normalizePath(p)];\n if (path.length === 1) return path[0] in obj;\n let last = path.pop();\n let parent = getter(join(path), true)(obj);\n return !!(parent && last in parent);\n};\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\nconst defaultSort = sortByKeyOrder([]);\nfunction create$3(spec) {\n return new ObjectSchema(spec);\n}\nclass ObjectSchema extends Schema {\n constructor(spec) {\n super({\n type: 'object',\n check(value) {\n return isObject(value) || typeof value === 'function';\n }\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n if (spec) {\n this.shape(spec);\n }\n });\n }\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n let value = super._cast(_value, options);\n\n //should ignore nulls here\n if (value === undefined) return this.getDefault(options);\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n let props = [].concat(this._nodes, Object.keys(value).filter(v => !this._nodes.includes(v)));\n let intermediateValue = {}; // is filled during the transform below\n let innerOptions = Object.assign({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n let isChanged = false;\n for (const prop of props) {\n let field = fields[prop];\n let exists = (prop in value);\n if (field) {\n let fieldValue;\n let inputValue = value[prop];\n\n // safe to mutate since this is fired in sequence\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop;\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = field instanceof Schema ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n if (fieldSpec != null && fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n fieldValue = !options.__validating || !strict ?\n // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n if (exists !== prop in intermediateValue || intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n return isChanged ? intermediateValue : value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n from = [],\n originalValue = _value,\n recursive = this.spec.recursive\n } = options;\n options.from = [{\n schema: this,\n value: originalValue\n }, ...from];\n // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n options.__validating = true;\n options.originalValue = originalValue;\n super._validate(_value, options, panic, (objectErrors, value) => {\n if (!recursive || !isObject(value)) {\n next(objectErrors, value);\n return;\n }\n originalValue = originalValue || value;\n let tests = [];\n for (let key of this._nodes) {\n let field = this.fields[key];\n if (!field || Reference.isRef(field)) {\n continue;\n }\n tests.push(field.asNestedTest({\n options,\n key,\n parent: value,\n parentPath: options.path,\n originalParent: originalValue\n }));\n }\n this.runTests({\n tests,\n value,\n originalValue,\n options\n }, panic, fieldErrors => {\n next(fieldErrors.sort(this._sortErrors).concat(objectErrors), value);\n });\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n next.fields = Object.assign({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n nextFields[field] = target === undefined ? schemaOrRef : target;\n }\n return next.withMutation(s =>\n // XXX: excludes here is wrong\n s.setFields(nextFields, [...this._excludedEdges, ...schema._excludedEdges]));\n }\n _getDefault(options) {\n if ('default' in this.spec) {\n return super._getDefault(options);\n }\n\n // if there is no default set invent one\n if (!this._nodes.length) {\n return undefined;\n }\n let dft = {};\n this._nodes.forEach(key => {\n var _innerOptions;\n const field = this.fields[key];\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n dft[key] = field && 'getDefault' in field ? field.getDefault(innerOptions) : undefined;\n });\n return dft;\n }\n setFields(shape, excludedEdges) {\n let next = this.clone();\n next.fields = shape;\n next._nodes = sortFields(shape, excludedEdges);\n next._sortErrors = sortByKeyOrder(Object.keys(shape));\n // XXX: this carries over edges which may not be what you want\n if (excludedEdges) next._excludedEdges = excludedEdges;\n return next;\n }\n shape(additions, excludes = []) {\n return this.clone().withMutation(next => {\n let edges = next._excludedEdges;\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n edges = [...next._excludedEdges, ...excludes];\n }\n\n // XXX: excludes here is wrong\n return next.setFields(Object.assign(next.fields, additions), edges);\n });\n }\n partial() {\n const partial = {};\n for (const [key, schema] of Object.entries(this.fields)) {\n partial[key] = 'optional' in schema && schema.optional instanceof Function ? schema.optional() : schema;\n }\n return this.setFields(partial);\n }\n deepPartial() {\n const next = deepPartial(this);\n return next;\n }\n pick(keys) {\n const picked = {};\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n return this.setFields(picked);\n }\n omit(keys) {\n const fields = Object.assign({}, this.fields);\n for (const key of keys) {\n delete fields[key];\n }\n return this.setFields(fields);\n }\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (!obj) return obj;\n let newObj = obj;\n if (deepHas(obj, from)) {\n newObj = Object.assign({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n return newObj;\n });\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n noUnknown(noAllow = true, message = object.noUnknown) {\n if (typeof noAllow !== 'boolean') {\n message = noAllow;\n noAllow = true;\n }\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n unknown(allow = true, message = object.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n transformKeys(fn) {\n return this.transform(obj => {\n if (!obj) return obj;\n const result = {};\n for (const key of Object.keys(obj)) result[fn(key)] = obj[key];\n return result;\n });\n }\n camelCase() {\n return this.transformKeys(camelCase);\n }\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n describe(options) {\n let base = super.describe(options);\n base.fields = {};\n for (const [key, value] of Object.entries(this.fields)) {\n var _innerOptions2;\n let innerOptions = options;\n if ((_innerOptions2 = innerOptions) != null && _innerOptions2.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n base.fields[key] = value.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$3.prototype = ObjectSchema.prototype;\n\nfunction create$2(type) {\n return new ArraySchema(type);\n}\nclass ArraySchema extends Schema {\n constructor(type) {\n super({\n type: 'array',\n spec: {\n types: type\n },\n check(v) {\n return Array.isArray(v);\n }\n });\n\n // `undefined` specifically means uninitialized, as opposed to \"no subtype\"\n this.innerType = void 0;\n this.innerType = type;\n }\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts);\n\n // should ignore nulls here\n if (!this._typeCheck(value) || !this.innerType) {\n return value;\n }\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, Object.assign({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n if (castElement !== v) {\n isChanged = true;\n }\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n var _options$recursive;\n // let sync = options.sync;\n // let path = options.path;\n let innerType = this.innerType;\n // let endEarly = options.abortEarly ?? this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n options.originalValue != null ? options.originalValue : _value;\n super._validate(_value, options, panic, (arrayErrors, value) => {\n var _options$originalValu2;\n if (!recursive || !innerType || !this._typeCheck(value)) {\n next(arrayErrors, value);\n return;\n }\n\n // #950 Ensure that sparse array empty slots are validated\n let tests = new Array(value.length);\n for (let index = 0; index < value.length; index++) {\n var _options$originalValu;\n tests[index] = innerType.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(arrayErrors), value));\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n return next;\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n concat(schema) {\n let next = super.concat(schema);\n\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n if (schema.innerType)\n // @ts-expect-error readonly\n next.innerType = next.innerType ?\n // @ts-expect-error Lazy doesn't have concat and will break\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema));\n\n // @ts-expect-error readonly\n next.innerType = schema;\n next.spec = Object.assign({}, next.spec, {\n types: schema\n });\n return next;\n }\n length(length, message = array.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message) {\n message = message || array.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n // FIXME(ts): Array<typeof T>\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message) {\n message = message || array.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n describe(options) {\n let base = super.describe(options);\n if (this.innerType) {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[0]\n });\n }\n base.innerType = this.innerType.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$2.prototype = ArraySchema.prototype;\n\n// @ts-ignore\nfunction create$1(schemas) {\n return new TupleSchema(schemas);\n}\nclass TupleSchema extends Schema {\n constructor(schemas) {\n super({\n type: 'tuple',\n spec: {\n types: schemas\n },\n check(v) {\n const types = this.spec.types;\n return Array.isArray(v) && v.length === types.length;\n }\n });\n this.withMutation(() => {\n this.typeError(tuple.notType);\n });\n }\n _cast(inputValue, options) {\n const {\n types\n } = this.spec;\n const value = super._cast(inputValue, options);\n if (!this._typeCheck(value)) {\n return value;\n }\n let isChanged = false;\n const castArray = types.map((type, idx) => {\n const castElement = type.cast(value[idx], Object.assign({}, options, {\n path: `${options.path || ''}[${idx}]`\n }));\n if (castElement !== value[idx]) isChanged = true;\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n let itemTypes = this.spec.types;\n super._validate(_value, options, panic, (tupleErrors, value) => {\n var _options$originalValu2;\n // intentionally not respecting recursive\n if (!this._typeCheck(value)) {\n next(tupleErrors, value);\n return;\n }\n let tests = [];\n for (let [index, itemSchema] of itemTypes.entries()) {\n var _options$originalValu;\n tests[index] = itemSchema.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(tupleErrors), value));\n });\n }\n describe(options) {\n let base = super.describe(options);\n base.innerType = this.spec.types.map((schema, index) => {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[index]\n });\n }\n return schema.describe(innerOptions);\n });\n return base;\n }\n}\ncreate$1.prototype = TupleSchema.prototype;\n\nfunction create(builder) {\n return new Lazy(builder);\n}\nclass Lazy {\n constructor(builder) {\n this.type = 'lazy';\n this.__isYupSchema__ = true;\n this.spec = void 0;\n this._resolve = (value, options = {}) => {\n let schema = this.builder(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n if (this.spec.optional) schema = schema.optional();\n return schema.resolve(options);\n };\n this.builder = builder;\n this.spec = {\n meta: undefined,\n optional: false\n };\n }\n clone(spec) {\n const next = new Lazy(this.builder);\n next.spec = Object.assign({}, this.spec, spec);\n return next;\n }\n optionality(optional) {\n const next = this.clone({\n optional\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n resolve(options) {\n return this._resolve(options.value, options);\n }\n cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n }\n asNestedTest(config) {\n let {\n key,\n index,\n parent,\n options\n } = config;\n let value = parent[index != null ? index : key];\n return this._resolve(value, Object.assign({}, options, {\n value,\n parent\n })).asNestedTest(config);\n }\n validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n }\n validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n }\n validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n }\n validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n }\n isValid(value, options) {\n return this._resolve(value, options).isValid(value, options);\n }\n isValidSync(value, options) {\n return this._resolve(value, options).isValidSync(value, options);\n }\n describe(options) {\n return options ? this.resolve(options).describe(options) : {\n type: 'lazy',\n meta: this.spec.meta,\n label: undefined\n };\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n}\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(type => {\n // @ts-ignore\n Object.keys(custom[type]).forEach(method => {\n // @ts-ignore\n locale[type][method] = custom[type][method];\n });\n });\n}\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !isSchema(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}\n\nexport { ArraySchema, BooleanSchema, DateSchema, MixedSchema, NumberSchema, ObjectSchema, Schema, StringSchema, TupleSchema, ValidationError, addMethod, create$2 as array, create$7 as bool, create$7 as boolean, create$4 as date, locale as defaultLocale, getIn, isSchema, create as lazy, create$8 as mixed, create$5 as number, create$3 as object, printValue, reach, create$9 as ref, setLocale, create$6 as string, create$1 as tuple };\n","import { Formik, Form, Field } from 'formik';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { useLoginMutation } from '../slices/apiSlice';\r\nimport { setCredentials } from '../slices/slice';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { toast } from 'react-toastify';\r\nimport * as yup from 'yup';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\n\r\nexport type LoginCredentials = {\r\n username: string;\r\n password: string;\r\n};\r\n\r\nconst Login = () => {\r\n const dispatch = useAppDispatch();\r\n const [login, { isLoading }] = useLoginMutation();\r\n const navigate = useNavigate();\r\n\r\n const initialValues: LoginCredentials = { username: '', password: '' };\r\n\r\n const { token, user } = useSelector((state: RootState) => state.auth);\r\n if (token && user) navigate('/');\r\n\r\n const handleLogin = async (values: LoginCredentials) => {\r\n try {\r\n const { accessToken, refreshToken, user } = await login(values).unwrap();\r\n dispatch(setCredentials({ token: accessToken, refresh: refreshToken, user }));\r\n navigate('/');\r\n } catch (error) {\r\n toast.error('Failed to log in');\r\n }\r\n };\r\n\r\n const LoginFormValidationSchema = yup.object({\r\n username: yup.string().required(),\r\n password: yup.string().required()\r\n });\r\n\r\n return (\r\n <div className=\"mt-6 flex items-center justify-center\">\r\n <div className=\"w-full\">\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={handleLogin}\r\n validationSchema={LoginFormValidationSchema}>\r\n {({ errors, touched }) => (\r\n <Form>\r\n <div className=\"mb-2 space-x-2\">\r\n <Field\r\n className={`bg-grey-light w-full text-sm px-2 py-2.5 mb-6 placeholder:text-grey placeholder:font-normal font-normal ${\r\n errors.username ? 'border-red' : ''\r\n }`}\r\n type=\"input\"\r\n name=\"username\"\r\n placeholder=\"Username\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n <div className=\"mb-2 space-x-2\">\r\n <Field\r\n className={`bg-grey-light w-full text-sm px-2 py-2.5 mb-6 placeholder:text-grey font-normal ${\r\n errors.password ? 'border-red' : ''\r\n }`}\r\n type=\"password\"\r\n name=\"password\"\r\n placeholder=\"Password\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n <div className=\"mt-4\">\r\n <button\r\n className=\"w-fit border p-2 font-normal px-10 bg-blue text-white text-sm disabled:bg-gray-600\"\r\n type=\"submit\"\r\n disabled={isLoading}>\r\n {isLoading ? 'Logging In...' : 'Log In'}\r\n </button>\r\n </div>\r\n </Form>\r\n )}\r\n </Formik>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import Login from '../components/Login';\r\n\r\nconst LoginPage = () => {\r\n return (\r\n <div className=\"login-background flex items-center justify-center py-36 -mt-20 -mb-44\">\r\n <div className=\"bg-white w-5/6 md:w-2/3 lg:w-1/2 xl:w-2/5 px-5 sm:px-10 xl:px-16 py-16 flex flex-col drop-shadow-xl text-xl font-medium\">\r\n <h1 className=\"text-3xl mb-6 font-freight text-left\">Wholesale Portal</h1>\r\n <Login />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LoginPage;\r\n","import { Link } from 'react-router-dom';\r\n\r\nexport type Props = {\r\n title: string;\r\n icon: string;\r\n to: string;\r\n};\r\n\r\nconst Tile = (props: Props) => {\r\n const { title, icon, to } = props;\r\n\r\n return (\r\n <Link className=\"w-auto h-auto border rounded bg-grey-light shadow-lg px-4 lg:px-8 pt-12 lg:pt-16 pb-4 text-center flex flex-col justify-between\" to={to}>\r\n <img className=\"w-1/2 mx-auto mb-6\" src={icon} alt=\"\" />\r\n <p className=\"text-xl\">{title}</p>\r\n </Link>\r\n );\r\n};\r\n\r\nexport default Tile;\r\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit';\r\n\r\nexport type LayoutState = {\r\n activePage: string;\r\n};\r\n\r\nconst initialState: LayoutState = {\r\n activePage: ''\r\n};\r\n\r\nexport const layoutSlice = createSlice({\r\n name: 'layout',\r\n initialState,\r\n reducers: {\r\n setActivePage: (state, action: PayloadAction<string>) => {\r\n const activePage = action.payload;\r\n state.activePage = activePage;\r\n }\r\n }\r\n});\r\n\r\nexport const { setActivePage } = layoutSlice.actions;\r\n\r\nexport default layoutSlice.reducer;\r\n","const InformationTile = () => {\r\n return(\r\n <div className=\"mt-10 flex flex-col lg:flex-row lg:w-fit text-sm pb-6 lg:pb-0 border-b lg:border-b-0 lg:border-r border-zinc-300 text-grey-submenu\">\r\n <div className=\"grid gap-1\">\r\n <h1 className=\"text-lg\">Decora Customer Service Orders</h1>\r\n <div className=\"flex mt-3\">\r\n <h2 className=\"font-bold w-1/3\">Mon - Thurs:</h2>\r\n <h2 className=\"ml-5\">08.30 - 17.00</h2>\r\n </div>\r\n <div className=\"flex\">\r\n <h2 className=\"font-bold w-1/3\">Fri:</h2>\r\n <h2 className=\"ml-5\">08.30 - 14.00</h2>\r\n </div>\r\n <div className=\"flex\">\r\n <h2 className=\"font-bold w-1/3\">email:</h2>\r\n <h2 className=\"ml-5\">WSSales@decora.co.uk</h2>\r\n </div>\r\n </div>\r\n <span className=\"lg:ml-12 w-5/6 lg:w-72 mt-10 mr-10\">Wholesale order cut off on Friday is 14.00. Any orders placed after this time will be sent on the following Monday.</span>\r\n </div>\r\n );\r\n}\r\nexport default InformationTile;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgDownloadSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M12 1.25C12.4142 1.25 12.75 1.58579 12.75 2V12.9726L14.4306 11.0119C14.7001 10.6974 15.1736 10.661 15.4881 10.9306C15.8026 11.2001 15.839 11.6736 15.5694 11.9881L12.5694 15.4881C12.427 15.6543 12.2189 15.75 12 15.75C11.7811 15.75 11.573 15.6543 11.4306 15.4881L8.43056 11.9881C8.16099 11.6736 8.19741 11.2001 8.51191 10.9306C8.8264 10.661 9.29988 10.6974 9.56944 11.0119L11.25 12.9726V2C11.25 1.58579 11.5858 1.25 12 1.25ZM6.99583 8.25196C7.41003 8.24966 7.74768 8.58357 7.74999 8.99778C7.7523 9.41199 7.41838 9.74964 7.00418 9.75194C5.91068 9.75803 5.1356 9.78643 4.54735 9.89448C3.98054 9.99859 3.65246 10.1658 3.40901 10.4092C3.13225 10.686 2.9518 11.0746 2.85315 11.8083C2.75159 12.5637 2.75 13.5648 2.75 15.0002V16.0002C2.75 17.4356 2.75159 18.4367 2.85315 19.1921C2.9518 19.9259 3.13225 20.3144 3.40901 20.5912C3.68577 20.868 4.07435 21.0484 4.80812 21.1471C5.56347 21.2486 6.56458 21.2502 8 21.2502H16C17.4354 21.2502 18.4365 21.2486 19.1919 21.1471C19.9257 21.0484 20.3142 20.868 20.591 20.5912C20.8678 20.3144 21.0482 19.9259 21.1469 19.1921C21.2484 18.4367 21.25 17.4356 21.25 16.0002V15.0002C21.25 13.5648 21.2484 12.5637 21.1469 11.8083C21.0482 11.0746 20.8678 10.686 20.591 10.4092C20.3475 10.1658 20.0195 9.99859 19.4527 9.89448C18.8644 9.78643 18.0893 9.75803 16.9958 9.75194C16.5816 9.74964 16.2477 9.41199 16.25 8.99778C16.2523 8.58357 16.59 8.24966 17.0042 8.25196C18.0857 8.25799 18.9871 8.28387 19.7236 8.41916C20.4816 8.55839 21.1267 8.82364 21.6517 9.34857C22.2536 9.95048 22.5125 10.7084 22.6335 11.6085C22.75 12.4754 22.75 13.5778 22.75 14.9453V16.0551C22.75 17.4227 22.75 18.525 22.6335 19.392C22.5125 20.2921 22.2536 21.0499 21.6517 21.6519C21.0497 22.2538 20.2919 22.5127 19.3918 22.6337C18.5248 22.7503 17.4225 22.7502 16.0549 22.7502H7.94513C6.57754 22.7502 5.47522 22.7503 4.60825 22.6337C3.70814 22.5127 2.95027 22.2538 2.34835 21.6519C1.74643 21.0499 1.48754 20.2921 1.36652 19.392C1.24996 18.525 1.24998 17.4227 1.25 16.0551V14.9453C1.24998 13.5778 1.24996 12.4754 1.36652 11.6085C1.48754 10.7084 1.74643 9.95048 2.34835 9.34857C2.87328 8.82363 3.51835 8.55839 4.27635 8.41916C5.01291 8.28387 5.9143 8.25798 6.99583 8.25196Z\",\n fill: \"#1C274C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownloadSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/download-svgrepo-com.4baa07fdc35ccc77c4ce4280ca816d4b.svg\";\nexport { ForwardRef as ReactComponent };","import downloadImg from '../../../assets/download-svgrepo-com.svg';\r\n\r\nconst OutOfStockTile = () => {\r\n\r\n const handleDownload = async () => {\r\n window.open('https://mydecora.co.uk/downloads/OOS%20Files');\r\n };\r\n\r\n return (\r\n <div>\r\n <div className=\"lg:ml-10 mt-6 lg:mt-10 text-grey-submenu border-b lg:border-b-0 border-zinc-300 pb-6\">\r\n <h1 className=\"text-lg\">Out of Stock</h1>\r\n <h2 className=\"text-sm my-3\">Click here to download the Out of Stock list</h2>\r\n <button\r\n className=\"flex mt-1 p-2 bg-grey-light text-xs disabled:bg-gray-600 w-fit\"\r\n onClick={handleDownload}>\r\n Out of Stock\r\n <img className=\"ml-3 h-4\" src={downloadImg} alt=\"\" />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default OutOfStockTile;\r\n","import rootApiSlice from '../../../app/api/slice';\r\n\r\nexport type Notification = {\r\n showNotification: boolean;\r\n notificationText: string;\r\n};\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getNotification: builder.query<Notification, void>({\r\n query: () => ({\r\n url: '/notification',\r\n method: 'GET'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const { useGetNotificationQuery } = apiSlice;\r\n","import { useGetNotificationQuery } from '../slices/apiSlice';\r\n\r\nconst NotificationTile = () => {\r\n const { data, isLoading, isError } = useGetNotificationQuery();\r\n const showNotification =\r\n data?.showNotification && data?.notificationText && !isLoading && !isError;\r\n\r\n return (\r\n <>\r\n {showNotification && (\r\n <div className=\"mt-8 p-4 rounded-sm bg-blue-light text-[#DC4F4F] text-lg font-light order-1 lg:order-2\">\r\n <span className=\"font-semibold\">Notification: </span> {data?.notificationText}\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default NotificationTile;\r\n","import Tile from '../components/Tile';\r\nimport accountImg from '../../../assets/my-account.svg';\r\nimport detailsImg from '../../../assets/my-details.svg';\r\nimport openOrders from '../../../assets/open-orders.svg';\r\nimport addCart from '../../../assets/order-products.svg';\r\nimport viewCart from '../../../assets/view-basket.svg';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport { useEffect } from 'react';\r\nimport InformationTile from '../components/InformationTile';\r\nimport OutOfStockTile from '../components/OutOfStockTile';\r\nimport NotificationTile from '../components/NotificationTile';\r\n\r\nconst HomePage = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(setActivePage(''));\r\n }, []);\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0 flex flex-col\">\r\n <div className=\"border-b border-zinc-300 order-0\">\r\n <p className=\"text-gray-500 text-xs mb-8\">Wholesale portal {`>`} </p>\r\n <h1 className=\"font-serif text-4xl text-gray-700 mb-8 lg:mb-16\">Wholesale Portal</h1>\r\n </div>\r\n <div className=\"mt-12 w-full grid xl:grid-cols-5 lg:grid-cols-4 grid-cols-2 gap-6 items-stretch pb-10 border-b border-zinc-300 order-2 lg:order-1\">\r\n <Tile icon={accountImg} title={'My Account'} to=\"/account\" />\r\n <Tile icon={detailsImg} title={'My Details'} to=\"/details\" />\r\n <Tile icon={openOrders} title={'Open Orders'} to=\"/open-orders\" />\r\n <Tile icon={addCart} title={'Order Products'} to=\"/products/search\" />\r\n <Tile icon={viewCart} title={'View Basket'} to=\"/basket\" />\r\n </div>\r\n <NotificationTile />\r\n <div className=\"flex flex-col lg:flex-row order-3\">\r\n <InformationTile />\r\n <OutOfStockTile />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default HomePage;\r\n","import { Navigate, Outlet, useLocation } from 'react-router-dom';\r\nimport { RootState } from '../../../app/store';\r\nimport { useSelector } from 'react-redux';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { logout } from '../slices/slice';\r\n\r\nconst RequireAuth = () => {\r\n const { token, user } = useSelector((state: RootState) => state.auth);\r\n const dispatch = useAppDispatch();\r\n\r\n if (!token || !user) dispatch(logout());\r\n\r\n const location = useLocation();\r\n\r\n return token && user ? (\r\n <>\r\n <div className=\"h-auto xl:mx-32 md:mx-24 sm:mx-12\">\r\n <Outlet />\r\n </div>\r\n </>\r\n ) : (\r\n // <>\r\n // <div className=\"h-auto xl:mx-32 md:mx-24 sm:mx-12\">\r\n // <Outlet />\r\n // </div>\r\n // </>\r\n <Navigate to=\"login\" state={{ from: location }} />\r\n );\r\n};\r\n\r\nexport default RequireAuth;\r\n","import rootApiSlice from '../../../app/api/slice';\r\nimport { SearchProductsParameters } from '../components/ProductSearchFilters';\r\n\r\nexport type PrimaryCategory = {\r\n name: string;\r\n secondaryCategories: string[];\r\n};\r\n\r\nexport type Product = {\r\n itemNumber: string;\r\n description: string;\r\n stock: number;\r\n dueDate: string;\r\n quantityDue: number;\r\n packQuantity: number;\r\n unit: string;\r\n price: number;\r\n discountPrice: number;\r\n isFavourite: boolean;\r\n groupDescription?: string;\r\n category1Description?: string;\r\n category2Description?: string;\r\n hasMultiBuyDiscount?: boolean;\r\n};\r\n\r\nexport type AddToBasketRequest = {\r\n itemNumber: string;\r\n quantity: number;\r\n};\r\n\r\nexport type MultiBuyDiscount = {\r\n minimumQuantity: number;\r\n price: number;\r\n};\r\n\r\nexport type DeliverySchedule = {\r\n quantity: number;\r\n date: string;\r\n};\r\n\r\nexport type ImageSearchProps = {\r\n itemNumber: string;\r\n imageType: 0 | 1;\r\n};\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getCategories: builder.query<PrimaryCategory[], void>({\r\n query: () => ({\r\n url: '/orderproducts/categories',\r\n method: 'GET'\r\n })\r\n }),\r\n searchProducts: builder.query<Product[], SearchProductsParameters>({\r\n query: (args) => ({\r\n url: '/orderproducts/search',\r\n params: args,\r\n method: 'GET'\r\n }),\r\n providesTags: ['SearchProducts']\r\n }),\r\n addToBasket: builder.mutation<void, AddToBasketRequest>({\r\n query: (req) => ({\r\n url: '/basket',\r\n method: 'POST',\r\n body: { ...req }\r\n }),\r\n invalidatesTags: ['Basket']\r\n }),\r\n getFavouriteProducts: builder.query<Product[], void>({\r\n query: () => ({\r\n url: '/orderproducts/favourites',\r\n method: 'GET'\r\n }),\r\n providesTags: ['SearchProducts']\r\n }),\r\n addToFavourites: builder.mutation<void, string>({\r\n query: (itemNumber) => ({\r\n url: '/orderproducts/favourites',\r\n method: 'POST',\r\n body: { itemNumber }\r\n })\r\n }),\r\n removeFromFavourites: builder.mutation<void, string>({\r\n query: (itemNumber) => ({\r\n url: '/orderproducts/favourites',\r\n method: 'DELETE',\r\n body: { itemNumber }\r\n })\r\n }),\r\n getUsualProducts: builder.query<Product[], void>({\r\n query: () => ({\r\n url: '/orderproducts/usuals',\r\n method: 'GET'\r\n }),\r\n providesTags: ['SearchProducts']\r\n }),\r\n getMultiBuyDiscounts: builder.query<MultiBuyDiscount[], string>({\r\n query: (itemNumber) => ({\r\n url: `/orderproducts/multi/${itemNumber}`,\r\n method: 'GET'\r\n })\r\n }),\r\n getDeliverySchedule: builder.query<DeliverySchedule[], string>({\r\n query: (itemNumber) => ({\r\n url: `/orderproducts/schedule/${itemNumber}`,\r\n method: 'GET'\r\n })\r\n }),\r\n getItemImage: builder.query<any, ImageSearchProps>({\r\n query: (props) => ({\r\n url: `/orderproducts/${props.itemNumber}/image/${props.imageType}`,\r\n method: 'GET',\r\n responseHandler: async (response) => {\r\n if (response.status === 200) {\r\n return await response.blob();\r\n } else {\r\n throw new Error('Image not found');\r\n }\r\n },\r\n cache: 'no-cache'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const {\r\n useGetCategoriesQuery,\r\n useLazySearchProductsQuery,\r\n useAddToBasketMutation,\r\n useLazyGetFavouriteProductsQuery,\r\n useAddToFavouritesMutation,\r\n useRemoveFromFavouritesMutation,\r\n useLazyGetUsualProductsQuery,\r\n useLazyGetMultiBuyDiscountsQuery,\r\n useLazyGetDeliveryScheduleQuery,\r\n useLazyGetItemImageQuery\r\n} = apiSlice;\r\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit';\r\nimport _ from 'lodash';\r\nimport { Product } from './apiSlice';\r\nimport { MultiBuyModalOptions } from '../components/MultiBuyModal';\r\nimport { DeliveryScheduleModalOptions } from '../components/DeliveryScheduleModal';\r\nimport { ProductImageModalOptions } from '../components/ProductImageModal';\r\nimport { PaginationOptions } from '../components/PaginationControls';\r\n\r\nexport type OrderState = {\r\n searchProductsParams: {\r\n primaryCategory: string;\r\n secondaryCategory: string;\r\n searchValue: string;\r\n isSearching: boolean;\r\n displayDefaultMessage: boolean;\r\n };\r\n pagination: PaginationOptions;\r\n products?: Product[];\r\n displayProducts?: Product[];\r\n activeFilter?: 'Favourites' | 'Usuals';\r\n multiBuyModalOptions: MultiBuyModalOptions;\r\n deliveryScheduleModalOptions: DeliveryScheduleModalOptions;\r\n productImageModalOptions: ProductImageModalOptions;\r\n filterInfo: string;\r\n};\r\n\r\nconst initialState: OrderState = {\r\n searchProductsParams: {\r\n primaryCategory: '',\r\n secondaryCategory: '',\r\n searchValue: '',\r\n isSearching: false,\r\n displayDefaultMessage: true\r\n },\r\n pagination: {\r\n itemsPerPage: 20,\r\n pageCount: 1,\r\n currentPage: 1\r\n },\r\n products: [],\r\n displayProducts: [],\r\n activeFilter: undefined,\r\n multiBuyModalOptions: {\r\n isOpen: false,\r\n itemNumber: '',\r\n description: '',\r\n discounts: []\r\n },\r\n deliveryScheduleModalOptions: {\r\n isOpen: false,\r\n itemNumber: '',\r\n description: '',\r\n schedule: []\r\n },\r\n productImageModalOptions: {\r\n isOpen: false,\r\n itemNumber: '',\r\n description: '',\r\n productImage: ''\r\n },\r\n filterInfo: ''\r\n};\r\n\r\nexport const orderSlice = createSlice({\r\n name: 'order',\r\n initialState,\r\n reducers: {\r\n setPrimaryCategory: (state, action: PayloadAction<string>) => {\r\n state.searchProductsParams.primaryCategory = action.payload;\r\n },\r\n setSecondaryCategory: (state, action: PayloadAction<string>) => {\r\n state.searchProductsParams.secondaryCategory = action.payload;\r\n },\r\n setSearchValue: (state, action: PayloadAction<string>) => {\r\n state.searchProductsParams.searchValue = action.payload;\r\n },\r\n setDisplayDefaultMessage: (state, action: PayloadAction<boolean>) => {\r\n state.searchProductsParams.displayDefaultMessage = action.payload;\r\n },\r\n resetSpecificSearchFilter: (state, action: PayloadAction<{primaryCategory: boolean, secondaryCategory: boolean, searchValue: boolean,}>) => {\r\n if (action.payload?.primaryCategory) state.searchProductsParams.primaryCategory = '';\r\n if (action.payload?.secondaryCategory) state.searchProductsParams.secondaryCategory = '';\r\n if (action.payload?.searchValue) state.searchProductsParams.searchValue = '';\r\n },\r\n resetSearchFilters: (state, action: PayloadAction<void>) => {\r\n state.searchProductsParams.primaryCategory = '';\r\n state.searchProductsParams.secondaryCategory = '';\r\n state.searchProductsParams.searchValue = '';\r\n },\r\n setIsLoading: (state, action: PayloadAction<boolean>) => {\r\n state.searchProductsParams.isSearching = action.payload\r\n },\r\n setSearchProductsResults: (state, action: PayloadAction<Product[] | undefined>) => {\r\n state.pagination = { ...initialState.pagination };\r\n state.products = action.payload;\r\n if (action.payload) {\r\n state.displayProducts = _.take(action.payload, state.pagination.itemsPerPage);\r\n state.pagination.pageCount = Math.ceil(\r\n action.payload.length / state.pagination.itemsPerPage\r\n );\r\n } else {\r\n state.displayProducts = [];\r\n }\r\n },\r\n setActiveFilter: (state, action: PayloadAction<'Favourites' | 'Usuals' | undefined>) => {\r\n state.activeFilter = action.payload;\r\n },\r\n setPagination: (state, action: PayloadAction<PaginationOptions>) => {\r\n state.pagination = action.payload;\r\n state.displayProducts = _.take(\r\n _.drop(state.products, state.pagination.itemsPerPage * (state.pagination.currentPage - 1)),\r\n state.pagination.itemsPerPage\r\n );\r\n },\r\n setProductIsFavourite: (\r\n state,\r\n action: PayloadAction<{ itemNumber: string; isFavourite: boolean }>\r\n ) => {\r\n // Ensure that searchProductsResults is an array\r\n if (Array.isArray(state.products)) {\r\n // Find the index of the product to update\r\n const idx = state.products.findIndex((x) => x.itemNumber === action.payload.itemNumber);\r\n\r\n if (idx !== undefined && idx !== -1) {\r\n // Create a shallow copy of the searchProductsResults array\r\n const updatedResults = [...state.products];\r\n\r\n // Update the isFavourite property of the found product\r\n updatedResults[idx] = {\r\n ...updatedResults[idx],\r\n isFavourite: action.payload.isFavourite\r\n };\r\n\r\n // Update the state with the new array\r\n state.products = updatedResults;\r\n state.displayProducts = _.take(\r\n _.drop(\r\n updatedResults,\r\n state.pagination.itemsPerPage * (state.pagination.currentPage - 1)\r\n ),\r\n state.pagination.itemsPerPage\r\n );\r\n }\r\n }\r\n },\r\n openMultiBuyModal: (state, action: PayloadAction<MultiBuyModalOptions>) => {\r\n state.multiBuyModalOptions.isOpen = true;\r\n state.multiBuyModalOptions.itemNumber = action.payload.itemNumber;\r\n state.multiBuyModalOptions.description = action.payload.description;\r\n state.multiBuyModalOptions.discounts = action.payload.discounts;\r\n },\r\n closeMultiBuyModal: (state, action: PayloadAction<void>) => {\r\n state.multiBuyModalOptions.isOpen = false;\r\n state.multiBuyModalOptions.itemNumber = '';\r\n state.multiBuyModalOptions.description = '';\r\n state.multiBuyModalOptions.discounts = [];\r\n },\r\n openDeliveryScheduleModal: (state, action: PayloadAction<DeliveryScheduleModalOptions>) => {\r\n state.deliveryScheduleModalOptions.isOpen = true;\r\n state.deliveryScheduleModalOptions.itemNumber = action.payload.itemNumber;\r\n state.deliveryScheduleModalOptions.description = action.payload.description;\r\n state.deliveryScheduleModalOptions.schedule = action.payload.schedule;\r\n },\r\n closeDeliveryScheduleModal: (state, action: PayloadAction<void>) => {\r\n state.deliveryScheduleModalOptions.isOpen = false;\r\n state.deliveryScheduleModalOptions.itemNumber = '';\r\n state.deliveryScheduleModalOptions.description = '';\r\n state.deliveryScheduleModalOptions.schedule = [];\r\n },\r\n openProductImageModal: (state, action: PayloadAction<ProductImageModalOptions>) => {\r\n state.productImageModalOptions.isOpen = action.payload.isOpen\r\n state.productImageModalOptions.itemNumber = action.payload.itemNumber;\r\n state.productImageModalOptions.description = action.payload.description;\r\n state.productImageModalOptions.productImage = action.payload.productImage\r\n },\r\n closeProductImageModal: (state, action: PayloadAction<void>) => {\r\n state.productImageModalOptions.isOpen = false;\r\n state.productImageModalOptions.itemNumber = '';\r\n state.productImageModalOptions.description = '';\r\n state.productImageModalOptions.productImage = '';\r\n },\r\n setFilterInfo: (state, action: PayloadAction<string>) => {\r\n state.filterInfo = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setPrimaryCategory,\r\n setSecondaryCategory,\r\n setSearchValue,\r\n resetSpecificSearchFilter,\r\n resetSearchFilters,\r\n setSearchProductsResults,\r\n setIsLoading,\r\n setActiveFilter,\r\n setPagination,\r\n setProductIsFavourite,\r\n openMultiBuyModal,\r\n closeMultiBuyModal,\r\n openDeliveryScheduleModal,\r\n closeDeliveryScheduleModal,\r\n openProductImageModal,\r\n closeProductImageModal,\r\n setDisplayDefaultMessage,\r\n setFilterInfo\r\n} = orderSlice.actions;\r\n\r\nexport default orderSlice.reducer;\r\n","import { useGetCategoriesQuery, useLazySearchProductsQuery } from '../slices/apiSlice';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport {\r\n setActiveFilter, setIsLoading,\r\n setPrimaryCategory,\r\n setSearchProductsResults,\r\n setSearchValue,\r\n setSecondaryCategory,\r\n setDisplayDefaultMessage, resetSpecificSearchFilter\r\n} from '../slices/slice';\r\nimport {ChangeEvent, useEffect, useState} from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport {Form, Formik} from \"formik\";\r\n\r\nexport type SearchProductsParameters = {\r\n primaryCategory: string;\r\n secondaryCategory: string;\r\n searchValue: string;\r\n isSearching: boolean;\r\n};\r\n\r\nconst ProductSearchFilters = () => {\r\n const dispatch = useAppDispatch();\r\n const { primaryCategory, secondaryCategory, searchValue, isSearching } = useSelector(\r\n (state: RootState) => state.order.searchProductsParams\r\n );\r\n const { data: categories } = useGetCategoriesQuery();\r\n const [secondaryCategories, setSecondaryCategories] = useState<string[]>([]);\r\n const [userHasSelectedProductType, setUserHasSelectedProductType] = useState(!!primaryCategory);\r\n const [trigger, { isLoading, isFetching }] = useLazySearchProductsQuery();\r\n\r\n const initialValues: SearchProductsParameters = {\r\n primaryCategory: '',\r\n secondaryCategory: '',\r\n searchValue: '',\r\n isSearching: false\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(setIsLoading(isLoading || isFetching));\r\n\r\n const cat = categories?.find((c) => c.name === primaryCategory);\r\n cat?.secondaryCategories\r\n ? setSecondaryCategories(cat?.secondaryCategories)\r\n : setSecondaryCategories([]);\r\n }, [categories, primaryCategory, isLoading, isFetching]);\r\n\r\n const searchProcess = async () => {\r\n const searchObject = {\r\n 'primaryCategory': !searchValue ? primaryCategory : '',\r\n 'secondaryCategory': !searchValue ? secondaryCategory : '',\r\n searchValue,\r\n isSearching\r\n }\r\n if (searchValue) dispatch(resetSpecificSearchFilter({primaryCategory: true, secondaryCategory: true, searchValue: false}));\r\n return await trigger(searchObject).unwrap();\r\n }\r\n\r\n const handleSearch = async () => {\r\n try {\r\n dispatch(setActiveFilter(undefined));\r\n dispatch(setDisplayDefaultMessage(false));\r\n const products = await searchProcess();\r\n dispatch(setSearchProductsResults(products));\r\n dispatch(setActiveFilter(undefined));\r\n } catch (e) {\r\n dispatch(setSearchProductsResults([]));\r\n toast.error('Unable to find products');\r\n }\r\n };\r\n\r\n const handleProductTypeChange = (event: ChangeEvent<HTMLSelectElement>) => {\r\n setUserHasSelectedProductType(event.currentTarget.value !== '');\r\n dispatch(setPrimaryCategory(event.target.value))\r\n dispatch(setSecondaryCategory(''));\r\n }\r\n\r\n useEffect(() => {\r\n if (!primaryCategory) setUserHasSelectedProductType(false);\r\n }, [primaryCategory]);\r\n\r\n return (\r\n <div>\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={handleSearch}\r\n enableReinitialize={false}>\r\n <Form>\r\n <div className=\"grid grid-cols-1 lg:grid-cols-4 py-5 px-2 gap-y-6 lg:gap-y-0\">\r\n <div className=\"mx-2\">\r\n <h1 className=\"mb-2\">Product type</h1>\r\n <select\r\n className=\"border border-gray-400 h-8 w-full bg-white px-2\"\r\n value={primaryCategory}\r\n disabled={isSearching}\r\n onChange={handleProductTypeChange}>\r\n <option value={''}>Choose Product Type...</option>;\r\n {categories?.map((cat) => {\r\n return (\r\n <option key={cat.name} value={cat.name}>\r\n {cat.name}\r\n </option>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"mx-2\">\r\n <h1 className=\"mb-2\">Range</h1>\r\n <select\r\n className=\"border border-gray-400 h-8 w-full bg-white px-2\"\r\n value={secondaryCategory}\r\n disabled={!userHasSelectedProductType || isSearching}\r\n onChange={(e) => dispatch(setSecondaryCategory(e.target.value))}>\r\n <option value={''}>Choose Range...</option>\r\n {secondaryCategories?.map((cat) => {\r\n return <option key={cat}>{cat}</option>;\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"mx-2 border-slate-200 border-l-2 border-r-2 pl-5 pr-5\">\r\n <h1 className=\"mb-2\">or Look up product</h1>\r\n <input\r\n className=\"border border-gray-400 h-8 rounded-2xl px-4 w-full bg-white\"\r\n type=\"text\"\r\n placeholder=\" Search\"\r\n value={searchValue}\r\n disabled={isSearching}\r\n onChange={(e) => dispatch(setSearchValue(e.target.value))}\r\n />\r\n </div>\r\n <div className=\"flex mx-2 items-end\">\r\n <button\r\n className=\"lg:ml-24 flex py-1.5 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-8 w-fit\"\r\n type=\"submit\"\r\n disabled={isSearching}>\r\n {isSearching ? 'Searching...' : 'Search'}\r\n </button>\r\n </div>\r\n </div>\r\n </Form>\r\n </Formik>\r\n </div>\r\n );\r\n};\r\nexport default ProductSearchFilters;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTruck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 16,\n viewBox: \"0 0 24 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: \"M4.32043 16C3.51184 16 2.82151 15.7129 2.24941 15.1388C1.67734 14.5646 1.39131 13.8675 1.39131 13.0473H0V1.5701C0 1.13434 0.152747 0.763706 0.45824 0.458213C0.763715 0.152738 1.13435 0 1.57013 0H16.8287V4.18917H19.2384L23.3774 9.73475V13.0473H21.6699C21.6699 13.8675 21.3826 14.5646 20.8081 15.1388C20.2337 15.7129 19.5361 16 18.7154 16C17.9007 16 17.2089 15.7129 16.6398 15.1388C16.0708 14.5646 15.7863 13.8675 15.7863 13.0473H7.27492C7.27492 13.8716 6.98465 14.5698 6.40411 15.1419C5.82355 15.714 5.12899 16 4.32043 16ZM4.3331 15.1277C4.91027 15.1277 5.39949 14.9271 5.80075 14.5258C6.20199 14.1246 6.40261 13.6354 6.40261 13.0582C6.40261 12.481 6.20199 11.9918 5.80075 11.5906C5.39949 11.1893 4.91027 10.9887 4.3331 10.9887C3.75594 10.9887 3.26673 11.1893 2.86548 11.5906C2.46424 11.9918 2.26362 12.481 2.26362 13.0582C2.26362 13.6354 2.46424 14.1246 2.86548 14.5258C3.26673 14.9271 3.75594 15.1277 4.3331 15.1277ZM0.872284 12.175H1.47417C1.63555 11.6066 1.98413 11.1203 2.5199 10.7161C3.05568 10.3119 3.6557 10.1098 4.31994 10.1098C4.9551 10.1098 5.54751 10.3094 6.09717 10.7085C6.64681 11.1075 7.00232 11.5964 7.16371 12.175H15.9564V0.872283H1.57013C1.39567 0.872283 1.23575 0.944972 1.09038 1.09035C0.945 1.23574 0.872312 1.39566 0.872312 1.5701L0.872284 12.175ZM18.7281 15.1277C19.3053 15.1277 19.7945 14.9271 20.1957 14.5258C20.597 14.1246 20.7976 13.6354 20.7976 13.0582C20.7976 12.481 20.597 11.9918 20.1957 11.5906C19.7945 11.1893 19.3053 10.9887 18.7281 10.9887C18.1509 10.9887 17.6617 11.1893 17.2605 11.5906C16.8592 11.9918 16.6586 12.481 16.6586 13.0582C16.6586 13.6354 16.8592 14.1246 17.2605 14.5258C17.6617 14.9271 18.1509 15.1277 18.7281 15.1277ZM16.8287 9.82416H22.3852L18.7586 5.06148H16.8287V9.82416Z\",\n fill: \"#373F41\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTruck);\nexport default __webpack_public_path__ + \"static/media/truck.acf47b5668b41144c55293a7783c4eef.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTruckBlue(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 16,\n viewBox: \"0 0 24 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: \"M4.52893 16C3.70401 16 3.00455 15.7118 2.43054 15.1353C1.85651 14.5589 1.56949 13.8589 1.56949 13.0354H0V1.83105C0 1.30935 0.17475 0.87375 0.52425 0.52425C0.87375 0.17475 1.30936 0 1.83108 0H16.8283V4.09808H19.4441L23.3678 9.37328V13.0354H21.5368C21.5368 13.8589 21.248 14.5589 20.6706 15.1353C20.0932 15.7118 19.392 16 18.5671 16C17.7422 16 17.0427 15.7118 16.4687 15.1353C15.8946 14.5589 15.6076 13.8589 15.6076 13.0354H7.49865C7.49865 13.8637 7.20992 14.5649 6.63247 15.139C6.05504 15.713 5.35386 16 4.52893 16ZM4.53406 14.8665C5.04414 14.8665 5.47684 14.6888 5.83216 14.3335C6.18747 13.9782 6.36513 13.5455 6.36513 13.0354C6.36513 12.5253 6.18747 12.0926 5.83216 11.7373C5.47684 11.382 5.04414 11.2044 4.53406 11.2044C4.02397 11.2044 3.59128 11.382 3.23598 11.7373C2.88066 12.0926 2.70301 12.5253 2.70301 13.0354C2.70301 13.5455 2.88066 13.9782 3.23598 14.3335C3.59128 14.6888 4.02397 14.8665 4.53406 14.8665ZM18.5722 14.8665C19.0823 14.8665 19.515 14.6888 19.8703 14.3335C20.2256 13.9782 20.4032 13.5455 20.4032 13.0354C20.4032 12.5253 20.2256 12.0926 19.8703 11.7373C19.515 11.382 19.0823 11.2044 18.5722 11.2044C18.0621 11.2044 17.6294 11.382 17.2741 11.7373C16.9188 12.0926 16.7411 12.5253 16.7411 13.0354C16.7411 13.5455 16.9188 13.9782 17.2741 14.3335C17.6294 14.6888 18.0621 14.8665 18.5722 14.8665ZM16.8283 9.63487H22.1689L18.8338 5.23159H16.8283V9.63487Z\",\n fill: \"#3C68B1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTruckBlue);\nexport default __webpack_public_path__ + \"static/media/truck-blue.ec2eda927adbb7343dff63d08ee7dc1a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgFavourite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\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: \"M5.83207 16.7316L10 14.2176L14.1679 16.7646L13.0763 12.0013L16.7481 8.82571L11.9186 8.39569L10 3.89697L8.08143 8.36261L3.25192 8.79263L6.92367 12.0013L5.83207 16.7316ZM3.81426 19.5077L5.45546 12.4771L0 7.75191L7.18575 7.1285L10 0.5L12.8143 7.1285L20 7.75191L14.5445 12.4771L16.1857 19.5077L10 15.7748L3.81426 19.5077Z\",\n fill: \"#3C68B1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFavourite);\nexport default __webpack_public_path__ + \"static/media/favourite.8fd98eb54ec75662c9c9ddc3c18ad41c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgFavouriteGold(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\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: \"M3.81426 19.6639L5.45546 12.6334L0 7.90816L7.18575 7.28475L10 0.65625L12.8143 7.28475L20 7.90816L14.5445 12.6334L16.1857 19.6639L10 15.9311L3.81426 19.6639Z\",\n fill: \"#E8C068\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFavouriteGold);\nexport default __webpack_public_path__ + \"static/media/favourite-gold.0fd37e7e3cc7849e983bb04026a348fb.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgHideImage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n height: 101,\n viewBox: \"0 0 101 101\",\n width: 101,\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: \"m.227295.066406h100v100h-100z\",\n fill: \"#eceff7\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m82.7273 68.6081-2.9167-2.9167v-43.125c0-.8333-.3472-1.5972-1.0416-2.2917-.6945-.6944-1.4584-1.0416-2.2917-1.0416h-43.125l-2.9167-2.9167h46.0417c1.8056 0 3.2986.5903 4.4792 1.7708 1.1805 1.1806 1.7708 2.6737 1.7708 4.4792zm4.1667 20.2083-8.3334-8.3333h-53.75c-1.8055 0-3.2986-.5903-4.4791-1.7709-1.1806-1.1805-1.7709-2.6736-1.7709-4.4791v-53.75l-8.3333-8.3334 2.0833-2.0833 76.6667 76.6667zm-53.125-22.2917 6.875-8.9583 6.6666 7.7083 7.1875-8.8541-33.0208-33.0209v50.8334c0 .8333.3472 1.5972 1.0417 2.2916.6944.6945 1.4583 1.0417 2.2916 1.0417h50.8334l-11.0417-11.0417z\",\n fill: \"#3c68b1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHideImage);\nexport default __webpack_public_path__ + \"static/media/hide_image.64a651e8f5aa5e1f6c207e274cbf65aa.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgShoppingMode(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\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, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_2568_18203\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 0,\n width: 24,\n height: 24\n }, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"#D9D9D9\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_2568_18203)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.001 21C10.799 21 10.5959 20.9596 10.3918 20.8788C10.1876 20.7981 10.0038 20.677 9.8405 20.5155L3.47875 14.1538C3.31225 13.9884 3.19083 13.8059 3.1145 13.6062C3.03817 13.4064 3 13.2032 3 12.9965C3 12.7898 3.03817 12.5844 3.1145 12.3802C3.19083 12.1761 3.31225 11.9922 3.47875 11.8287L11.8173 3.4845C11.9659 3.3365 12.1417 3.21875 12.3445 3.13125C12.5473 3.04375 12.7568 3 12.973 3H19.3595C19.8198 3 20.2073 3.16008 20.522 3.48025C20.8368 3.80025 20.9943 4.185 20.9943 4.6345V11.0212C20.9943 11.2422 20.9538 11.4529 20.873 11.6533C20.7923 11.8536 20.6732 12.0262 20.5155 12.1713L12.152 20.5155C11.9903 20.677 11.8086 20.7981 11.6067 20.8788C11.4047 20.9596 11.2028 21 11.001 21ZM10.5538 19.8078C10.6821 19.9359 10.8328 20 11.0058 20C11.1789 20 11.3296 19.9359 11.4578 19.8078L19.8212 11.4578C19.8852 11.3936 19.9301 11.3231 19.9557 11.2463C19.9814 11.1693 19.9943 11.0923 19.9943 11.0155V4.6345C19.9943 4.45517 19.9333 4.30775 19.8115 4.19225C19.6897 4.07692 19.539 4.01925 19.3595 4.01925H12.7288L4.19225 12.5423C4.06408 12.6704 4 12.8211 4 12.9943C4 13.1673 4.06408 13.3179 4.19225 13.4462L10.5538 19.8078ZM17.4365 7.55775C17.7197 7.55775 17.9603 7.4605 18.1585 7.266C18.3567 7.0715 18.4557 6.83542 18.4557 6.55775C18.4557 6.27458 18.3574 6.03392 18.1608 5.83575C17.9641 5.63758 17.7253 5.5385 17.4445 5.5385C17.1635 5.5385 16.9253 5.63683 16.7298 5.8335C16.5343 6.03017 16.4365 6.26892 16.4365 6.54975C16.4365 6.83075 16.5338 7.069 16.7283 7.2645C16.9226 7.46 17.1587 7.55775 17.4365 7.55775Z\",\n fill: \"#1C1B1F\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgShoppingMode);\nexport default __webpack_public_path__ + \"static/media/shopping-mode.4deb4198285fcb1bcf5c16264a37a97f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgShoppingModeBlue(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"#3C68B1\",\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: \"M11.001 21C10.799 21 10.5959 20.9596 10.3918 20.8788C10.1876 20.7981 10.0038 20.677 9.8405 20.5155L3.47875 14.1538C3.31225 13.9884 3.19083 13.8059 3.1145 13.6062C3.03817 13.4064 3 13.2032 3 12.9965C3 12.7898 3.03817 12.5844 3.1145 12.3802C3.19083 12.1761 3.31225 11.9922 3.47875 11.8287L11.8173 3.4845C11.9659 3.3365 12.1417 3.21875 12.3445 3.13125C12.5473 3.04375 12.7568 3 12.973 3H19.3595C19.8198 3 20.2073 3.16008 20.522 3.48025C20.8368 3.80025 20.9943 4.185 20.9943 4.6345V11.0212C20.9943 11.2422 20.9538 11.4529 20.873 11.6533C20.7923 11.8536 20.6732 12.0262 20.5155 12.1713L12.152 20.5155C11.9903 20.677 11.8086 20.7981 11.6067 20.8788C11.4047 20.9596 11.2028 21 11.001 21ZM10.5538 19.8078C10.6821 19.9359 10.8328 20 11.0058 20C11.1789 20 11.3296 19.9359 11.4578 19.8078L19.8212 11.4578C19.8852 11.3936 19.9301 11.3231 19.9557 11.2463C19.9814 11.1693 19.9943 11.0923 19.9943 11.0155V4.6345C19.9943 4.45517 19.9333 4.30775 19.8115 4.19225C19.6897 4.07692 19.539 4.01925 19.3595 4.01925H12.7288L4.19225 12.5423C4.06408 12.6704 4 12.8211 4 12.9943C4 13.1673 4.06408 13.3179 4.19225 13.4462L10.5538 19.8078ZM17.4365 7.55775C17.7197 7.55775 17.9603 7.4605 18.1585 7.266C18.3567 7.0715 18.4557 6.83542 18.4557 6.55775C18.4557 6.27458 18.3574 6.03392 18.1608 5.83575C17.9641 5.63758 17.7253 5.5385 17.4445 5.5385C17.1635 5.5385 16.9253 5.63683 16.7298 5.8335C16.5343 6.03017 16.4365 6.26892 16.4365 6.54975C16.4365 6.83075 16.5338 7.069 16.7283 7.2645C16.9226 7.46 17.1587 7.55775 17.4365 7.55775Z\",\n fill: \"#3C68B1\",\n fillRule: \"nonzero\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgShoppingModeBlue);\nexport default __webpack_public_path__ + \"static/media/shopping-mode-blue.4d10091e7426b2547859da920a7bca2c.svg\";\nexport { ForwardRef as ReactComponent };","import {\r\n Product,\r\n useAddToBasketMutation,\r\n useAddToFavouritesMutation,\r\n useLazyGetDeliveryScheduleQuery,\r\n useLazyGetItemImageQuery,\r\n useLazyGetMultiBuyDiscountsQuery,\r\n useRemoveFromFavouritesMutation\r\n} from '../slices/apiSlice';\r\nimport truckIcon from '../../../assets/truck.svg';\r\nimport blueTruckIcon from '../../../assets/truck-blue.svg';\r\nimport starIcon from '../../../assets/favourite.svg';\r\nimport favouriteIcon from '../../../assets/favourite-gold.svg';\r\nimport noImageIcon from '../../../assets/hide_image.svg';\r\nimport shoppingMode from '../../../assets/shopping-mode.svg';\r\nimport shoppingModeBlue from '../../../assets/shopping-mode-blue.svg';\r\nimport React, { useEffect, useState, useRef } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport {\r\n openDeliveryScheduleModal,\r\n openMultiBuyModal,\r\n openProductImageModal,\r\n setProductIsFavourite\r\n} from '../slices/slice';\r\n\r\ntype Props = {\r\n product: Product;\r\n};\r\n\r\nconst ProductSearchResultsTableRow = (props: Props) => {\r\n const { product } = props;\r\n const dispatch = useAppDispatch();\r\n\r\n const desktopQtyInputRef = useRef<HTMLInputElement>(null);\r\n const mobileQtyInputRef = useRef<HTMLInputElement>(null);\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n const [getImage] = useLazyGetItemImageQuery();\r\n const [imageUrl, setImageUrl] = useState('');\r\n\r\n const [addToFavourites] = useAddToFavouritesMutation();\r\n const [removeFromFavourites] = useRemoveFromFavouritesMutation();\r\n\r\n const [addToBasket, { isLoading }] = useAddToBasketMutation();\r\n const [quantity, setQuantity] = useState<number | undefined>(0);\r\n\r\n const [multiBuyDiscountsTrigger] = useLazyGetMultiBuyDiscountsQuery();\r\n const [deliveryScheduleTrigger] = useLazyGetDeliveryScheduleQuery();\r\n const { itemNumber: itemNumberDeliverySchedule } = useSelector(\r\n (state: RootState) => state.order.deliveryScheduleModalOptions\r\n );\r\n const isDeliveryScheduleSelected = itemNumberDeliverySchedule === product?.itemNumber;\r\n\r\n const { itemNumber: itemNumberMultiBuy } = useSelector(\r\n (state: RootState) => state.order.multiBuyModalOptions\r\n );\r\n const isMultiBuySelected = itemNumberMultiBuy === product?.itemNumber;\r\n\r\n useEffect(() => {\r\n const loadImage = async () => {\r\n try {\r\n const blob = await getImage({ itemNumber: product.itemNumber, imageType: 0 }).unwrap();\r\n const url = URL.createObjectURL(blob);\r\n setImageUrl(url);\r\n } catch {}\r\n };\r\n\r\n loadImage();\r\n }, [getImage, product.itemNumber]);\r\n\r\n const onClickDecrementQuantity = () => {\r\n if (quantity && quantity >= 0) setQuantity(quantity - 1);\r\n };\r\n\r\n const onClickIncrementQuantity = () => {\r\n if (!quantity) return setQuantity(1);\r\n\r\n const isWithinLimit = (quantity + 1).toString().length <= 6;\r\n if (isWithinLimit) setQuantity(quantity + 1);\r\n };\r\n\r\n const onChangeQuantity = (value: string) => {\r\n if (!value) return setQuantity(undefined);\r\n\r\n const isWithinLimit = value.length <= 6;\r\n if (isWithinLimit) setQuantity(+value);\r\n };\r\n\r\n const handleClickAdd = async () => {\r\n try {\r\n if (quantity && quantity > 0) {\r\n await addToBasket({ itemNumber: product.itemNumber, quantity }).unwrap();\r\n if (quantity > product.stock) {\r\n toast.warning(\r\n `Warning - there is insufficient stock of this item, this line may go on back order. Added ${product.itemNumber} to basket`\r\n );\r\n } else {\r\n toast.success(`Added ${product.itemNumber} to basket`);\r\n }\r\n }\r\n } catch (e) {\r\n toast.error('Unable to add item to basket');\r\n }\r\n setQuantity(0);\r\n };\r\n\r\n const handleClickFavouriteIcon = async () => {\r\n if (product.isFavourite) {\r\n await removeFavouriteItem();\r\n } else {\r\n await addFavouriteItem();\r\n }\r\n };\r\n\r\n const addFavouriteItem = async () => {\r\n try {\r\n await addToFavourites(product.itemNumber);\r\n dispatch(setProductIsFavourite({ itemNumber: product.itemNumber, isFavourite: true }));\r\n } catch (e) {\r\n toast.error('Unable to add item to favourites');\r\n }\r\n };\r\n\r\n const removeFavouriteItem = async () => {\r\n try {\r\n await removeFromFavourites(product.itemNumber);\r\n dispatch(setProductIsFavourite({ itemNumber: product.itemNumber, isFavourite: false }));\r\n } catch (e) {\r\n toast.error('Unable to remove item from favourites');\r\n }\r\n };\r\n\r\n const onClickMultiBuy = async () => {\r\n try {\r\n const discounts = await multiBuyDiscountsTrigger(product.itemNumber).unwrap();\r\n dispatch(\r\n openMultiBuyModal({\r\n isOpen: true,\r\n itemNumber: product.itemNumber,\r\n description: product.description,\r\n discounts\r\n })\r\n );\r\n } catch (e) {\r\n toast.error('Unable to get multi buy discounts');\r\n }\r\n };\r\n\r\n const onClickDeliverySchedule = async () => {\r\n try {\r\n const schedule = await deliveryScheduleTrigger(product.itemNumber).unwrap();\r\n dispatch(\r\n openDeliveryScheduleModal({\r\n isOpen: true,\r\n itemNumber: product.itemNumber,\r\n description: product.description,\r\n schedule\r\n })\r\n );\r\n } catch (e) {\r\n toast.error('Unable to get delivery schedule');\r\n }\r\n };\r\n\r\n const onClickImage = async () => {\r\n try {\r\n const blob = await getImage({ itemNumber: product.itemNumber, imageType: 1 }).unwrap();\r\n const url = URL.createObjectURL(blob);\r\n\r\n dispatch(\r\n openProductImageModal({\r\n isOpen: true,\r\n itemNumber: product.itemNumber,\r\n description: product.description,\r\n productImage: url\r\n })\r\n );\r\n } catch (e) {\r\n toast.error('Unable to open image');\r\n }\r\n };\r\n\r\n const focusInputOnIncrementOrDecrement = (\r\n event: React.MouseEvent<HTMLElement>,\r\n inputRef: React.RefObject<HTMLInputElement | null>\r\n ) => {\r\n event.preventDefault();\r\n inputRef.current?.focus();\r\n };\r\n\r\n return (\r\n <tr className=\"align-middle h-14 text-sm border-collapse border-b border-gray-400 text-grey-submenu\">\r\n <td className=\"lg:hidden\">\r\n <div className=\"flex text-grey-submenu p-2\">\r\n <div className=\"flex flex-col\">\r\n {!imageUrl || imageUrl === '' ? (\r\n <button className=\"flex items-start pr-2 sm:pr-4\">\r\n <img className=\"mb-2 mr-2 h-30\" src={noImageIcon} alt=\"\" />\r\n </button>\r\n ) : (\r\n <button onClick={onClickImage} className=\"flex items-start pr-2 sm:pr-4\">\r\n <img className=\"mb-2 mr-2 h-30\" src={imageUrl} alt=\"\" />\r\n </button>\r\n )}\r\n <button onClick={handleClickFavouriteIcon} className=\"mt-2 md:hidden\">\r\n <img\r\n className=\"h-6 ml-1\"\r\n src={product.isFavourite ? favouriteIcon : starIcon}\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-sm\">{product.itemNumber}</span>\r\n <span className=\"font-bold\">{product.description}</span>\r\n <span className=\"mt-2 text-xs\">\r\n Unit <span className=\"font-bold\">{product.unit}</span>\r\n </span>\r\n <span className=\"text-xs\">\r\n Pack Qty <span className=\"font-bold\">{product.packQuantity}</span>\r\n </span>\r\n <span className=\"text-xs\">\r\n Stock <span className=\"font-bold\">{product.stock.toLocaleString()}</span>\r\n </span>\r\n {(product.quantityDue > 0 || product.hasMultiBuyDiscount) && (\r\n <div className=\"flex mt-4\">\r\n {product.quantityDue > 0 && (\r\n <button onClick={onClickDeliverySchedule}>\r\n {!isDeliveryScheduleSelected ? (\r\n <img className=\"h-4\" src={truckIcon} alt=\"\" />\r\n ) : (\r\n <img className=\"h-4\" src={blueTruckIcon} alt=\"\" />\r\n )}\r\n </button>\r\n )}\r\n\r\n {product.hasMultiBuyDiscount && (\r\n <button\r\n onClick={onClickMultiBuy}\r\n className={`${product.quantityDue > 0 ? 'ml-4' : ''}`}>\r\n {!isMultiBuySelected ? (\r\n <img className=\"h-6 ml-2\" src={shoppingMode} alt=\"\" />\r\n ) : (\r\n <img className=\"h-6 ml-2\" src={shoppingModeBlue} alt=\"\" />\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n <div className=\"flex mt-4 text-sm\">\r\n <div className=\"flex flex-col border-r border-gray-300 text-grey-faded pr-2\">\r\n <span>List price</span>\r\n <span>\r\n {currencySymbol}\r\n {product.price.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 5\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex flex-col border-l border-gray-300 pl-2\">\r\n <span>Discount price</span>\r\n <span>\r\n {currencySymbol}\r\n {product.discountPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 5\r\n })}\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"flex pt-4 items-center space-x-4 mb-1.5\">\r\n <div className=\"flex border border-gray-400 bg-blue w-30 h-6 justify-center text-grey-submenu rounded-full text-xs\">\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-r-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, mobileQtyInputRef);\r\n onClickDecrementQuantity();\r\n }}>\r\n -\r\n </button>\r\n <input\r\n className=\"w-16 h-full px-1 text-sm text-center quantity-editor remove-number-input-arrows\"\r\n type=\"number\"\r\n ref={mobileQtyInputRef}\r\n value={quantity}\r\n min={0}\r\n onChange={(e) => onChangeQuantity(e.target.value)}\r\n onKeyUp={async (e) =>\r\n e.key === 'Enter' && quantity && quantity > 0 ? await handleClickAdd() : null\r\n }\r\n onFocus={(e) => e.currentTarget.select()}\r\n onBlur={() => setQuantity(quantity ? quantity : 0)}\r\n disabled={isLoading}\r\n />\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-l-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, mobileQtyInputRef);\r\n onClickIncrementQuantity();\r\n }}>\r\n +\r\n </button>\r\n </div>\r\n <button\r\n className=\"flex py-1 bg-blue font-light text-xs text-white px-4 w-fit\"\r\n onClick={handleClickAdd}\r\n disabled={isLoading || !quantity || quantity === 0}>\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"hidden md:flex flex-col ml-auto\">\r\n <button onClick={handleClickFavouriteIcon} className=\"mt-2\">\r\n <img\r\n className=\"h-6 ml-1\"\r\n src={product.isFavourite ? favouriteIcon : starIcon}\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </td>\r\n\r\n <td className=\"hidden lg:table-cell\">\r\n {!imageUrl || imageUrl === '' ? (\r\n <button>\r\n <img className=\"mt-2 mb-2 mr-2 h-20\" src={noImageIcon} alt=\"\" />\r\n </button>\r\n ) : (\r\n <button onClick={onClickImage}>\r\n <img className=\"mt-2 mb-2 mr-2 h-20\" src={imageUrl} alt=\"\" />\r\n </button>\r\n )}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n <span className=\"text-grey-submenu opacity-80\">{product.itemNumber}</span> <br />{' '}\r\n <span className=\"font-bold\">{product.description}</span>\r\n </td>\r\n <td className=\"hidden lg:table-cell relative after:h-1/2 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-1/2 after:mr-2\">\r\n <button onClick={handleClickFavouriteIcon}>\r\n <img className=\"h-6 ml-1\" src={product.isFavourite ? favouriteIcon : starIcon} alt=\"\" />\r\n </button>\r\n </td>\r\n <td className=\"hidden lg:table-cell\">{product.stock.toLocaleString()}</td>\r\n <td className=\"hidden lg:table-cell\">{product.quantityDue.toLocaleString()}</td>\r\n <td className=\"hidden lg:table-cell\">{product.dueDate}</td>\r\n <td className=\"hidden lg:table-cell\">\r\n {product.quantityDue > 0 && (\r\n <button onClick={onClickDeliverySchedule}>\r\n {!isDeliveryScheduleSelected ? (\r\n <img className=\"h-4 ml-1\" src={truckIcon} alt=\"\" />\r\n ) : (\r\n <img className=\"h-4 ml-1 \" src={blueTruckIcon} alt=\"\" />\r\n )}\r\n </button>\r\n )}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">{product.packQuantity}</td>\r\n <td className=\"hidden lg:table-cell relative after:h-1/2 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-1/2 after:mr-2\">\r\n {product.unit}\r\n </td>\r\n\r\n <td className=\"hidden lg:table-cell\">\r\n {product.hasMultiBuyDiscount && (\r\n <button onClick={onClickMultiBuy}>\r\n {!isMultiBuySelected ? (\r\n <img className=\"h-6 ml-2\" src={shoppingMode} alt=\"\" />\r\n ) : (\r\n <img className=\"h-6 ml-2\" src={shoppingModeBlue} alt=\"\" />\r\n )}\r\n </button>\r\n )}\r\n </td>\r\n\r\n <td className=\"font-bold hidden lg:table-cell\">\r\n {currencySymbol}\r\n {product.price.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 5\r\n })}\r\n </td>\r\n <td className=\"font-bold hidden lg:table-cell relative after:h-1/2 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-1/2 after:mr-2\">\r\n {currencySymbol}\r\n {product.discountPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 5\r\n })}\r\n </td>\r\n <td className=\"justify-items-end hidden lg:table-cell\">\r\n <div className=\"border border-gray-400 flex justify-center text-grey-submenu rounded-full w-fit\">\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-r-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, desktopQtyInputRef);\r\n onClickDecrementQuantity();\r\n }}>\r\n -\r\n </button>\r\n <input\r\n className=\"w-16 h-8 px-1 text-sm text-center quantity-editor remove-number-input-arrows\"\r\n type=\"number\"\r\n ref={desktopQtyInputRef}\r\n value={quantity}\r\n min={0}\r\n onChange={(e) => onChangeQuantity(e.target.value)}\r\n onKeyUp={async (e) =>\r\n e.key === 'Enter' && quantity && quantity > 0 ? await handleClickAdd() : null\r\n }\r\n onFocus={(e) => e.currentTarget.select()}\r\n onBlur={() => setQuantity(quantity ? quantity : 0)}\r\n disabled={isLoading}\r\n />\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-l-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, desktopQtyInputRef);\r\n onClickIncrementQuantity();\r\n }}>\r\n +\r\n </button>\r\n </div>\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n <button\r\n className=\"flex py-1.5 bg-blue font-light text-sm text-white px-4 w-fit\"\r\n onClick={handleClickAdd}\r\n disabled={isLoading || !quantity || quantity === 0}>\r\n Add\r\n </button>\r\n </td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n </tr>\r\n );\r\n};\r\n\r\nexport default ProductSearchResultsTableRow;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgModalClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 12,\n viewBox: \"0 0 11 12\",\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: \"M1.0765 11.1939L0.618164 10.7356L5.35054 6.00321L0.618164 1.27083L1.0765 0.8125L5.80887 5.54488L10.5412 0.8125L10.9996 1.27083L6.26721 6.00321L10.9996 10.7356L10.5412 11.1939L5.80887 6.46154L1.0765 11.1939Z\",\n fill: \"black\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgModalClose);\nexport default __webpack_public_path__ + \"static/media/modal-close.d913c74c60375ef2e679693a40e3c87e.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect } from 'react';\r\nimport modalClose from \"../../../assets/modal-close.svg\";\r\n\r\ntype Props = {\r\n title: string;\r\n titleIcon?: string;\r\n children: React.ReactNode;\r\n isOpen: boolean;\r\n hasCloseButton?: boolean;\r\n onClose: () => void;\r\n};\r\n\r\nconst Modal = (props: Props) => {\r\n const { title, titleIcon, children, isOpen, hasCloseButton, onClose } = props;\r\n\r\n useEffect(() => {\r\n document.body.style.overflow = isOpen ? 'hidden' : 'auto';\r\n\r\n return () => {\r\n document.body.style.overflow = 'auto';\r\n };\r\n }, [isOpen]);\r\n\r\n return (\r\n <>\r\n <div\r\n className={`fixed inset-0 ${\r\n isOpen ? 'bg-gray-600 bg-opacity-50' : 'hidden'\r\n } transition-opacity duration-300`}></div>\r\n <dialog\r\n className={`fixed bottom-0 lg:bottom-auto lg:top-1/2 transform lg:-translate-y-1/2 bg-white lg:border rounded-t-xl lg:rounded-none shadow-lg ${\r\n isOpen ? 'block' : 'hidden'\r\n } transition-opacity duration-300 w-full lg:w-1/4`}\r\n open={isOpen}>\r\n <div className=\"lg:border rounded-t-xl lg:rounded-none rounded shadow-lg p-4 bg-white\">\r\n <div className=\"flex justify-between mb-4\">\r\n <div className=\"flex items-center text-xl lg:text-2xl font-freight\">\r\n {titleIcon && <img className=\"h-6 mr-2\" src={titleIcon} alt=\"\" />}\r\n {title}\r\n </div>\r\n <button className=\"hover:cursor-pointer text-grey-submenu\" onClick={onClose}>\r\n <img className=\"h-3\" src={modalClose} alt=\"\" />\r\n </button>\r\n </div>\r\n <div className=\"text-sm\">{children}</div>\r\n <div className=\"mt-6 flex justify-center items-center\">\r\n {hasCloseButton && (\r\n <button\r\n className=\"p-1 bg-blue font-light text-base text-white disabled:bg-gray-600 px-6 w-fit\"\r\n onClick={onClose}>\r\n Close\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTag(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\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: \"M11.5823 19.7392C11.4046 19.9157 11.1977 20.0039 10.9614 20.0039C10.7251 20.0039 10.5188 19.9157 10.3423 19.7392L0.279582 9.67646C0.179979 9.57688 0.108481 9.47212 0.0650889 9.3622C0.0216963 9.25227 0 9.13507 0 9.01059V0.853674C0 0.614644 0.0825219 0.412608 0.247565 0.247564C0.412609 0.082521 0.614645 0 0.853674 0H9.01059C9.11872 0 9.23033 0.0193192 9.34541 0.0579582C9.46048 0.0966157 9.56799 0.156258 9.66794 0.236884L19.6965 10.2655C19.8915 10.4604 19.9925 10.6834 19.9996 10.9346C20.0067 11.1857 19.9199 11.4016 19.7392 11.5823L11.5823 19.7392ZM10.9901 19.1566L19.1566 10.9783L9.02016 0.853674H0.853674V9.01059L10.9901 19.1566ZM3.70033 4.69098C3.97661 4.69098 4.21185 4.59115 4.40607 4.3915C4.60028 4.19185 4.69739 3.95389 4.69739 3.6776C4.69739 3.40132 4.60111 3.16608 4.40856 2.97186C4.21603 2.77765 3.98163 2.68055 3.70535 2.68055C3.41484 2.68055 3.17249 2.77682 2.97827 2.96937C2.78406 3.1619 2.68695 3.3963 2.68695 3.67258C2.68695 3.94886 2.78323 4.18766 2.97578 4.38898C3.16831 4.59031 3.40982 4.69098 3.70033 4.69098Z\",\n fill: \"#373F41\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTag);\nexport default __webpack_public_path__ + \"static/media/tag.e4ab5e80af124ee54ff2d0d2c51defa3.svg\";\nexport { ForwardRef as ReactComponent };","import { useSelector } from 'react-redux';\r\nimport Modal from '../../layout/components/Modal';\r\nimport { RootState } from '../../../app/store';\r\nimport { MultiBuyDiscount } from '../slices/apiSlice';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { closeMultiBuyModal } from '../slices/slice';\r\nimport tagIcon from '../../../assets/tag.svg';\r\n\r\nexport type MultiBuyModalOptions = {\r\n isOpen: boolean;\r\n itemNumber: string;\r\n description: string;\r\n discounts: MultiBuyDiscount[];\r\n};\r\n\r\nconst MultiBuyModal = () => {\r\n const { isOpen, itemNumber, description, discounts } = useSelector(\r\n (state: RootState) => state.order.multiBuyModalOptions\r\n );\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeMultiBuyModal());\r\n };\r\n\r\n return (\r\n <Modal title=\"Multi Buy\" titleIcon={tagIcon} isOpen={isOpen} hasCloseButton onClose={onClose}>\r\n <>\r\n <div className=\"text-grey-submenu opacity-80\">{itemNumber}</div>\r\n <div className=\"text-grey-submenu font-semibold\">{description}</div>\r\n\r\n <table className=\"mt-6 w-full border-collapse\">\r\n <thead>\r\n <tr className=\"bg-blue-light font-normal\">\r\n <th className=\"p-2 text-left\">Min Qty</th>\r\n <th className=\"p-2 text-left\">Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {discounts.map((x, idx) => (\r\n <tr key={`multi-buy-${idx}`} className=\"border-t border-gray-300 border-b\">\r\n <td className=\"p-2 text-left\">{x.minimumQuantity}</td>\r\n <td className=\"p-2 text-left\">\r\n {currencySymbol}\r\n {x.price}\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default MultiBuyModal;\r\n","import { useSelector } from 'react-redux';\r\nimport Modal from '../../layout/components/Modal';\r\nimport { RootState } from '../../../app/store';\r\nimport { DeliverySchedule } from '../slices/apiSlice';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { closeDeliveryScheduleModal, closeMultiBuyModal } from '../slices/slice';\r\nimport truckIcon from '../../../assets/truck.svg';\r\n\r\nexport type DeliveryScheduleModalOptions = {\r\n isOpen: boolean;\r\n itemNumber: string;\r\n description: string;\r\n schedule: DeliverySchedule[];\r\n};\r\n\r\nconst DeliveryScheduleModal = () => {\r\n const { isOpen, itemNumber, description, schedule } = useSelector(\r\n (state: RootState) => state.order.deliveryScheduleModalOptions\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeDeliveryScheduleModal());\r\n };\r\n\r\n return (\r\n <Modal\r\n title=\"Delivery schedule\"\r\n titleIcon={truckIcon}\r\n isOpen={isOpen}\r\n hasCloseButton\r\n onClose={onClose}>\r\n <>\r\n <div className=\"text-grey-submenu opacity-80\">{itemNumber}</div>\r\n <div className=\"text-grey-submenu font-bold\">{description}</div>\r\n\r\n <table className=\"mt-6 w-full border-collapse\">\r\n <thead>\r\n <tr className=\"bg-blue-light font-normal\">\r\n <th className=\"p-2 text-left\">Qty</th>\r\n <th className=\"p-2 text-left\">Date</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {schedule.map((x, idx) => (\r\n <tr key={`delivery-schedule-${idx}`} className=\"border-t border-gray-300 border-b\">\r\n <td className=\"p-2 text-left\">{x.quantity.toLocaleString()}</td>\r\n <td className=\"p-2 text-left\">{x.date}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default DeliveryScheduleModal;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgProductImage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\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: \"M1.94805 20C1.38528 20 0.919913 19.816 0.551948 19.4481C0.183983 19.0801 0 18.6147 0 18.0519V1.94805C0 1.38528 0.183983 0.919913 0.551948 0.551948C0.919913 0.183983 1.38528 0 1.94805 0H18.0519C18.6147 0 19.0801 0.183983 19.4481 0.551948C19.816 0.919913 20 1.38528 20 1.94805V18.0519C20 18.6147 19.816 19.0801 19.4481 19.4481C19.0801 19.816 18.6147 20 18.0519 20H1.94805ZM1.94805 19.0909H18.0519C18.3117 19.0909 18.5498 18.9827 18.7662 18.7662C18.9827 18.5498 19.0909 18.3117 19.0909 18.0519V1.94805C19.0909 1.68831 18.9827 1.45022 18.7662 1.23377C18.5498 1.01732 18.3117 0.909091 18.0519 0.909091H1.94805C1.68831 0.909091 1.45022 1.01732 1.23377 1.23377C1.01732 1.45022 0.909091 1.68831 0.909091 1.94805V18.0519C0.909091 18.3117 1.01732 18.5498 1.23377 18.7662C1.45022 18.9827 1.68831 19.0909 1.94805 19.0909ZM4.74026 15.6494H15.5195L12.2078 11.2338L8.96104 15.2597L6.88312 12.8571L4.74026 15.6494Z\",\n fill: \"#373F41\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProductImage);\nexport default __webpack_public_path__ + \"static/media/product-image.b46987aa96b384d5e2fd43b9c562e85e.svg\";\nexport { ForwardRef as ReactComponent };","import Modal from \"../../layout/components/Modal\";\r\nimport imageIcon from '../../../assets/product-image.svg'\r\nimport {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {closeProductImageModal} from \"../slices/slice\";\r\n\r\nexport type ProductImageModalOptions = {\r\n isOpen: boolean;\r\n itemNumber: string;\r\n description: string;\r\n productImage: any;\r\n}\r\n\r\nconst ProductImageModal= () => {\r\n const {isOpen, itemNumber, description, productImage} = useSelector(\r\n (state: RootState) => state.order.productImageModalOptions\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n const onClose = () => {\r\n dispatch(closeProductImageModal());\r\n }\r\n\r\n return (\r\n <Modal titleIcon={imageIcon} title=\"Product Image\" isOpen={isOpen} onClose={onClose}>\r\n <div>\r\n <div className=\"justify-center text-grey-submenu mb-4\">\r\n <h1 className=\"text-center sm\">{itemNumber}</h1>\r\n <h1 className=\"font-bold text-center text-base\">{description}</h1>\r\n </div>\r\n <img src={productImage} />\r\n </div>\r\n </Modal>\r\n );\r\n}\r\nexport default ProductImageModal;\r\n","import { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport ProductSearchResultsTableRow from './ProductSearchResultsTableRow';\r\nimport MultiBuyModal from './MultiBuyModal';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { useEffect } from 'react';\r\nimport {\r\n closeDeliveryScheduleModal,\r\n closeMultiBuyModal, closeProductImageModal\r\n} from '../slices/slice';\r\nimport DeliveryScheduleModal from './DeliveryScheduleModal';\r\nimport ProductImageModal from \"./ProductImageModal\";\r\nimport spinner from \"../../../assets/spinner-black.gif\";\r\n\r\nconst ProductSearchResultsTable = () => {\r\n const products = useSelector((state: RootState) => state.order.displayProducts);\r\n const { activeFilter } = useSelector((state: RootState) => state.order);\r\n\r\n const isSearching = useSelector((state: RootState) => state.order.searchProductsParams.isSearching);\r\n\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(closeMultiBuyModal());\r\n dispatch(closeDeliveryScheduleModal());\r\n dispatch(closeProductImageModal());\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex flex-col\">\r\n <table className=\"table-fixed justify-start items-start border-collapse border-b border-gray-300 decora-datatable\">\r\n <thead>\r\n <tr className=\"bg-navy text-white text-sm h-14 text-left hidden lg:table-row\">\r\n <th></th>\r\n <th>Item code/<br/>description</th>\r\n <th></th>\r\n <th>Stock</th>\r\n <th>Qty<br/>Due</th>\r\n <th>Due<br/>Date</th>\r\n <th>Del.<br/>Sched.</th>\r\n <th>Pack<br/>Qty</th>\r\n <th>Unit</th>\r\n <th>Multi Buy</th>\r\n <th>List<br/>Price</th>\r\n <th>Disc.<br/>Price</th>\r\n <th>Qty</th>\r\n <th></th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n {!isSearching ? (\r\n <tbody>\r\n {!products || products.length === 0 ? (\r\n <tr>\r\n <td colSpan={15}>\r\n <div className=\"flex py-8 justify-center\">No results</div>\r\n </td>\r\n </tr>\r\n ) : (\r\n products?.map((p) => <ProductSearchResultsTableRow key={p.itemNumber} product={p}/>)\r\n )}\r\n </tbody>\r\n ) : (\r\n <tbody>\r\n <tr>\r\n <td colSpan={15}>\r\n <div className=\"flex py-8 justify-center\">Searching <img className=\"ml-4 h-8\" src={spinner} alt=\"\"/></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n )}\r\n </table>\r\n <MultiBuyModal />\r\n <DeliveryScheduleModal />\r\n <ProductImageModal />\r\n </div>\r\n );\r\n};\r\nexport default ProductSearchResultsTable;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgStarSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M11.2691 4.41115C11.5006 3.89177 11.6164 3.63208 11.7776 3.55211C11.9176 3.48263 12.082 3.48263 12.222 3.55211C12.3832 3.63208 12.499 3.89177 12.7305 4.41115L14.5745 8.54808C14.643 8.70162 14.6772 8.77839 14.7302 8.83718C14.777 8.8892 14.8343 8.93081 14.8982 8.95929C14.9705 8.99149 15.0541 9.00031 15.2213 9.01795L19.7256 9.49336C20.2911 9.55304 20.5738 9.58288 20.6997 9.71147C20.809 9.82316 20.8598 9.97956 20.837 10.1342C20.8108 10.3122 20.5996 10.5025 20.1772 10.8832L16.8125 13.9154C16.6877 14.0279 16.6252 14.0842 16.5857 14.1527C16.5507 14.2134 16.5288 14.2807 16.5215 14.3503C16.5132 14.429 16.5306 14.5112 16.5655 14.6757L17.5053 19.1064C17.6233 19.6627 17.6823 19.9408 17.5989 20.1002C17.5264 20.2388 17.3934 20.3354 17.2393 20.3615C17.0619 20.3915 16.8156 20.2495 16.323 19.9654L12.3995 17.7024C12.2539 17.6184 12.1811 17.5765 12.1037 17.56C12.0352 17.5455 11.9644 17.5455 11.8959 17.56C11.8185 17.5765 11.7457 17.6184 11.6001 17.7024L7.67662 19.9654C7.18404 20.2495 6.93775 20.3915 6.76034 20.3615C6.60623 20.3354 6.47319 20.2388 6.40075 20.1002C6.31736 19.9408 6.37635 19.6627 6.49434 19.1064L7.4341 14.6757C7.46898 14.5112 7.48642 14.429 7.47814 14.3503C7.47081 14.2807 7.44894 14.2134 7.41394 14.1527C7.37439 14.0842 7.31195 14.0279 7.18708 13.9154L3.82246 10.8832C3.40005 10.5025 3.18884 10.3122 3.16258 10.1342C3.13978 9.97956 3.19059 9.82316 3.29993 9.71147C3.42581 9.58288 3.70856 9.55304 4.27406 9.49336L8.77835 9.01795C8.94553 9.00031 9.02911 8.99149 9.10139 8.95929C9.16534 8.93081 9.2226 8.8892 9.26946 8.83718C9.32241 8.77839 9.35663 8.70162 9.42508 8.54808L11.2691 4.41115Z\",\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/star-svgrepo-com.d41bc86f4b3a65599aa84a6a4ce0e894.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgFilledStarSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\n fill: \"#FFD700\",\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: \"M11.2691 4.41115C11.5006 3.89177 11.6164 3.63208 11.7776 3.55211C11.9176 3.48263 12.082 3.48263 12.222 3.55211C12.3832 3.63208 12.499 3.89177 12.7305 4.41115L14.5745 8.54808C14.643 8.70162 14.6772 8.77839 14.7302 8.83718C14.777 8.8892 14.8343 8.93081 14.8982 8.95929C14.9705 8.99149 15.0541 9.00031 15.2213 9.01795L19.7256 9.49336C20.2911 9.55304 20.5738 9.58288 20.6997 9.71147C20.809 9.82316 20.8598 9.97956 20.837 10.1342C20.8108 10.3122 20.5996 10.5025 20.1772 10.8832L16.8125 13.9154C16.6877 14.0279 16.6252 14.0842 16.5857 14.1527C16.5507 14.2134 16.5288 14.2807 16.5215 14.3503C16.5132 14.429 16.5306 14.5112 16.5655 14.6757L17.5053 19.1064C17.6233 19.6627 17.6823 19.9408 17.5989 20.1002C17.5264 20.2388 17.3934 20.3354 17.2393 20.3615C17.0619 20.3915 16.8156 20.2495 16.323 19.9654L12.3995 17.7024C12.2539 17.6184 12.1811 17.5765 12.1037 17.56C12.0352 17.5455 11.9644 17.5455 11.8959 17.56C11.8185 17.5765 11.7457 17.6184 11.6001 17.7024L7.67662 19.9654C7.18404 20.2495 6.93775 20.3915 6.76034 20.3615C6.60623 20.3354 6.47319 20.2388 6.40075 20.1002C6.31736 19.9408 6.37635 19.6627 6.49434 19.1064L7.4341 14.6757C7.46898 14.5112 7.48642 14.429 7.47814 14.3503C7.47081 14.2807 7.44894 14.2134 7.41394 14.1527C7.37439 14.0842 7.31195 14.0279 7.18708 13.9154L3.82246 10.8832C3.40005 10.5025 3.18884 10.3122 3.16258 10.1342C3.13978 9.97956 3.19059 9.82316 3.29993 9.71147C3.42581 9.58288 3.70856 9.55304 4.27406 9.49336L8.77835 9.01795C8.94553 9.00031 9.02911 8.99149 9.10139 8.95929C9.16534 8.93081 9.2226 8.8892 9.26946 8.83718C9.32241 8.77839 9.35663 8.70162 9.42508 8.54808L11.2691 4.41115Z\",\n stroke: \"#FFD700\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilledStarSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/filled-star-svgrepo-com.224e727f194eab203d49c06a64949bb6.svg\";\nexport { ForwardRef as ReactComponent };","import { toast } from 'react-toastify';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport starIcon from '../../../assets/star-svgrepo-com.svg';\r\nimport favouriteIcon from '../../../assets/filled-star-svgrepo-com.svg';\r\nimport { useLazyGetFavouriteProductsQuery, useLazySearchProductsQuery } from '../slices/apiSlice';\r\nimport {\r\n setActiveFilter,\r\n setSearchProductsResults,\r\n setIsLoading,\r\n setFilterInfo,\r\n setDisplayDefaultMessage\r\n} from '../slices/slice';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { useEffect } from 'react';\r\n\r\nconst FavouriteProductsFilter = () => {\r\n const dispatch = useAppDispatch();\r\n const { activeFilter } = useSelector((state: RootState) => state.order);\r\n const [trigger, { isLoading, isFetching }] = useLazyGetFavouriteProductsQuery();\r\n\r\n const [searchProducts, { isLoading: isSearchingProducts, isFetching: isFetchingProducts }] =\r\n useLazySearchProductsQuery();\r\n const { primaryCategory, secondaryCategory, searchValue, isSearching } = useSelector(\r\n (state: RootState) => state.order.searchProductsParams\r\n );\r\n const isActive = activeFilter === 'Favourites';\r\n\r\n useEffect(() => {\r\n dispatch(setIsLoading(isLoading || isFetching || isSearchingProducts || isFetchingProducts));\r\n }, [isLoading, isFetching, isSearchingProducts, isFetchingProducts]);\r\n\r\n const handleClick = async () => {\r\n if (isActive) {\r\n await handleFilterInactive();\r\n } else {\r\n try {\r\n const products = await trigger().unwrap();\r\n dispatch(setSearchProductsResults(products));\r\n dispatch(setActiveFilter('Favourites'));\r\n dispatch(setFilterInfo('Favourites'));\r\n dispatch(setDisplayDefaultMessage(false));\r\n } catch (e) {\r\n toast.error('Unable to find favourite products');\r\n }\r\n }\r\n };\r\n\r\n const handleFilterInactive = async () => {\r\n dispatch(setActiveFilter(undefined));\r\n dispatch(setSearchProductsResults([]));\r\n\r\n if (primaryCategory || searchValue) {\r\n try {\r\n const products = await searchProducts({\r\n primaryCategory,\r\n secondaryCategory,\r\n searchValue,\r\n isSearching\r\n }).unwrap();\r\n dispatch(setSearchProductsResults(products));\r\n } catch (e) {\r\n toast.error('Unable to find products');\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n className={\r\n isActive\r\n ? 'flex items-center justify-center lg:ml-5 h-7 px-1 sm:px-2 text-white bg-blue'\r\n : 'flex items-center justify-center lg:ml-5 h-7 text-grey-submenu px-1 sm:px-2 bg-gray-100'\r\n }\r\n onClick={handleClick}\r\n disabled={isLoading || isFetching}>\r\n Favourites\r\n <img className=\"ml-2 h-4 w-6\" src={isActive ? favouriteIcon : starIcon} alt=\"\" />\r\n </button>\r\n );\r\n};\r\n\r\nexport default FavouriteProductsFilter;\r\n","var _path, _circle;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTickCircleSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M7.29417 12.9577L10.5048 16.1681L17.6729 9\",\n stroke: \"#000000\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10,\n stroke: \"#000000\",\n strokeWidth: 2\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTickCircleSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/tick-circle-svgrepo-com.d39c25620c0f483387d6896bc172ecc6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _circle;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTickWhiteCircleSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M7.29417 12.9577L10.5048 16.1681L17.6729 9\",\n stroke: \"#FFFFFF\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10,\n stroke: \"#FFFFFF\",\n strokeWidth: 2\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTickWhiteCircleSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/tick-white-circle-svgrepo-com.25ec4e49fc47fc00412f17d2ea113bfc.svg\";\nexport { ForwardRef as ReactComponent };","import { toast } from 'react-toastify';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport usualsIcon from '../../../assets/tick-circle-svgrepo-com.svg';\r\nimport activeUsualsIcon from '../../../assets/tick-white-circle-svgrepo-com.svg';\r\nimport { useLazyGetUsualProductsQuery, useLazySearchProductsQuery } from '../slices/apiSlice';\r\nimport {\r\n setActiveFilter,\r\n setIsLoading,\r\n setSearchProductsResults,\r\n setFilterInfo,\r\n setDisplayDefaultMessage\r\n} from '../slices/slice';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst UsualProductsFilter = () => {\r\n const dispatch = useAppDispatch();\r\n const { activeFilter } = useSelector((state: RootState) => state.order);\r\n const [trigger, { isLoading, isFetching }] = useLazyGetUsualProductsQuery();\r\n const [isClicked, setIsClicked] = useState(false);\r\n\r\n const [searchProducts, { isLoading: isSearchingProducts, isFetching: isFetchingProducts }] =\r\n useLazySearchProductsQuery();\r\n const { primaryCategory, secondaryCategory, searchValue, isSearching } = useSelector(\r\n (state: RootState) => state.order.searchProductsParams\r\n );\r\n const isActive = activeFilter === 'Usuals';\r\n\r\n useEffect(() => {\r\n dispatch(setIsLoading(isLoading || isFetching || isSearchingProducts || isFetchingProducts));\r\n }, [isLoading, isFetching, isSearchingProducts, isFetchingProducts]);\r\n\r\n const handleClick = async () => {\r\n if (isActive) {\r\n await handleFilterInactive()\r\n }\r\n else {\r\n try {\r\n const products = await trigger().unwrap();\r\n dispatch(setSearchProductsResults(products));\r\n dispatch(setActiveFilter('Usuals'));\r\n dispatch(setFilterInfo('Usual Orders'))\r\n dispatch(setDisplayDefaultMessage(false));\r\n } catch (e) {\r\n toast.error('Unable to find usual products');\r\n }\r\n }\r\n };\r\n\r\n const handleFilterInactive = async () => {\r\n dispatch(setActiveFilter(undefined));\r\n dispatch(setSearchProductsResults([]));\r\n\r\n if (primaryCategory || searchValue) {\r\n try {\r\n const products = await searchProducts({\r\n primaryCategory,\r\n secondaryCategory,\r\n searchValue,\r\n isSearching\r\n }).unwrap();\r\n dispatch(setSearchProductsResults(products));\r\n } catch (e) {\r\n toast.error('Unable to find products');\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n className={\r\n isActive\r\n ? 'flex items-center justify-center lg:ml-5 h-7 px-1 sm:px-2 text-white bg-blue'\r\n : 'flex items-center justify-center lg:ml-5 h-7 text-grey-submenu px-1 sm:px-2 bg-gray-100'\r\n }\r\n onClick={handleClick}\r\n disabled={isLoading || isFetching}>\r\n Usual Orders\r\n <img className=\"ml-2 h-4 w-6\" src={isActive ? activeUsualsIcon : usualsIcon} alt=\"\" />\r\n </button>\r\n );\r\n};\r\n\r\nexport default UsualProductsFilter;\r\n","/*! 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<number>*/ { var o/*:Array<number>*/ = []; 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<string>*/ = [];\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<string>*/ = [];\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<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array<number>*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array<number>*/ {\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<string>};\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<Array<string> >*/ = [\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<Array<string> >*/ = [\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<number>*/ {\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<string>*/, 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<string>*/, 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<string>*/, 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<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_flt(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = pad0r(val, 0);\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\tri = dec(val, r[1].length);\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(ri,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,##0.00\": return write_num_flt(type, \"#,##0.00\", val);\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(pad0r(aval,0)); return x !== \"0\" ? sign + x : \"\";\n\t\tcase \"###,###.00\": return write_num_flt(type, \"###,##0.00\",val).replace(/^0\\./,\".\");\n\t\tcase \"#,###.00\": return write_num_flt(type, \"#,##0.00\",val).replace(/^0\\./,\".\");\n\t\tdefault:\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num_cm2(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}\nfunction write_num_pct2(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}\nfunction write_num_exp2(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_exp2(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.match(/[Ee]/)) {\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\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}\nfunction write_num_int(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_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<string>*/, 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<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_int(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = \"\" + val;\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\"+val).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(0,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(\"\"+aval); return x !== \"0\" ? sign + x : \"\";\n\t\tdefault:\n\t\t\tif(fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0,fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\treturn (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n}\nfunction SSF_split_fmt(fmt/*:string*/)/*:Array<string>*/ {\n\tvar out/*:Array<string>*/ = [];\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<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t}\n\t\telse if(decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tjj = ostr.indexOf(\".\")-1;\n\t\t\tfor(i=decpt; i>= 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<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t\tjj = ostr.indexOf(\".\")+1;\n\t\t\tfor(i=decpt; i<out.length; ++i) {\n\t\t\t\tif(out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-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<out[i].v.length; ++j) {\n\t\t\t\t\tif(jj<ostr.length) vv += ostr.charAt(jj++);\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}\n\t}\n\tfor(i=0; i<out.length; ++i) if(out[i] != null && 'n?'.indexOf(out[i].t)>-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>*/)/*: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<number>;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array<number>;\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<number>*/ = 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<number>*/ = 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<number>*/, 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<number>*/ = []; // 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<RawBytes>*/ = 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<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\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<RawBytes>*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array<RawBytes>*/ = [];\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<string>*/, Paths/*:Array<string>*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array<number>*/ = [], q/*:Array<number>*/ = [];\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<RawBytes>*/, 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<RawBytes>*/, start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/, chkd/*:?Array<boolean>*/)/*:SectorEntry*/ {\n\tvar buf/*:Array<number>*/ = [], buf_chain/*:Array<any>*/ = [];\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<RawBytes>*/, dir_start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array<boolean>*/ = [], buf/*:Array<number>*/ = [], buf_chain/*:Array<RawBytes>*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array<number>*/);\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<RawBytes>*/, Paths/*:Array<string>*/, 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<number>*/{\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<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j/*:number*/ = 0, flen/*:number*/ = 0;\n\tvar file/*:CFBEntry*/ = cfb.FileIndex[0];\n\tfor(; 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 < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 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<string>*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array<string>*/ = 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<<n)-1);\n\tvar v = buf[h] >>> 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<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens/*:Array<number>*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array<number>*/ = [];\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<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes/*:Array<number>*/ = [];\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<string>*/ = [];\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<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text/*:string*/)/*:string*/ {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o/*:Array<string>*/ = [], 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<string>*/)/*: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<string>*/, 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<string>*/ = [];\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<any>*/ {\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<number>*/, 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<string>*/ {\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<k.length; ++i) {\n\t\tvar n = k[i].replace(/^Root Entry[\\/]/,\"\").toLowerCase();\n\t\tif(f == n || g == n) return zip.files ? zip.files[k[i]] : zip.FileIndex[i];\n\t}\n\treturn null;\n}\n\nfunction getzipfile(zip, file/*:string*/) {\n\tvar o = safegetzipfile(zip, file);\n\tif(o == null) throw new Error(\"Cannot find file \" + file + \" in zip\");\n\treturn o;\n}\n\nfunction getzipdata(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdata(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipdata(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipstr(zip, file/*:string*/, safe/*:?boolean*/)/*:?string*/ {\n\tif(!safe) return getdatastr(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipstr(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipbin(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdatabin(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipbin(zip, file); } catch(e) { return null; }\n}\n\nfunction zipentries(zip) {\n\tvar k = zip.FullPaths || keys(zip.files), o = [];\n\tfor(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\\/]/, \"\"));\n\treturn o.sort();\n}\n\nfunction zip_add_file(zip, path, content) {\n\tif(zip.FullPaths) {\n\t\tif(typeof content == \"string\") {\n\t\t\tvar res;\n\t\t\tif(has_buf) res = Buffer_from(content);\n\t\t\t/* TODO: investigate performance in Edge 13 */\n\t\t\t//else if(typeof TextEncoder !== \"undefined\") res = new TextEncoder().encode(content);\n\t\t\telse res = utf8decode(content);\n\t\t\treturn CFB.utils.cfb_add(zip, path, res);\n\t\t}\n\t\tCFB.utils.cfb_add(zip, path, content);\n\t}\n\telse zip.file(path, content);\n}\n\nfunction zip_new() { return CFB.utils.cfb_new(); }\n\nfunction zip_read(d, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": return CFB.read(d, { type: \"base64\" });\n\t\tcase \"binary\": return CFB.read(d, { type: \"binary\" });\n\t\tcase \"buffer\": case \"array\": return CFB.read(d, { type: \"buffer\" });\n\t}\n\tthrow new Error(\"Unrecognized type \" + o.type);\n}\n\nfunction resolve_path(path/*:string*/, base/*:string*/)/*:string*/ {\n\tif(path.charAt(0) == \"/\") return path.slice(1);\n\tvar result = base.split('/');\n\tif(base.slice(-1) != \"/\") result.pop(); // folder path\n\tvar target = path.split('/');\n\twhile (target.length !== 0) {\n\t\tvar step = target.shift();\n\t\tif (step === '..') result.pop();\n\t\telse if (step !== '.') result.push(step);\n\t}\n\treturn result.join('/');\n}\nvar XML_HEADER = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r\\n';\nvar attregexg=/([^\"\\s?>\\/]+)\\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(\"<![CDATA[\");\n\t\tif(i == -1) return s.replace(encregex, function($$, $1) { return encodings[$$]||String.fromCharCode(parseInt($1,$$.indexOf(\"x\")>-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, \"<br/>\").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<string>*/ = [], 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 <foo>...</foo> 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]*?)</(?:\\\\w+:)?'+f+'>',((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+</g,\"<\")\n\t\t\t\t// Replace remaining new lines and spaces with space\n\t\t\t\t.replace(/[\\t\\n\\r ]+/g, \" \")\n\t\t\t\t// Replace <br> 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]*?)</(?:vt:)?\" + bt + \">\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)</;\nfunction parseVector(data/*:string*/, opts)/*:Array<{v:string,t:string}>*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array<string>*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array<any>*/ = [];\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 + '</' + f + '>'; }\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 + '</' + f : \"/\") + '>';}\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?<>:\\/]+)(?:[\\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<Array<RawBytes> >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i<bufs[0].length;++i) if(bufs[0][i]) for(var j=0,L=bufs[0][i].length;j<L;j+=w) x.push.apply(x, bufs[0][i].slice(j,j+w)); return x; };\nvar __toBuffer = has_buf ? function(bufs) { return (bufs[0].length > 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<string>*/=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar __utf16le = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; } : ___utf16le;\n\nvar ___hexlify = function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar __hexlify = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { return Buffer.isBuffer(b)/*:: && b instanceof Buffer*/ ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); } : ___hexlify;\n\nvar ___utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(\"\"); };\nvar __utf8 = has_buf ? function utf8_b(b/*:RawBytes|CFBlob*/, s/*:number*/, e/*:number*/) { return (Buffer.isBuffer(b)/*:: && (b instanceof Buffer)*/) ? b.toString('utf8',s,e) : ___utf8(b,s,e); } : ___utf8;\n\nvar ___lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 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<Block>*/ = [], 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<string>*/ { 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<number>*/)/*: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 <SpreadsheetML> */\n/* 14.2 Part Summary <DrawingML> */\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 '<?xml': break;\n\t\t\tcase '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\\w+):/)||[\"\",\"\"])[1] ]; break;\n\t\t\tcase '<Default': ctext[y.Extension] = y.ContentType; break;\n\t\t\tcase '<Override':\n\t\t\t\tif(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\tif(ct.xmlns !== XMLNS.CT) throw new Error(\"Unknown Namespace: \" + ct.xmlns);\n\tct.calcchain = ct.calcchains.length > 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<string>}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array<string>*/ = [], 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] = ('</Types>'); 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] === '<Relationship') {\n\t\t\tvar rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; if(y.TargetMode) rel.TargetMode = y.TargetMode;\n\t\t\tvar canonictarget = y.TargetMode === 'External' ? y.Target : resolve_path(y.Target, currentFilePath);\n\t\t\trels[canonictarget] = rel;\n\t\t\thash[y.Id] = rel;\n\t\t}\n\t});\n\trels[\"!id\"] = hash;\n\treturn rels;\n}\n\n\n/* TODO */\nfunction write_rels(rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\n\t\t//'xmlns:ns0': XMLNS.RELS,\n\t\t'xmlns': XMLNS.RELS\n\t})];\n\tkeys(rels['!id']).forEach(function(rid) {\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\n\t});\n\tif(o.length>2){ o[o.length] = ('</Relationships>'); 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 <manifest:manifest>\n\t\tcase 'file-entry': // 4.3 <manifest:file-entry>\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 <manifest:encryption-data>\n\t\tcase 'algorithm': // 4.5 <manifest:algorithm>\n\t\tcase 'start-key-generation': // 4.6 <manifest:start-key-generation>\n\t\tcase 'key-derivation': // 4.7 <manifest:key-derivation>\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<Array<string> >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">\\n');\n\to.push(' <manifest:file-entry manifest:full-path=\"/\" manifest:version=\"1.2\" manifest:media-type=\"application/vnd.oasis.opendocument.spreadsheet\"/>\\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' <manifest:file-entry manifest:full-path=\"' + manifest[i][0] + '\" manifest:media-type=\"' + manifest[i][1] + '\"/>\\n');\n\to.push('</manifest:manifest>');\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' <rdf:Description rdf:about=\"' + file + '\">\\n',\n\t\t' <rdf:type rdf:resource=\"http://docs.oasis-open.org/ns/office/1.2/meta/' + (tag || \"odf\") + '#' + res + '\"/>\\n',\n\t\t' </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' <rdf:Description rdf:about=\"' + base + '\">\\n',\n\t\t' <ns0:hasPart xmlns:ns0=\"http://docs.oasis-open.org/ns/office/1.2/meta/pkg#\" rdf:resource=\"' + file + '\"/>\\n',\n\t\t' </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\\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('</rdf:RDF>');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn '<office:document-meta xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" office:version=\"1.2\"><office:meta><meta:generator>Sheet' + 'JS ' + XLSX.version + '</meta:generator></office:meta></office:document-meta>';\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<Array<string> >*/ = [\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<RegExp>*/ = /*#__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] = ('</cp:coreProperties>'); 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<Array<string> >*/ = [\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<Array<any>>*/, 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<string>*/ = [], 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', '<vt:lpstr>Worksheets</vt:lpstr>')+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 \"<vt:lpstr>\" + escapexml(s) + \"</vt:lpstr>\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = ('</Properties>'); 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 '<?xml': break;\n\t\t\tcase '<Properties': break;\n\t\t\tcase '<property': name = unescapexml(y.name); break;\n\t\t\tcase '</property>': name = null; break;\n\t\t\tdefault: if (x.indexOf('<vt:') === 0) {\n\t\t\t\tvar toks = x.split('>');\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) === \"</\") {/* empty */\n\t\t\t} else if(opts.WTF) throw new Error(x);\n\t\t}\n\t}\n\treturn p;\n}\n\nfunction write_cust_props(cp/*::, opts*/)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Properties', null, {\n\t\t'xmlns': XMLNS.CUST_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t})];\n\tif(!cp) return o.join(\"\");\n\tvar pid = 1;\n\tkeys(cp).forEach(function custprop(k) { ++pid;\n\t\to[o.length] = (writextag('property', write_vt(cp[k], true), {\n\t\t\t'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',\n\t\t\t'pid': pid,\n\t\t\t'name': escapexml(k)\n\t\t}));\n\t});\n\tif(o.length>2){ o[o.length] = '</Properties>'; 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<string>*/ = [];\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<string>*/ = [];\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(\"\") + '</' + T + '>';\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<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\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<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\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<n; ++j) o.write_shift(1, 0); return o; }\n\nfunction parslurp(blob, length, cb) {\n\tvar arr = [], target = blob.l + length;\n\twhile(blob.l < target) arr.push(cb(blob, target - blob.l));\n\tif(target !== blob.l) throw new Error(\"Slurp error\");\n\treturn arr;\n}\n\nfunction parsebool(blob, length/*:number*/) { return blob.read_shift(length) === 0x1; }\nfunction writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; }\n\nfunction parseuint16(blob/*::, length:?number, opts:?any*/) { return blob.read_shift(2, 'u'); }\nfunction writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; }\nfunction parseuint16a(blob, length/*:: :?number, opts:?any*/) { return parslurp(blob,length,parseuint16);}\n\n/* --- 2.5 Structures --- */\n\n/* [MS-XLS] 2.5.10 Bes (boolean or error) */\nfunction parse_Bes(blob/*::, length*/) {\n\tvar v = blob.read_shift(1), t = blob.read_shift(1);\n\treturn t === 0x01 ? v : v === 0x01;\n}\nfunction write_Bes(v, t/*:string*/, o) {\n\tif(!o) o = new_buf(2);\n\to.write_shift(1, ((t == 'e') ? +v : +!!v));\n\to.write_shift(1, ((t == 'e') ? 1 : 0));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.240 ShortXLUnicodeString */\nfunction parse_ShortXLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff >= 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 = \"<t>\" + z.t + \"</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<number>*/) {\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<Range>*/ {\n\tvar merges/*:Array<Range>*/ = [];\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<Range>*/) {\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<DBFField>*/ = [], 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<string>*/ = [];\n\tvar colwidths/*:Array<number>*/ = [];\n\tvar coldecimals/*:Array<number>*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array<any>*/ = [];\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<headers.length; ++j) {\n\t\t\tif(headers[j] == null) continue;\n\t\t\tswitch(coltypes[j]) {\n\t\t\t\tcase 'L': rout.write_shift(1, data[i][j] == null ? 0x3F : data[i][j] ? 0x54 : 0x46); break;\n\t\t\t\tcase 'B': rout.write_shift(8, data[i][j]||0, 'f'); break;\n\t\t\t\tcase 'N':\n\t\t\t\t\tvar _n = \"0\";\n\t\t\t\t\tif(typeof data[i][j] == \"number\") _n = data[i][j].toFixed(coldecimals[j]||0);\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"sbcs\");\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_s.length; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Ã', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê', HE:'Ë',\n\t\tAI:'ÃŒ', BI:'Ã', CI:'ÃŽ', HI:'Ã',\n\t\tAO:'Ã’', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û', HU:'Ãœ',\n\t\tAa:'à ', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê', He:'ë',\n\t\tAi:'ì', Bi:'Ã', Ci:'î', Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û', Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ', z:'Å“', a:'Æ', j:'Å’',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169, c:170, R:174, \"B \":180,\n\t\t/*::[*/0/*::]*/:176, /*::[*/1/*::]*/:177, /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179, /*::[*/5/*::]*/:181, /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183, Q:185, k:186, b:208, i:216, l:222, s:240, y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":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<string>*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array<RowInfo>*/ = [], colinfo/*:Array<ColInfo>*/ = [], cw/*:Array<string>*/ = [];\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<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'A': break; // TODO: comment\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; C_seen_X = true; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; if(!C_seen_X) C = 0;\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tval = record[rj].slice(1);\n\t\t\t\t\tif(val.charAt(0) === '\"') val = val.slice(1,val.length - 1);\n\t\t\t\t\telse if(val === 'TRUE') val = true;\n\t\t\t\t\telse if(val === 'FALSE') val = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(val))) {\n\t\t\t\t\t\tval = fuzzynum(val);\n\t\t\t\t\t\tif(next_cell_format !== null && fmt_is_date(next_cell_format)) val = numdate(val);\n\t\t\t\t\t} else if(!isNaN(fuzzydate(val).getDate())) {\n\t\t\t\t\t\tval = parseDate(val);\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof $cptable !== 'undefined' && typeof val == \"string\" && ((opts||{}).type != \"string\") && (opts||{}).codepage) val = $cptable.utils.decode(opts.codepage, val);\n\t\t\t\t\tC_seen_K = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'E':\n\t\t\t\t\tC_seen_E = true;\n\t\t\t\t\tvar formula = rc_to_a1(record[rj].slice(1), {r:R,c:C});\n\t\t\t\t\tarr[R][C] = [arr[R][C], formula];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S':\n\t\t\t\t\tC_seen_S = true;\n\t\t\t\t\tarr[R][C] = [arr[R][C], \"S5S\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'G': break; // unknown\n\t\t\t\tcase 'R': _R = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tcase 'C': _C = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(C_seen_K) {\n\t\t\t\tif(arr[R][C] && arr[R][C].length == 2) arr[R][C][0] = val;\n\t\t\t\telse arr[R][C] = val;\n\t\t\t\tnext_cell_format = null;\n\t\t\t}\n\t\t\tif(C_seen_S) {\n\t\t\t\tif(C_seen_E) throw new Error(\"SYLK shared formula cannot have own formula\");\n\t\t\t\tvar shrbase = _R > -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<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; ++F_seen; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; /*C = 0;*/\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'M': Mval = parseInt(record[rj].slice(1)) / 20; break;\n\t\t\t\tcase 'F': break; /* ??? */\n\t\t\t\tcase 'G': break; /* hide grid */\n\t\t\t\tcase 'P':\n\t\t\t\t\tnext_cell_format = formats[parseInt(record[rj].slice(1))];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': break; /* cell style */\n\t\t\t\tcase 'D': break; /* column */\n\t\t\t\tcase 'N': break; /* font */\n\t\t\t\tcase 'W':\n\t\t\t\t\tcw = record[rj].slice(1).split(\" \");\n\t\t\t\t\tfor(j = parseInt(cw[0], 10); j <= parseInt(cw[1], 10); ++j) {\n\t\t\t\t\t\tMval = parseInt(cw[2], 10);\n\t\t\t\t\t\tcolinfo[j-1] = Mval === 0 ? {hidden:true}: {wch:Mval}; process_col(colinfo[j-1]);\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C': /* default column format */\n\t\t\t\t\tC = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!colinfo[C]) colinfo[C] = {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R': /* row properties */\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!rowinfo[R]) rowinfo[R] = {};\n\t\t\t\t\tif(Mval > 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<string>*/, rows/*:Array<RowInfo>*/) {\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<string>*/ = [\"ID;PWXL;N;E\"], o/*:Array<string>*/ = [];\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<string>*/, 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<string>*/, 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<string>*/ = [];\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<string>*/ = [], oo/*:Array<string>*/ = [], 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<string>*/ = [];\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<string>*/ = [];\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 '<condense': break;\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<extend': break;\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<shadow':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<shadow>':\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\t\t\tcase '</shadow>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\tfont.cp = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty TODO */\n\t\t\tcase '<outline':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<outline>':\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\t\t\tcase '</outline>': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '<rFont': font.name = y.val; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': font.sz = y.val; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<strike>':\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\t\t\tcase '</strike>': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tif(!y.val) break;\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase 'double': font.uval = \"double\"; break;\n\t\t\t\t\tcase 'singleAccounting': font.uval = \"single-accounting\"; break;\n\t\t\t\t\tcase 'doubleAccounting': font.uval = \"double-accounting\"; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '<u>':\n\t\t\tcase '<u/>': font.u = 1; break;\n\t\t\tcase '</u>': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '<b':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<b>':\n\t\t\tcase '<b/>': font.b = 1; break;\n\t\t\tcase '</b>': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '<i':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<i>':\n\t\t\tcase '<i/>': font.i = 1; break;\n\t\t\tcase '</i>': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '<color':\n\t\t\t\tif(y.rgb) font.color = y.rgb.slice(2,8);\n\t\t\t\tbreak;\n\t\t\tcase '<color>': case '<color/>': case '</color>': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '<family': font.family = y.val; break;\n\t\t\tcase '<family>': case '<family/>': case '</family>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '<vertAlign': font.valign = y.val; break;\n\t\t\tcase '<vertAlign>': case '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '<scheme': break;\n\t\t\tcase '<scheme>': case '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': 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 <r> 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<string>*/ = [];\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('<span style=\"' + style.join(\"\") + '\">');\n\n\t\tif(font.b) { intro.push(\"<b>\"); outro.push(\"</b>\"); }\n\t\tif(font.i) { intro.push(\"<i>\"); outro.push(\"</i>\"); }\n\t\tif(font.strike) { intro.push(\"<s>\"); outro.push(\"</s>\"); }\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(\"</\" + align + \">\"); }\n\n\t\toutro.push(\"</span>\");\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>, string, Array<string>]*/ = [[],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,'<br/>') + 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 = \"<si>\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"<t\";\n\t\t\tif(!s.t) s.t = \"\";\n\t\t\tif(s.t.match(straywsregex)) sitag += ' xml:space=\"preserve\"';\n\t\t\tsitag += \">\" + escapexml(s.t) + \"</t>\";\n\t\t}\n\t\tsitag += \"</si>\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = ('</sst>'); 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<number>*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array<number>*/ = [], 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<string>*/ {\n\tvar o/*:Array<string>*/ = [];\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 '<?xml': break;\n\t\t\tcase '<encryption': case '</encryption>': break;\n\t\t\tcase '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;\n\t\t\tcase '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encryptedHmacValue; break;\n\t\t\tcase '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;\n\t\t\tcase '</keyEncryptors>': break;\n\n\t\t\tcase '<keyEncryptor': o.uri = y.uri; break;\n\t\t\tcase '</keyEncryptor>': break;\n\t\t\tcase '<encryptedKey': o.encs.push(y); break;\n\t\t\tdefault: throw y[0];\n\t\t}\n\t});\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */\nfunction parse_RC4CryptoHeader(blob, length/*:number*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;\n\tif(vers.Minor != 2) throw new Error('unrecognized minor version code: ' + vers.Minor);\n\tif(vers.Major > 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<MAX_MDW; ++MDW) if(Math.abs(collw - cycle_width(collw)) <= delta) { delta = Math.abs(collw - cycle_width(collw)); _MDW = MDW; }\n\tMDW = _MDW;\n}\n/* XLML specifies width in terms of pixels */\n/*function find_mdw_wpx(wpx) {\n\tvar delta = Infinity, guess = 0, _MDW = MIN_MDW;\n\tfor(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) {\n\t\tguess = char2width_(px2char_(wpx))*256;\n\t\tguess = (guess) % 1;\n\t\tif(guess > 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 '<borders': case '<borders>': case '</borders>': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '<border': case '<border>': case '<border/>':\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 '</border>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<left/>': break;\n\t\t\tcase '<left': case '<left>': break;\n\t\t\tcase '</left>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<right/>': break;\n\t\t\tcase '<right': case '<right>': break;\n\t\t\tcase '</right>': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '<top/>': break;\n\t\t\tcase '<top': case '<top>': break;\n\t\t\tcase '</top>': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '<bottom/>': break;\n\t\t\tcase '<bottom': case '<bottom>': break;\n\t\t\tcase '</bottom>': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '<diagonal': case '<diagonal>': case '<diagonal/>': break;\n\t\t\tcase '</diagonal>': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '<horizontal': case '<horizontal>': case '<horizontal/>': break;\n\t\t\tcase '</horizontal>': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '<vertical': case '<vertical>': case '<vertical/>': break;\n\t\t\tcase '</vertical>': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '<start': case '<start>': case '<start/>': break;\n\t\t\tcase '</start>': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '<end': case '<end>': case '<end/>': break;\n\t\t\tcase '</end>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color>':\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': 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 '<fills': case '<fills>': case '</fills>': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '<fill>': case '<fill': case '<fill/>':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '</fill>': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '<gradientFill>': break;\n\t\t\tcase '<gradientFill':\n\t\t\tcase '</gradientFill>': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '<patternFill': case '<patternFill>':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '<patternFill/>': case '</patternFill>': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '<bgColor':\n\t\t\t\tif(!fill.bgColor) fill.bgColor = {};\n\t\t\t\tif(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10);\n\t\t\t\tif(y.theme) fill.bgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.bgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb) fill.bgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<bgColor/>': case '</bgColor>': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '<fgColor':\n\t\t\t\tif(!fill.fgColor) fill.fgColor = {};\n\t\t\t\tif(y.theme) fill.fgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.fgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb != null) fill.fgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<fgColor/>': case '</fgColor>': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '<stop': case '<stop/>': break;\n\t\t\tcase '</stop>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color/>': break;\n\t\t\tcase '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': 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 '<fonts': case '<fonts>': case '</fonts>': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '<font': case '<font>': break;\n\t\t\tcase '</font>': case '<font/>':\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 '<name': if(y.val) font.name = utf8read(y.val); break;\n\t\t\tcase '<name/>': case '</name>': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '<b': font.bold = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<b/>': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '<i': font.italic = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<i/>': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase \"none\": font.underline = 0x00; break;\n\t\t\t\t\tcase \"single\": font.underline = 0x01; break;\n\t\t\t\t\tcase \"double\": font.underline = 0x02; break;\n\t\t\t\t\tcase \"singleAccounting\": font.underline = 0x21; break;\n\t\t\t\t\tcase \"doubleAccounting\": font.underline = 0x22; break;\n\t\t\t\t} break;\n\t\t\tcase '<u/>': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike': font.strike = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '<outline': font.outline = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '<shadow': font.shadow = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '<condense': font.condense = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<condense/>': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '<extend': font.extend = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<extend/>': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': if(y.val) font.sz = +y.val; break;\n\t\t\tcase '<sz/>': case '</sz>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '<vertAlign': if(y.val) font.vertAlign = y.val; break;\n\t\t\tcase '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '<family': if(y.val) font.family = parseInt(y.val,10); break;\n\t\t\tcase '<family/>': case '</family>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '<scheme': if(y.val) font.scheme = y.val; break;\n\t\t\tcase '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\ty.codepage = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.?.? color CT_Color */\n\t\t\tcase '<color':\n\t\t\t\tif(!font.color) font.color = {};\n\t\t\t\tif(y.auto) font.color.auto = parsexmlbool(y.auto);\n\n\t\t\t\tif(y.rgb) font.color.rgb = y.rgb.slice(-6);\n\t\t\t\telse if(y.indexed) {\n\t\t\t\t\tfont.color.index = parseInt(y.indexed, 10);\n\t\t\t\t\tvar icv = XLSIcv[font.color.index];\n\t\t\t\t\tif(font.color.index == 81) icv = XLSIcv[1];\n\t\t\t\t\tif(!icv) icv = XLSIcv[1]; //throw new Error(x); // note: 206 is valid\n\t\t\t\t\tfont.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);\n\t\t\t\t} else if(y.theme) {\n\t\t\t\t\tfont.color.theme = parseInt(y.theme, 10);\n\t\t\t\t\tif(y.tint) font.color.tint = parseFloat(y.tint);\n\t\t\t\t\tif(y.theme && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\t\tfont.color.rgb = rgb_tint(themes.themeElements.clrScheme[font.color.theme].rgb, font.color.tint || 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': 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<number>*/ = (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 '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break;\n\t\t\tcase '<numFmt': {\n\t\t\t\tvar f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10);\n\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\tif(j>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 '</numFmt>': 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 = [\"<numFmts>\"];\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] = (\"</numFmts>\");\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 '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '<xf': case '<xf/>':\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 '</xf>': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '<alignment': case '<alignment/>':\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 '</alignment>': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '<protection':\n\t\t\t\tbreak;\n\t\t\tcase '</protection>': case '<protection/>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': 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<string>*/ = [];\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] = (\"</cellXfs>\");\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(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/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] = ('<fonts count=\"1\"><font><sz val=\"12\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font></fonts>');\n\to[o.length] = ('<fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills>');\n\to[o.length] = ('<borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>');\n\to[o.length] = ('<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('<cellStyles count=\"1\"><cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/></cellStyles>');\n\to[o.length] = ('<dxfs count=\"0\"/>');\n\to[o.length] = ('<tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium9\" defaultPivotStyle=\"PivotStyleMedium4\"/>');\n\n\tif(o.length>2){ o[o.length] = ('</styleSheet>'); 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<string>*/ = [];\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'</a:lt1>', '</a:dk1>', '</a:lt2>', '</a:dk2>',\n\t'</a:accent1>', '</a:accent2>', '</a:accent3>',\n\t'</a:accent4>', '</a:accent5>', '</a:accent6>',\n\t'</a:hlink>', '</a:folHlink>'\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 '<a:clrScheme': case '</a:clrScheme>': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '<a:srgbClr':\n\t\t\t\tcolor.rgb = y.val; break;\n\n\t\t\t/* 20.1.2.3.33 sysClr CT_SystemColor */\n\t\t\tcase '<a:sysClr':\n\t\t\t\tcolor.rgb = y.lastClr; break;\n\n\t\t\t/* 20.1.4.1.1 accent1 (Accent 1) */\n\t\t\t/* 20.1.4.1.2 accent2 (Accent 2) */\n\t\t\t/* 20.1.4.1.3 accent3 (Accent 3) */\n\t\t\t/* 20.1.4.1.4 accent4 (Accent 4) */\n\t\t\t/* 20.1.4.1.5 accent5 (Accent 5) */\n\t\t\t/* 20.1.4.1.6 accent6 (Accent 6) */\n\t\t\t/* 20.1.4.1.9 dk1 (Dark 1) */\n\t\t\t/* 20.1.4.1.10 dk2 (Dark 2) */\n\t\t\t/* 20.1.4.1.15 folHlink (Followed Hyperlink) */\n\t\t\t/* 20.1.4.1.19 hlink (Hyperlink) */\n\t\t\t/* 20.1.4.1.22 lt1 (Light 1) */\n\t\t\t/* 20.1.4.1.23 lt2 (Light 2) */\n\t\t\tcase '<a:dk1>': case '</a:dk1>':\n\t\t\tcase '<a:lt1>': case '</a:lt1>':\n\t\t\tcase '<a:dk2>': case '</a:dk2>':\n\t\t\tcase '<a:lt2>': case '</a:lt2>':\n\t\t\tcase '<a:accent1>': case '</a:accent1>':\n\t\t\tcase '<a:accent2>': case '</a:accent2>':\n\t\t\tcase '<a:accent3>': case '</a:accent3>':\n\t\t\tcase '<a:accent4>': case '</a:accent4>':\n\t\t\tcase '<a:accent5>': case '</a:accent5>':\n\t\t\tcase '<a:accent6>': case '</a:accent6>':\n\t\t\tcase '<a:hlink>': case '</a:hlink>':\n\t\t\tcase '<a:folHlink>': case '</a:folHlink>':\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 = /<a:clrScheme([^>]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /<a:fontScheme([^>]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /<a:fmtScheme([^>]*)>[\\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 = /<a:themeElements([^>]*)>[\\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] = '<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">';\n\to[o.length] = '<a:themeElements>';\n\n\to[o.length] = '<a:clrScheme name=\"Office\">';\n\to[o.length] = '<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>';\n\to[o.length] = '<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>';\n\to[o.length] = '<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>';\n\to[o.length] = '<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>';\n\to[o.length] = '<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>';\n\to[o.length] = '<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>';\n\to[o.length] = '<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>';\n\to[o.length] = '<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>';\n\to[o.length] = '<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>';\n\to[o.length] = '<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>';\n\to[o.length] = '<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>';\n\to[o.length] = '<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>';\n\to[o.length] = '</a:clrScheme>';\n\n\to[o.length] = '<a:fontScheme name=\"Office\">';\n\to[o.length] = '<a:majorFont>';\n\to[o.length] = '<a:latin typeface=\"Cambria\"/>';\n\to[o.length] = '<a:ea typeface=\"\"/>';\n\to[o.length] = '<a:cs typeface=\"\"/>';\n\to[o.length] = '<a:font script=\"Jpan\" typeface=\"ï¼ï¼³ Pゴシック\"/>';\n\to[o.length] = '<a:font script=\"Hang\" typeface=\"ë§‘ì€ ê³ ë”•\"/>';\n\to[o.length] = '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] = '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] = '<a:font script=\"Arab\" typeface=\"Times New Roman\"/>';\n\to[o.length] = '<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>';\n\to[o.length] = '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] = '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] = '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] = '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] = '<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>';\n\to[o.length] = '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] = '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] = '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] = '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] = '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] = '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] = '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] = '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] = '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] = '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] = '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] = '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] = '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] = '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] = '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] = '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] = '<a:font script=\"Viet\" typeface=\"Times New Roman\"/>';\n\to[o.length] = '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] = '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] = '</a:majorFont>';\n\to[o.length] = '<a:minorFont>';\n\to[o.length] = '<a:latin typeface=\"Calibri\"/>';\n\to[o.length] = '<a:ea typeface=\"\"/>';\n\to[o.length] = '<a:cs typeface=\"\"/>';\n\to[o.length] = '<a:font script=\"Jpan\" typeface=\"ï¼ï¼³ Pゴシック\"/>';\n\to[o.length] = '<a:font script=\"Hang\" typeface=\"ë§‘ì€ ê³ ë”•\"/>';\n\to[o.length] = '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] = '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] = '<a:font script=\"Arab\" typeface=\"Arial\"/>';\n\to[o.length] = '<a:font script=\"Hebr\" typeface=\"Arial\"/>';\n\to[o.length] = '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] = '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] = '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] = '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] = '<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>';\n\to[o.length] = '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] = '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] = '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] = '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] = '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] = '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] = '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] = '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] = '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] = '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] = '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] = '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] = '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] = '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] = '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] = '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] = '<a:font script=\"Viet\" typeface=\"Arial\"/>';\n\to[o.length] = '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] = '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] = '</a:minorFont>';\n\to[o.length] = '</a:fontScheme>';\n\n\to[o.length] = '<a:fmtScheme name=\"Office\">';\n\to[o.length] = '<a:fillStyleLst>';\n\to[o.length] = '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] = '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] = '<a:gsLst>';\n\to[o.length] = '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '</a:gsLst>';\n\to[o.length] = '<a:lin ang=\"16200000\" scaled=\"1\"/>';\n\to[o.length] = '</a:gradFill>';\n\to[o.length] = '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] = '<a:gsLst>';\n\to[o.length] = '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"100000\"/><a:shade val=\"100000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:shade val=\"100000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '</a:gsLst>';\n\to[o.length] = '<a:lin ang=\"16200000\" scaled=\"0\"/>';\n\to[o.length] = '</a:gradFill>';\n\to[o.length] = '</a:fillStyleLst>';\n\to[o.length] = '<a:lnStyleLst>';\n\to[o.length] = '<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] = '<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] = '<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] = '</a:lnStyleLst>';\n\to[o.length] = '<a:effectStyleLst>';\n\to[o.length] = '<a:effectStyle>';\n\to[o.length] = '<a:effectLst>';\n\to[o.length] = '<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] = '</a:effectLst>';\n\to[o.length] = '</a:effectStyle>';\n\to[o.length] = '<a:effectStyle>';\n\to[o.length] = '<a:effectLst>';\n\to[o.length] = '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] = '</a:effectLst>';\n\to[o.length] = '</a:effectStyle>';\n\to[o.length] = '<a:effectStyle>';\n\to[o.length] = '<a:effectLst>';\n\to[o.length] = '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] = '</a:effectLst>';\n\to[o.length] = '<a:scene3d><a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera><a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig></a:scene3d>';\n\to[o.length] = '<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>';\n\to[o.length] = '</a:effectStyle>';\n\to[o.length] = '</a:effectStyleLst>';\n\to[o.length] = '<a:bgFillStyleLst>';\n\to[o.length] = '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] = '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] = '<a:gsLst>';\n\to[o.length] = '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '</a:gsLst>';\n\to[o.length] = '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>';\n\to[o.length] = '</a:gradFill>';\n\to[o.length] = '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] = '<a:gsLst>';\n\to[o.length] = '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>';\n\to[o.length] = '</a:gsLst>';\n\to[o.length] = '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>';\n\to[o.length] = '</a:gradFill>';\n\to[o.length] = '</a:bgFillStyleLst>';\n\to[o.length] = '</a:fmtScheme>';\n\to[o.length] = '</a:themeElements>';\n\n\to[o.length] = '<a:objectDefaults>';\n\to[o.length] = '<a:spDef>';\n\to[o.length] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"3\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"lt1\"/></a:fontRef></a:style>';\n\to[o.length] = '</a:spDef>';\n\to[o.length] = '<a:lnDef>';\n\to[o.length] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"0\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"tx1\"/></a:fontRef></a:style>';\n\to[o.length] = '</a:lnDef>';\n\to[o.length] = '</a:objectDefaults>';\n\to[o.length] = '<a:extraClrSchemeLst/>';\n\to[o.length] = '</a:theme>';\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<any>*/ {\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 \"<?xml\":\n break;\n case \"<metadata\":\n case \"</metadata>\":\n break;\n case \"<metadataTypes\":\n case \"</metadataTypes>\":\n break;\n case \"<metadataType\":\n out.Types.push({ name: y.name });\n break;\n case \"</metadataType>\":\n break;\n case \"<futureMetadata\":\n for (var j = 0; j < out.Types.length; ++j)\n if (out.Types[j].name == y.name)\n lastmeta = out.Types[j];\n break;\n case \"</futureMetadata>\":\n break;\n case \"<bk>\":\n break;\n case \"</bk>\":\n break;\n case \"<rc\":\n if (metatype == 1)\n out.Cell.push({ type: out.Types[y.t - 1].name, index: +y.v });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[y.t - 1].name, index: +y.v });\n break;\n case \"</rc>\":\n break;\n case \"<cellMetadata\":\n metatype = 1;\n break;\n case \"</cellMetadata>\":\n metatype = 2;\n break;\n case \"<valueMetadata\":\n metatype = 0;\n break;\n case \"</valueMetadata>\":\n metatype = 2;\n break;\n case \"<extLst\":\n case \"<extLst>\":\n case \"</extLst>\":\n case \"<extLst/>\":\n break;\n case \"<ext\":\n pass = true;\n break;\n case \"</ext>\":\n pass = false;\n break;\n case \"<rvb\":\n if (!lastmeta)\n break;\n if (!lastmeta.offsets)\n lastmeta.offsets = [];\n lastmeta.offsets.push(+y.i);\n break;\n default:\n if (!pass && opts.WTF)\n throw new Error(\"unrecognized \" + y[0] + \" in metadata\");\n }\n return x;\n });\n return out;\n}\nfunction write_xlmeta_xml() {\n var o = [XML_HEADER];\n o.push('<metadata xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:xlrd=\"http://schemas.microsoft.com/office/spreadsheetml/2017/richdata\" xmlns:xda=\"http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray\">\\n <metadataTypes count=\"1\">\\n <metadataType name=\"XLDAPR\" minSupportedVersion=\"120000\" copy=\"1\" pasteAll=\"1\" pasteValues=\"1\" merge=\"1\" splitFirst=\"1\" rowColShift=\"1\" clearFormats=\"1\" clearComments=\"1\" assign=\"1\" coerce=\"1\" cellMeta=\"1\"/>\\n </metadataTypes>\\n <futureMetadata name=\"XLDAPR\" count=\"1\">\\n <bk>\\n <extLst>\\n <ext uri=\"{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}\">\\n <xda:dynamicArrayProperties fDynamic=\"1\" fCollapsed=\"0\"/>\\n </ext>\\n </extLst>\\n </bk>\\n </futureMetadata>\\n <cellMetadata count=\"1\">\\n <bk>\\n <rc t=\"1\" v=\"0\"/>\\n </bk>\\n </cellMetadata>\\n</metadata>');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array<any>*/ {\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 '<?xml': break;\n\t\t\t/* 18.6.2 calcChain CT_CalcChain 1 */\n\t\t\tcase '<calcChain': case '<calcChain>': case '</calcChain>': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break;\n\t\t}\n\t});\n\treturn d;\n}\n\n//function write_cc_xml(data, opts) { }\n\n/* [MS-XLSB] 2.6.4.1 */\nfunction parse_BrtCalcChainItem$(data) {\n\tvar out = {};\n\tout.i = data.read_shift(4);\n\tvar cell = {};\n\tcell.r = data.read_shift(4);\n\tcell.c = data.read_shift(4);\n\tout.r = encode_cell(cell);\n\tvar flags = data.read_shift(1);\n\tif(flags & 0x2) out.l = '1';\n\tif(flags & 0x8) out.a = '1';\n\treturn out;\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_bin(data, name, opts) {\n\tvar out = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_cc(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x003F: /* 'BrtCalcChainItem$' */\n\t\t\t\tout.push(val); break;\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\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml(/*::data, rel, name:string, _opts*/) {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, rel, name/*:string*/, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\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\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}, opts);\n}\n/* 20.5 DrawingML - SpreadsheetML Drawing */\n/* 20.5.2.35 wsDr CT_Drawing */\nfunction parse_drawing(data, rels/*:any*/) {\n\tif(!data) return \"??\";\n\t/*\n\t Chartsheet Drawing:\n\t - 20.5.2.35 wsDr CT_Drawing\n\t - 20.5.2.1 absoluteAnchor CT_AbsoluteAnchor\n\t - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t - 20.1.2.2.16 graphic CT_GraphicalObject\n\t - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n - chart reference\n\t the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/<c:chart [^>]*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'<v:shape' + wxt_helper({\n\t\tid:'_x0000_s' + _shapeid,\n\t\ttype:\"#_x0000_t202\",\n\t\tstyle:\"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10\" + (x[1].hidden ? \";visibility:hidden\" : \"\") ,\n\t\tfillcolor:\"#ECFAD4\",\n\t\tstrokecolor:\"#edeaa1\"\n\t}) + '>',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'<v:textbox><div style=\"text-align:left\"></div></v:textbox>',\n\t\t'<x:ClientData ObjectType=\"Note\">',\n\t\t\t'<x:MoveWithCells/>',\n\t\t\t'<x:SizeWithCells/>',\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 ? '' : '<x:Visible/>',\n\t\t'</x:ClientData>',\n\t'</v:shape>'\n\t]); });\n\to.push('</xml>');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array<RawComment>*/, threaded/*:boolean*/, people/*:?Array<any>*/) {\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<RawComment>*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar commentList/*:Array<RawComment>*/ = [];\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 == \"<t></t>\") 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<string>*/ = [];\n\to.push(\"<authors>\");\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(\"<author>\" + a + \"</author>\");\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(\"<author>\" + \"tc=\" + w.ID + \"</author>\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"<author>SheetJ5</author>\"); }\n\to.push(\"</authors>\");\n\to.push(\"<commentList>\");\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('<comment ref=\"' + d[0] + '\" authorId=\"' + lastauthor + '\"><text>');\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('</text></comment>');\n\t});\n\to.push(\"</commentList>\");\n\tif(o.length>2) { o[o.length] = ('</comments>'); 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<RawComment>*/ {\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 '<?xml': break;\n\n\t\t\t/* 2.6.207 ThreadedComments CT_ThreadedComments */\n\t\t\tcase '<ThreadedComments': break;\n\t\t\tcase '</ThreadedComments>': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '<threadedComment': comment = {author: y.personId, guid: y.id, ref: y.ref, T: 1}; break;\n\t\t\tcase '</threadedComment>': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '<text>': case '<text': tidx = idx + x.length; break;\n\t\t\tcase '</text>': 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 '<mentions': case '<mentions>': pass = true; break;\n\t\t\tcase '</mentions>': 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 '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': 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('</ThreadedComments>');\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 '<?xml': break;\n\n\t\t\t/* 2.4.85 personList CT_PersonList */\n\t\t\tcase '<personList': break;\n\t\t\tcase '</personList>': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '<person': out.push({name: y.displayname, id: y.id }); break;\n\t\t\tcase '</person>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': 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(\"</personList>\");\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<RawComment>*/ {\n\tvar out/*:Array<RawComment>*/ = [];\n\tvar authors/*:Array<string>*/ = [];\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<string>*/ = [];\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<number>*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array<number>*/ = [];\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<Range>*/ = [];\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<Array<any>>*/ = []; 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<Array<string>>*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array<string>*/ = [];\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<any>*/, 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<string>*/ = [], 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<any>*/, 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<ColInfo>*/ = [];\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<Range>*/ = [];\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<Range>*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '<mergeCells count=\"' + merges.length + '\">';\n\tfor(var i = 0; i != merges.length; ++i) o += '<mergeCell ref=\"' + encode_range(merges[i]) + '\"/>';\n\treturn o + '</mergeCells>';\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<string>*/, 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 = [\"<cols>\"], 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] = \"</cols>\";\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<any> */ = 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<string>*/ = [], cref/*:?Array<string>*/ = [], 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<RowInfo>*/ = [], 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 = \"<c \" + (x.slice(0,1)==\"<\"?\">\":\"\") + 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(/<f[^>]*\\/>/))) {\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<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array<string>*/ = [], 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] = '<sheetData/>';\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] = ('</sheetData>'); 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] = \"<hyperlinks>\";\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] = \"</hyperlinks>\";\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] = ('</worksheet>'); 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<string>*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array<Range>*/ = [];\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<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\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<string>*/ = [];\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<any> */ = 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<number|string>, string, ?string]*/ {\n\tvar col/*:Array<number|string>*/ = [];\n\tvar num = data.match(/^<c:numCache>/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/<c:pt idx=\"(\\d*)\">(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/<c:pt idx=\"(\\d*?)\"><c:v>(.*)<\\/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(/<c:formatCode>([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/<c:f>(.*?)<\\/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(/<c:numCache>[\\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] = ('</chartsheet>'); 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<string>*/ = [];\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 '<?xml': break;\n\n\t\t\t/* 18.2.27 workbook CT_Workbook 1 */\n\t\t\tcase '<workbook':\n\t\t\t\tif(x.match(wbnsregex)) xmlns = \"xmlns\" + x.match(/<(\\w+):/)[1];\n\t\t\t\twb.xmlns = y[xmlns];\n\t\t\t\tbreak;\n\t\t\tcase '</workbook>': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '<fileVersion': delete y[0]; wb.AppVersion = y; break;\n\t\t\tcase '<fileVersion/>': case '</fileVersion>': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '<fileSharing':\n\t\t\t\tbreak;\n\t\t\tcase '<fileSharing/>': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '<workbookPr':\n\t\t\tcase '<workbookPr/>':\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 '</workbookPr>': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '<workbookProtection':\n\t\t\t\tbreak;\n\t\t\tcase '<workbookProtection/>': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '<bookViews': case '<bookViews>': case '</bookViews>': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '</workbookView>': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '<sheets': case '<sheets>': case '</sheets>': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '<sheet':\n\t\t\t\tswitch(y.state) {\n\t\t\t\t\tcase \"hidden\": y.Hidden = 1; break;\n\t\t\t\t\tcase \"veryHidden\": y.Hidden = 2; break;\n\t\t\t\t\tdefault: y.Hidden = 0;\n\t\t\t\t}\n\t\t\t\tdelete y.state;\n\t\t\t\ty.name = unescapexml(utf8read(y.name));\n\t\t\t\tdelete y[0]; wb.Sheets.push(y); break;\n\t\t\tcase '</sheet>': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '<functionGroups': case '<functionGroups/>': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '<functionGroup': break;\n\n\t\t\t/* 18.2.9 externalReferences CT_ExternalReferences ? */\n\t\t\tcase '<externalReferences': case '</externalReferences>': case '<externalReferences>': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '<externalReference': break;\n\n\t\t\t/* 18.2.6 definedNames CT_DefinedNames ? */\n\t\t\tcase '<definedNames/>': break;\n\t\t\tcase '<definedNames>': case '<definedNames': pass=true; break;\n\t\t\tcase '</definedNames>': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '<definedName': {\n\t\t\t\tdname = {};\n\t\t\t\tdname.Name = utf8read(y.name);\n\t\t\t\tif(y.comment) dname.Comment = y.comment;\n\t\t\t\tif(y.localSheetId) dname.Sheet = +y.localSheetId;\n\t\t\t\tif(parsexmlbool(y.hidden||\"0\")) dname.Hidden = true;\n\t\t\t\tdnstart = idx + x.length;\n\t\t\t}\tbreak;\n\t\t\tcase '</definedName>': {\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 '<definedName/>': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '<calcPr': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '<calcPr/>': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '</calcPr>': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '<oleSize': break;\n\n\t\t\t/* 18.2.4 customWorkbookViews CT_CustomWorkbookViews ? */\n\t\t\tcase '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break;\n\t\t\t/* 18.2.3 customWorkbookView CT_CustomWorkbookView + */\n\t\t\tcase '<customWorkbookView': case '</customWorkbookView>': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break;\n\t\t\t/* 18.2.17 pivotCache CT_PivotCache ? */\n\t\t\tcase '<pivotCache': break;\n\n\t\t\t/* 18.2.21 smartTagPr CT_SmartTagPr ? */\n\t\t\tcase '<smartTagPr': case '<smartTagPr/>': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '<smartTagType': break;\n\n\t\t\t/* 18.2.24 webPublishing CT_WebPublishing ? */\n\t\t\tcase '<webPublishing': case '<webPublishing/>': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '<fileRecoveryPr': case '<fileRecoveryPr/>': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '<webPublishObject': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break; //TODO: check with versions of excel\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '<ArchID': break;\n\t\t\tcase '<AlternateContent':\n\t\t\tcase '<AlternateContent>': pass=true; break;\n\t\t\tcase '</AlternateContent>': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase '<revisionPtr': break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');\n\t\t}\n\t\treturn x;\n\t});\n\tif(XMLNS_main.indexOf(wb.xmlns) === -1) throw new Error(\"Unknown Namespace: \" + wb.xmlns);\n\n\tparse_wb_defaults(wb);\n\n\treturn wb;\n}\n\nfunction write_wb_xml(wb/*:Workbook*//*::, opts:?WriteOpts*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to[o.length] = writextag('workbook', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t//'xmlns:mx': XMLNS.mx,\n\t\t//'xmlns:s': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t});\n\n\tvar write_names = (wb.Workbook && (wb.Workbook.Names||[]).length > 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] = \"<bookViews>\";\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] = '<workbookView firstSheet=\"' + i + '\" activeTab=\"' + i + '\"/>';\n\t\to[o.length] = \"</bookViews>\";\n\t}\n\n\to[o.length] = \"<sheets>\";\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] = \"</sheets>\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"<definedNames>\";\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] = \"</definedNames>\";\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] = '</workbook>'; 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<string>*/ = [];\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<RawComment>*/ {\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<any>*/, 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(\"<?xml\") == -1) [\"html\", \"table\", \"head\", \"meta\", \"script\", \"style\", \"div\"].forEach(function(tag) { if(opening.indexOf(\"<\" + tag) >= 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<string>*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag('<Data ss:Type=\"String\">'), 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<Range>*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array<RowInfo>*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(/<!--([\\s\\S]*?)-->/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 <office:document> */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is <uof:UOF> */\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<string>*/ = [];\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<string>*/ = ['<Style ss:ID=\"Default\" ss:Name=\"Normal\"><NumberFormat/></Style>'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array<string>*/ = [];\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<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\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<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\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<string>*/ = [];\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(\"<PageSetup>\");\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(\"</PageSetup>\");\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(\"<Selected/>\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"<DisplayRightToLeft/>\");\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<any>*/)/*: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' ? \"\" : ('<Data ss:Type=\"' + t + '\">' + _v + '</Data>');\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 = '<Row ss:Index=\"' + (R+1) + '\"';\n\tif(row) {\n\t\tif(row.hpt && !row.hpx) row.hpx = pt2px(row.hpt);\n\t\tif(row.hpx) o += ' ss:AutoFitHeight=\"0\" ss:Height=\"' + row.hpx + '\"';\n\t\tif(row.hidden) o += ' ss:Hidden=\"1\"';\n\t}\n\treturn 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<Range>*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array<string>*/ = [];\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(\"</Row>\");\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<string>*/ = [];\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(\"<Names>\" + t + \"</Names>\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Table>\" + t + \"</Table>\");\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<string>*/ = [];\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<Range>*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\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<string>*/ = [];\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<string>*/ = [];\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<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;\n\tif(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error(\"Sheet not found: \" + o.sheet);\n\twrite_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o));\n\t/* ... */\n\twrite_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);\n\t/* ... */\n\twrite_biff_rec(ba, 0x000A);\n\treturn ba.end();\n}\n\nfunction write_FONTS_biff8(ba, data, opts) {\n\twrite_biff_rec(ba, 0x0031 /* Font */, write_Font({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Arial\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}, opts));\n}\n\n\nfunction write_FMTS_biff8(ba, NF/*:?SSFTable*/, opts) {\n\tif(!NF) return;\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_biff_rec(ba, 0x041E /* Format */, write_Format(i, NF[i], opts));\n\t});\n}\n\nfunction write_FEAT(ba, ws) {\n\t/* [MS-XLS] 2.4.112 */\n\tvar o = new_buf(19);\n\to.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);\n\twrite_biff_rec(ba, 0x0867 /* FeatHdr */, o);\n\t/* [MS-XLS] 2.4.111 */\n\to = new_buf(39);\n\to.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);\n\to.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);\n\twrite_Ref8U(safe_decode_range(ws['!ref']||\"A1\"), o);\n\to.write_shift(4, 4);\n\twrite_biff_rec(ba, 0x0868 /* Feat */, o);\n}\n\nfunction write_CELLXFS_biff8(ba, opts) {\n\tfor(var i = 0; i < 16; ++i) write_biff_rec(ba, 0x00e0 /* XF */, write_XF({numFmtId:0, style:true}, 0, opts));\n\topts.cellXfs.forEach(function(c) {\n\t\twrite_biff_rec(ba, 0x00e0 /* XF */, write_XF(c, 0, opts));\n\t});\n}\n\nfunction write_ws_biff8_hlinks(ba/*:BufArray*/, ws) {\n\tfor(var R=0; R<ws['!links'].length; ++R) {\n\t\tvar HL = ws['!links'][R];\n\t\twrite_biff_rec(ba, 0x01b8 /* HLink */, write_HLink(HL));\n\t\tif(HL[1].Tooltip) write_biff_rec(ba, 0x0800 /* HLinkTooltip */, write_HLinkTooltip(HL));\n\t}\n\tdelete ws['!links'];\n}\n\nfunction write_ws_cols_biff8(ba, cols) {\n\tif(!cols) return;\n\tvar cnt = 0;\n\tcols.forEach(function(col, idx) {\n\t\tif(++cnt <= 256 && col) {\n\t\t\twrite_biff_rec(ba, 0x007d /* ColInfo */, write_ColInfo(col_obj_w(idx, col), idx));\n\t\t}\n\t});\n}\n\nfunction write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts) {\n\tvar os = 16 + get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.v == null && !cell.bf) {\n\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t\treturn;\n\t}\n\tif(cell.bf) write_biff_rec(ba, 0x0006 /* Formula */, write_Formula(cell, R, C, opts, os));\n\telse 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\t/* TODO: emit RK as appropriate */\n\t\t\twrite_biff_rec(ba, 0x0203 /* Number */, write_Number(R, C, v, os, opts));\n\t\t\tbreak;\n\t\tcase 'b': case 'e':\n\t\t\twrite_biff_rec(ba, 0x0205 /* BoolErr */, write_BoolErr(R, C, cell.v, os, opts, cell.t));\n\t\t\tbreak;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvar isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);\n\t\t\t\twrite_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));\n\t\t\t} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||\"\").slice(0,255), os, opts));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t}\n}\n\n/* [MS-XLS] 2.1.7.20.5 */\nfunction write_ws_biff8(idx/*:number*/, opts, wb/*:Workbook*/) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheet/*:WBWSProp*/ = ((_WB.Sheets||[])[idx]||{}/*:any*/);\n\tvar dense = Array.isArray(ws);\n\tvar b8 = opts.biff == 8;\n\tvar ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\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<WBWSProp>*/ = (_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(/<table/i);\n\tif(!mtch) throw new Error(\"Invalid HTML: could not find <table>\");\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), /(:?<tr[^>]*>)/i, \"<tr>\");\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<Range>*/ = [];\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 == \"<tr\") { ++R; if(opts.sheetRows && opts.sheetRows <= R) { --R; break; } C = 0; continue; }\n\t\tif(hd != \"<td\" && hd != \"<th\") continue;\n\t\tvar cells = row.split(/<\\/t[dh]>/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/<t[dh]/i)) continue;\n\t\t\tvar m = cell, cc = 0;\n\t\t\t/* TODO: parse styles etc */\n\t\t\twhile(m.charAt(0) == \"<\" && (cc = m.indexOf(\">\")) > -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<Range>*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array<string>*/ = [];\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 = '<span contenteditable=\"true\">' + w + '</span>';\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 = '<a href=\"' + cell.l.Target +'\">' + w + '</a>';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"<tr>\";\n\treturn preamble + oo.join(\"\") + \"</tr>\";\n}\n\nvar HTML_BEGIN = '<html><head><meta charset=\"utf-8\"/><title>SheetJS Table Export</title></head><body>';\nvar HTML_END = '</body></html>';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/<table[\\s\\S]*?>[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find <table>\");\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<string>*/ = [];\n\treturn out.join(\"\") + '<table' + (o && o.id ? ' id=\"' + o.id + '\"' : \"\") + '>';\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<string>*/ = [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(\"</table>\" + 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<HTMLTableRowElement>*/ = 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<Range>*/ = [], midx = 0;\n\tvar rowinfo/*:Array<RowInfo>*/ = 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<HTMLTableCellElement>*/ = (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 <a> */\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<any>*/ {\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(/<text:s\\/>/g,\" \")\n\t\t.replace(/<text:s text:c=\"(\\d+)\"\\/>/g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/<text:tab[^>]*\\/>/g,\"\\t\")\n\t\t.replace(/<text:line-break\\/>/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<any>*/ = [], 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<string>*/ = [];\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<Range>*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array<RowInfo>*/ = [], 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/*: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(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 <table:table>\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 <table:table-row-group>\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 <table:table-row>\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 <table:covered-table-cell>\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 <table:table-cell>\n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: <office:document> is the root for FODS\n\t\t\tcase 'document-content': case '电åè¡¨æ ¼æ–‡æ¡£': // 3.1.3.2 <office:document-content>\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 <office:spreadsheet>\n\t\t\tcase 'scripts': // 3.12 <office:scripts>\n\t\t\tcase 'styles': // TODO <office:styles>\n\t\t\tcase 'font-face-decls': // 3.14 <office:font-face-decls>\n\t\t\tcase 'master-styles': // 3.15.4 <office:master-styles> -- 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 <office:annotation>\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 <dc:creator>\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: <office:meta> <uof:元数æ®> FODS/UOF\n\t\t\tcase 'settings': // TODO: <office:settings>\n\t\t\tcase 'config-item-set': // TODO: <office:config-item-set>\n\t\t\tcase 'config-item-map-indexed': // TODO: <office:config-item-map-indexed>\n\t\t\tcase 'config-item-map-entry': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'config-item-map-named': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'shapes': // 9.2.8 <table:shapes>\n\t\t\tcase 'frame': // 10.4.2 <draw:frame>\n\t\t\tcase 'text-box': // 10.4.3 <draw:text-box>\n\t\t\tcase 'image': // 10.4.4 <draw:image>\n\t\t\tcase 'data-pilot-tables': // 9.6.2 <table:data-pilot-tables>\n\t\t\tcase 'list-style': // 16.30 <text:list-style>\n\t\t\tcase 'form': // 13.13 <form:form>\n\t\t\tcase 'dde-links': // 9.8 <table:dde-links>\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: <number:scientific-number>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: <number:currency-symbol>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: <number:currency-style>\n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 <number:number-style>\n\t\t\tcase 'percentage-style': // 16.27.9 <number:percentage-style>\n\t\t\tcase 'date-style': // 16.27.10 <number:date-style>\n\t\t\tcase 'time-style': // 16.27.18 <number:time-style>\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 <office:script>\n\t\t\tcase 'libraries': break; // TODO: <ooo:libraries>\n\t\t\tcase 'automatic-styles': break; // 3.15.3 <office:automatic-styles>\n\n\t\t\tcase 'default-style': // TODO: <style:default-style>\n\t\t\tcase 'page-layout': break; // TODO: <style:page-layout>\n\t\t\tcase 'style': // 16.2 <style:style>\n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 <style:map>\n\t\t\tcase 'font-face': break; // 16.21 <style:font-face>\n\n\t\t\tcase 'paragraph-properties': break; // 17.6 <style:paragraph-properties>\n\t\t\tcase 'table-properties': break; // 17.15 <style:table-properties>\n\t\t\tcase 'table-column-properties': break; // 17.16 <style:table-column-properties>\n\t\t\tcase 'table-row-properties': break; // 17.17 <style:table-row-properties>\n\t\t\tcase 'table-cell-properties': break; // 17.18 <style:table-cell-properties>\n\n\t\t\tcase 'number': // 16.27.3 <number:number>\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 <number:fraction>\n\n\t\t\tcase 'day': // 16.27.11 <number:day>\n\t\t\tcase 'month': // 16.27.12 <number:month>\n\t\t\tcase 'year': // 16.27.13 <number:year>\n\t\t\tcase 'era': // 16.27.14 <number:era>\n\t\t\tcase 'day-of-week': // 16.27.15 <number:day-of-week>\n\t\t\tcase 'week-of-year': // 16.27.16 <number:week-of-year>\n\t\t\tcase 'quarter': // 16.27.17 <number:quarter>\n\t\t\tcase 'hours': // 16.27.19 <number:hours>\n\t\t\tcase 'minutes': // 16.27.20 <number:minutes>\n\t\t\tcase 'seconds': // 16.27.21 <number:seconds>\n\t\t\tcase 'am-pm': // 16.27.22 <number:am-pm>\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 <number:boolean-style>\n\t\t\tcase 'boolean': break; // 16.27.24 <number:boolean>\n\t\t\tcase 'text-style': break; // 16.27.25 <number:text-style>\n\t\t\tcase 'text': // 16.27.26 <number:text>\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 <table:named-range>\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 <number:text-content>\n\t\t\tcase 'text-properties': break; // 16.27.27 <style:text-properties>\n\t\t\tcase 'embedded-text': break; // 16.27.4 <number:embedded-text>\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 <table:table-column>\n\t\t\tcase 'table-header-rows': break; // 9.1.7 <table:table-header-rows>\n\t\t\tcase 'table-rows': break; // 9.1.12 <table:table-rows>\n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 <table:table-column-group>\n\t\t\tcase 'table-header-columns': break; // 9.1.11 <table:table-header-columns>\n\t\t\tcase 'table-columns': break; // 9.1.12 <table:table-columns>\n\n\t\t\tcase 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 <style:graphic-properties>\n\t\t\tcase 'calculation-settings': break; // 9.4.1 <table:calculation-settings>\n\t\t\tcase 'named-expressions': break; // 9.4.11 <table:named-expressions>\n\t\t\tcase 'label-range': break; // 9.4.9 <table:label-range>\n\t\t\tcase 'label-ranges': break; // 9.4.10 <table:label-ranges>\n\t\t\tcase 'named-expression': break; // 9.4.13 <table:named-expression>\n\t\t\tcase 'sort': break; // 9.4.19 <table:sort>\n\t\t\tcase 'sort-by': break; // 9.4.20 <table:sort-by>\n\t\t\tcase 'sort-groups': break; // 9.4.22 <table:sort-groups>\n\n\t\t\tcase 'tab': break; // 6.1.4 <text:tab>\n\t\t\tcase 'line-break': break; // 6.1.5 <text:line-break>\n\t\t\tcase 'span': break; // 6.1.7 <text:span>\n\t\t\tcase 'p': case '文本串': // 5.1.3 <text:p>\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; // <text:p>\n\t\t\tcase 's': break; // <text:s>\n\n\t\t\tcase 'database-range': // 9.4.15 <table:database-range>\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 <draw:object>\n\t\t\tcase 'title': case 'æ ‡é¢˜': break; // <*:title> OR <uof:æ ‡é¢˜>\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 <table:iteration>\n\t\t\tcase 'content-validations': break; // 9.4.4 <table:\n\t\t\tcase 'content-validation': break; // 9.4.5 <table:\n\t\t\tcase 'help-message': break; // 9.4.6 <table:\n\t\t\tcase 'error-message': break; // 9.4.7 <table:\n\t\t\tcase 'database-ranges': break; // 9.4.14 <table:database-ranges>\n\t\t\tcase 'filter': break; // 9.5.2 <table:filter>\n\t\t\tcase 'filter-and': break; // 9.5.3 <table:filter-and>\n\t\t\tcase 'filter-or': break; // 9.5.4 <table:filter-or>\n\t\t\tcase 'filter-condition': break; // 9.5.5 <table:filter-condition>\n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 <text:\n\t\t\tcase 'list-level-style-number': break; // 16.32 <text:\n\t\t\tcase 'list-level-properties': break; // 17.19 <style:\n\n\t\t\t/* 7.3 Document Fields */\n\t\t\tcase 'sender-firstname': // 7.3.6.2\n\t\t\tcase 'sender-lastname': // 7.3.6.3\n\t\t\tcase 'sender-initials': // 7.3.6.4\n\t\t\tcase 'sender-title': // 7.3.6.5\n\t\t\tcase 'sender-position': // 7.3.6.6\n\t\t\tcase 'sender-email': // 7.3.6.7\n\t\t\tcase 'sender-phone-private': // 7.3.6.8\n\t\t\tcase 'sender-fax': // 7.3.6.9\n\t\t\tcase 'sender-company': // 7.3.6.10\n\t\t\tcase 'sender-phone-work': // 7.3.6.11\n\t\t\tcase 'sender-street': // 7.3.6.12\n\t\t\tcase 'sender-city': // 7.3.6.13\n\t\t\tcase 'sender-postal-code': // 7.3.6.14\n\t\t\tcase 'sender-country': // 7.3.6.15\n\t\t\tcase 'sender-state-or-province': // 7.3.6.16\n\t\t\tcase 'author-name': // 7.3.7.1\n\t\t\tcase 'author-initials': // 7.3.7.2\n\t\t\tcase 'chapter': // 7.3.8\n\t\t\tcase 'file-name': // 7.3.9\n\t\t\tcase 'template-name': // 7.3.9\n\t\t\tcase 'sheet-name': // 7.3.9\n\t\t\t\tbreak;\n\n\t\t\tcase 'event-listener':\n\t\t\t\tbreak;\n\t\t\t/* TODO: FODS Properties */\n\t\t\tcase 'initial-creator':\n\t\t\tcase 'creation-date':\n\t\t\tcase 'print-date':\n\t\t\tcase 'generator':\n\t\t\tcase 'document-statistic':\n\t\t\tcase 'user-defined':\n\t\t\tcase 'editing-duration':\n\t\t\tcase 'editing-cycles':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: FODS Config */\n\t\t\tcase 'config-item':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: style tokens */\n\t\t\tcase 'page-number': break; // TODO <text:page-number>\n\t\t\tcase 'page-count': break; // TODO <text:page-count>\n\t\t\tcase 'time': break; // TODO <text:time>\n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 <table:\n\t\t\tcase 'detective': break; // 9.3.2 <table:\n\t\t\tcase 'operation': break; // 9.3.3 <table:\n\t\t\tcase 'highlighted-range': break; // 9.3.4 <table:\n\n\t\t\t/* 9.6 Data Pilot Tables <table: */\n\t\t\tcase 'data-pilot-table': // 9.6.3\n\t\t\tcase 'source-cell-range': // 9.6.5\n\t\t\tcase 'source-service': // 9.6.6\n\t\t\tcase 'data-pilot-field': // 9.6.7\n\t\t\tcase 'data-pilot-level': // 9.6.8\n\t\t\tcase 'data-pilot-subtotals': // 9.6.9\n\t\t\tcase 'data-pilot-subtotal': // 9.6.10\n\t\t\tcase 'data-pilot-members': // 9.6.11\n\t\t\tcase 'data-pilot-member': // 9.6.12\n\t\t\tcase 'data-pilot-display-info': // 9.6.13\n\t\t\tcase 'data-pilot-sort-info': // 9.6.14\n\t\t\tcase 'data-pilot-layout-info': // 9.6.15\n\t\t\tcase 'data-pilot-field-reference': // 9.6.16\n\t\t\tcase 'data-pilot-groups': // 9.6.17\n\t\t\tcase 'data-pilot-group': // 9.6.18\n\t\t\tcase 'data-pilot-group-member': // 9.6.19\n\t\t\t\tbreak;\n\n\t\t\t/* 10.3 Drawing Shapes */\n\t\t\tcase 'rect': // 10.3.2\n\t\t\t\tbreak;\n\n\t\t\t/* 14.6 DDE Connections */\n\t\t\tcase 'dde-connection-decls': // 14.6.2 <text:\n\t\t\tcase 'dde-connection-decl': // 14.6.3 <text:\n\t\t\tcase 'dde-link': // 14.6.4 <table:\n\t\t\tcase 'dde-source': // 14.6.5 <office:\n\t\t\t\tbreak;\n\n\t\t\tcase 'properties': break; // 13.7 <form:properties>\n\t\t\tcase 'property': break; // 13.8 <form:property>\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; // <table:\n\t\t\tcase 'office-document-common-attrs': break; // bare\n\t\t\tdefault: switch(Rn[2]) {\n\t\t\t\tcase 'dc:': // TODO: properties\n\t\t\t\tcase 'calcext:': // ignore undocumented extensions\n\t\t\t\tcase 'loext:': // ignore undocumented extensions\n\t\t\t\tcase 'ooo:': // ignore undocumented extensions\n\t\t\t\tcase 'chartooo:': // ignore undocumented extensions\n\t\t\t\tcase 'draw:': // TODO: drawing\n\t\t\t\tcase 'style:': // TODO: styles\n\t\t\t\tcase 'chart:': // TODO: charts\n\t\t\t\tcase 'form:': // TODO: forms\n\t\t\t\tcase 'uof:': // TODO: uof\n\t\t\t\tcase '表:': // TODO: uof\n\t\t\t\tcase 'å—:': // TODO: uof\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts.WTF) throw new Error(Rn);\n\t\t\t}\n\t\t}\n\t\tvar out/*:Workbook*/ = ({\n\t\t\tSheets: Sheets,\n\t\t\tSheetNames: SheetNames,\n\t\t\tWorkbook: WB\n\t\t}/*:any*/);\n\t\tif(opts.bookSheets) delete /*::(*/out/*:: :any)*/.Sheets;\n\t\treturn out;\n}\n\nfunction parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\topts = opts || ({}/*:any*/);\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);\n\tvar content = getzipstr(zip, 'content.xml');\n\tif(!content) throw new Error(\"Missing content.xml in ODS / UOF file\");\n\tvar wb = parse_content_xml(utf8read(content), opts);\n\tif(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml'));\n\treturn wb;\n}\nfunction parse_fods(data/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treturn parse_content_xml(data, opts);\n}\n\n/* OpenDocument */\nvar write_styles_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\tvar master_styles = [\n\t\t'<office:master-styles>',\n\t\t\t'<style:master-page style:name=\"mp1\" style:page-layout-name=\"mp1\">',\n\t\t\t\t'<style:header/>',\n\t\t\t\t'<style:header-left style:display=\"false\"/>',\n\t\t\t\t'<style:footer/>',\n\t\t\t\t'<style:footer-left style:display=\"false\"/>',\n\t\t\t'</style:master-page>',\n\t\t'</office:master-styles>'\n\t].join(\"\");\n\n\tvar payload = '<office:document-styles ' + wxt_helper({\n\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t'office:version': \"1.2\"\n\t}) + '>' + master_styles + '</office:document-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 '<text:s text:c=\"'+$$.length+'\"/>';})\n\t\t\t.replace(/\\t/g, \"<text:tab/>\")\n\t\t\t.replace(/\\n/g, \"</text:p><text:p>\")\n\t\t\t.replace(/^ /, \"<text:s/>\").replace(/ $/, \"<text:s/>\");\n\t};\n\n\tvar null_cell_xml = ' <table:table-cell />\\n';\n\tvar covered_cell_xml = ' <table:covered-table-cell/>\\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array<string>*/ = [];\n\t\to.push(' <table:table table:name=\"' + escapexml(wb.SheetNames[i]) + '\" table:style-name=\"ta1\">\\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array<Range>*/ = 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(' <table:table-column' + (ws[\"!cols\"][C] ? ' table:style-name=\"co' + ws[\"!cols\"][C].ods + '\"' : '') + '></table:table-column>\\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(' <table:table-row' + H + '></table:table-row>\\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(' <table:table-row' + H + '>\\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(' </table:table-row>\\n');\n\t\t}\n\t\to.push(' </table:table>\\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array<string>*/, wb) {\n\t\to.push(' <office:automatic-styles>\\n');\n\n\t\to.push(' <number:date-style style:name=\"N37\" number:automatic-order=\"true\">\\n');\n\t\to.push(' <number:month number:style=\"long\"/>\\n');\n\t\to.push(' <number:text>/</number:text>\\n');\n\t\to.push(' <number:day number:style=\"long\"/>\\n');\n\t\to.push(' <number:text>/</number:text>\\n');\n\t\to.push(' <number:year/>\\n');\n\t\to.push(' </number:date-style>\\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(' <style:style style:name=\"co' + cidx + '\" style:family=\"table-column\">\\n');\n\t\t\t\t\to.push(' <style:table-column-properties fo:break-before=\"auto\" style:column-width=\"' + w + '\"/>\\n');\n\t\t\t\t\to.push(' </style:style>\\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(' <style:style style:name=\"ro' + ridx + '\" style:family=\"table-row\">\\n');\n\t\t\t\t\to.push(' <style:table-row-properties fo:break-before=\"auto\" style:row-height=\"' + h + '\"/>\\n');\n\t\t\t\t\to.push(' </style:style>\\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(' <style:style style:name=\"ta1\" style:family=\"table\" style:master-page-name=\"mp1\">\\n');\n\t\to.push(' <style:table-properties table:display=\"true\" style:writing-mode=\"lr-tb\"/>\\n');\n\t\to.push(' </style:style>\\n');\n\n\t\t/* table cells, text */\n\t\to.push(' <style:style style:name=\"ce1\" style:family=\"table-cell\" style:parent-style-name=\"Default\" style:data-style-name=\"N37\"/>\\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' </office:automatic-styles>\\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('<office:document' + attr + fods + '>\\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('<office:document-content' + attr + '>\\n');\n\t\t// o.push(' <office:scripts/>\\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' <office:body>\\n');\n\t\to.push(' <office:spreadsheet>\\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(' </office:spreadsheet>\\n');\n\t\to.push(' </office:body>\\n');\n\t\tif(opts.bookType == \"fods\") o.push('</office:document>');\n\t\telse o.push('</office:document-content>');\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<Array<string> >*/ = [];\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<Array<any> >*/)/*:{(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<number>*/ {\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<string>*/, header/*:number*/, hdr/*:Array<any>*/, 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<any>*/ = [], 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<string>*/ = [];\n\tvar out/*:Array<any>*/ = [];\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<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = 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<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array<string>*/ = [], 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<string>*/ = [];\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<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = 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<string>*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array<string>*/ = [], C;\n\tvar cmds/*:Array<string>*/ = [];\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<any>*/, 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<string>*/ = 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<any>*/, 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<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = 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(\"</table>\" + 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<any>*/ = [], 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<string>*/ = [];\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<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = 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 { useSelector } from 'react-redux';\r\nimport downloadIcon from '../../../assets/download-svgrepo-com.svg';\r\nimport { utils, writeFile } from 'xlsx';\r\nimport { RootState } from '../../../app/store';\r\nimport { toast } from 'react-toastify';\r\nimport { Product } from '../slices/apiSlice';\r\n\r\nconst DownloadSearchResultsButton = () => {\r\n const products = useSelector((state: RootState) => state.order.products);\r\n const { activeFilter } = useSelector((state: RootState) => state.order);\r\n\r\n type ProductWithoutMultiBuy = Omit<Product, 'hasMultiBuyDiscount'>;\r\n\r\n const handleClick = () => {\r\n if (products) {\r\n const productsWithoutMultiBuy: ProductWithoutMultiBuy[] = products.map((product) => {\r\n const { hasMultiBuyDiscount, ...productWithoutMultiBuy } = product;\r\n return productWithoutMultiBuy;\r\n });\r\n const wb = utils.book_new();\r\n const ws = utils.json_to_sheet(\r\n activeFilter === undefined ? products : productsWithoutMultiBuy\r\n );\r\n utils.book_append_sheet(wb, ws, 'products');\r\n writeFile(wb, 'export.csv');\r\n } else {\r\n toast.error('Unable to download products');\r\n }\r\n };\r\n\r\n return (\r\n <button className=\"hidden lg:flex items-center justify-center text-grey-submenu px-2 lg:ml-5 h-7 bg-gray-100\" onClick={handleClick}>\r\n Download All <img className=\"ml-2 h-4 w-6\" src={downloadIcon} alt=\"\" />\r\n </button>\r\n );\r\n};\r\n\r\nexport default DownloadSearchResultsButton;\r\n","import { ActionCreatorWithPayload } from '@reduxjs/toolkit';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\n\r\ntype Props = {\r\n options: PaginationOptions;\r\n setPagination: ActionCreatorWithPayload<PaginationOptions, string>;\r\n};\r\n\r\nexport type PaginationOptions = {\r\n itemsPerPage: number;\r\n pageCount: number;\r\n currentPage: number;\r\n};\r\n\r\nconst PaginationControls = (props: Props) => {\r\n const { options: pagination, setPagination } = props;\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const first = async () => {\r\n dispatch(setPagination({ ...pagination, currentPage: 1 }));\r\n };\r\n\r\n const last = async () => {\r\n dispatch(setPagination({ ...pagination, currentPage: pagination.pageCount }));\r\n };\r\n\r\n const back = async () => {\r\n const updatedPagination: PaginationOptions = {\r\n ...pagination,\r\n currentPage: pagination.currentPage - 1\r\n };\r\n\r\n if (updatedPagination.currentPage > 0) dispatch(setPagination(updatedPagination));\r\n };\r\n\r\n const forward = async () => {\r\n const updatedPagination: PaginationOptions = {\r\n ...pagination,\r\n currentPage: pagination.currentPage + 1\r\n };\r\n\r\n if (updatedPagination.currentPage <= pagination.pageCount)\r\n dispatch(setPagination(updatedPagination));\r\n };\r\n\r\n return (\r\n <div className=\"text-grey-submenu text-sm font-normal\">\r\n <button\r\n className=\"mx-2 text-xs border bg-grey-light px-2 py-0.5\"\r\n disabled={pagination.currentPage === 1}\r\n onClick={first}>\r\n {'|<'}\r\n </button>\r\n <button\r\n className=\"mx-2 text-xs border bg-grey-light px-2 py-0.5\"\r\n disabled={pagination.currentPage === 1}\r\n onClick={back}>\r\n {'<'}\r\n </button>\r\n <span className=\"mx-4\">\r\n {pagination.currentPage} of {pagination.pageCount} pages\r\n </span>\r\n <button\r\n className=\"mx-2 text-xs border bg-grey-light px-2 py-0.5\"\r\n disabled={pagination.currentPage === pagination.pageCount}\r\n onClick={forward}>\r\n {'>'}\r\n </button>\r\n <button\r\n className=\"mx-2 text-xs border bg-grey-light px-2 py-0.5\"\r\n disabled={pagination.currentPage === pagination.pageCount}\r\n onClick={last}>\r\n {'>|'}\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PaginationControls;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgReset(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 16,\n viewBox: \"0 0 14 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: \"M6.1025 15.9487C4.41019 15.7094 3.01276 14.9487 1.91019 13.6667C0.80763 12.3846 0.256348 10.8889 0.256348 9.17949C0.256348 8.2735 0.435835 7.40598 0.794809 6.57692C1.15378 5.74786 1.64096 5.00855 2.25635 4.35897L2.76917 4.87179C2.17088 5.4359 1.72216 6.08974 1.42301 6.83333C1.12387 7.57692 0.974296 8.35897 0.974296 9.17949C0.974296 10.6838 1.4572 12.0043 2.42301 13.141C3.38883 14.2778 4.61532 14.9744 6.1025 15.2308V15.9487ZM8.15378 16V15.2821C9.62387 14.9402 10.8461 14.2094 11.8205 13.0897C12.7948 11.9701 13.282 10.6667 13.282 9.17949C13.282 7.47008 12.6837 6.01709 11.4871 4.82051C10.2905 3.62393 8.83755 3.02564 7.12814 3.02564H6.30763L8.1025 4.82051L7.58968 5.33333L4.92301 2.66667L7.58968 0L8.1025 0.51282L6.30763 2.30769H7.12814C9.04267 2.30769 10.6666 2.97436 11.9999 4.30769C13.3333 5.64103 13.9999 7.26496 13.9999 9.17949C13.9999 10.8889 13.4444 12.3761 12.3333 13.641C11.2222 14.906 9.829 15.6923 8.15378 16Z\",\n fill: \"#1C1B1F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReset);\nexport default __webpack_public_path__ + \"static/media/reset.019abd106992e4c3e655241a08de2168.svg\";\nexport { ForwardRef as ReactComponent };","import {\r\n resetSearchFilters,\r\n setFilterInfo,\r\n setSearchProductsResults,\r\n setActiveFilter,\r\n setDisplayDefaultMessage\r\n} from \"../slices/slice\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport reset from '../../../assets/reset.svg';\r\n\r\nconst ClearSearchButton = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n const handleClearSearch = () => {\r\n dispatch(resetSearchFilters())\r\n dispatch(setSearchProductsResults([]));\r\n dispatch(setFilterInfo(''));\r\n dispatch(setActiveFilter(undefined));\r\n dispatch(setDisplayDefaultMessage(true));\r\n }\r\n\r\n return (\r\n <button\r\n className='flex items-center justify-center lg:ml-5 h-7 text-grey-submenu px-1 sm:px-2 bg-gray-100'\r\n onClick={handleClearSearch}>\r\n Clear search\r\n <img className=\"ml-2 h-4 w-6\" src={reset} alt=\"\" />\r\n </button>\r\n );\r\n};\r\n\r\nexport default ClearSearchButton;\r\n","import {useEffect, useState} from 'react';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport ProductSearchFilters from '../components/ProductSearchFilters';\r\nimport ProductSearchResultsTable from '../components/ProductSearchResultsTable';\r\nimport FavouriteProductsFilter from '../components/FavouriteProductsFilter';\r\nimport UsualProductsFilter from '../components/UsualProductsFilter';\r\nimport DownloadSearchResultsButton from '../components/DownloadSearchResultsButton';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { setPagination, setFilterInfo } from '../slices/slice';\r\nimport PaginationControls from '../components/PaginationControls';\r\nimport ClearSearchButton from \"../components/ClearSearchButton\";\r\n\r\nconst OrderProductsPage = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(setActivePage('Order Products'));\r\n }, []);\r\n\r\n const { pagination, products, displayProducts, searchProductsParams, filterInfo } = useSelector((state: RootState) => state.order);\r\n\r\n const shouldShowResultDetails = !searchProductsParams.displayDefaultMessage &&\r\n (!!searchProductsParams.primaryCategory || !!searchProductsParams.secondaryCategory || !!searchProductsParams.searchValue) || filterInfo;\r\n\r\n const parseSearchResultInfo = () => {\r\n const {primaryCategory, secondaryCategory, searchValue} = searchProductsParams;\r\n\r\n if (!!searchValue)\r\n dispatch(setFilterInfo(searchValue));\r\n else if (!!primaryCategory && !!secondaryCategory)\r\n dispatch(setFilterInfo(`${primaryCategory}, ${secondaryCategory}`));\r\n else if (!!primaryCategory)\r\n dispatch(setFilterInfo(primaryCategory));\r\n else if (!!secondaryCategory)\r\n dispatch(setFilterInfo(secondaryCategory));\r\n };\r\n\r\n useEffect(() => {\r\n if (searchProductsParams.isSearching) parseSearchResultInfo();\r\n }, [JSON.parse(JSON.stringify(searchProductsParams))]);\r\n\r\n return (\r\n <>\r\n <div className=\"border-b border-zinc-300 pt-6\">\r\n <p className=\"text-gray-500 text-xs mb-4 px-5 lg:px-0\">Wholesale portal {`>`} Create Orders </p>\r\n <h1 className=\"font-serif text-4xl text-gray-700 mb-4 px-5 lg:px-0\">Create Orders</h1>\r\n <div className=\"bg-gray-100 mb-4 mt-10\">\r\n <ProductSearchFilters />\r\n </div>\r\n </div>\r\n <div className=\"flex justify-between\">\r\n <p className=\"mt-4 text-xs text-grey-submenu hidden lg:block\">\r\n {shouldShowResultDetails && !searchProductsParams.isSearching ? (\r\n <span>\r\n Displaying <span className='font-bold'>{products?.length}</span> results for\r\n <br></br>\r\n <span className='font-bold'>{filterInfo}</span>\r\n </span>\r\n ) : (\r\n searchProductsParams.displayDefaultMessage ? 'Enter product details above' : ''\r\n )}\r\n </p>\r\n <div className=\"mt-4 text-xs w-full md:w-auto\">\r\n <div className=\"flex space-x-2 justify-center sm:justify-start\">\r\n <ClearSearchButton />\r\n <FavouriteProductsFilter />\r\n <UsualProductsFilter />\r\n <DownloadSearchResultsButton />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-8 mb-4\">\r\n <ProductSearchResultsTable />\r\n </div>\r\n <PaginationControls options={pagination} setPagination={setPagination} />\r\n </>\r\n );\r\n};\r\n\r\nexport default OrderProductsPage;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgEdit(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 24,\n viewBox: \"0 0 25 24\",\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: \"M2.81447 24C2.20985 24 1.70501 23.7975 1.29996 23.3926C0.894909 22.9877 0.692383 22.483 0.692383 21.8786V5.10911C0.692383 4.50468 0.894909 4 1.29996 3.59508C1.70501 3.19015 2.20985 2.98769 2.81447 2.98769H13.5286L12.2149 4.30096H2.81447C2.61239 4.30096 2.42712 4.38514 2.25869 4.5535C2.09027 4.72188 2.00607 4.90709 2.00607 5.10911V21.8786C2.00607 22.0806 2.09027 22.2658 2.25869 22.4342C2.42712 22.6025 2.61239 22.6867 2.81447 22.6867H19.5892C19.7913 22.6867 19.9766 22.6025 20.145 22.4342C20.3134 22.2658 20.3976 22.0806 20.3976 21.8786V12.4735L21.7113 11.1603V21.8786C21.7113 22.483 21.5088 22.9877 21.1037 23.3926C20.6987 23.7975 20.1938 24 19.5892 24H2.81447ZM17.6212 3.33873L18.5837 4.26813L9.88816 12.9357V14.8071H11.7273L20.481 6.1067L21.393 7.01086L12.3134 16.1204H8.57448V12.3826L17.6212 3.33873ZM21.393 7.01086L17.6212 3.33873L20.3496 0.611162C20.7572 0.203721 21.2604 0 21.8591 0C22.4578 0 22.9585 0.212136 23.361 0.636409L24.0886 1.3461C24.4911 1.76534 24.6924 2.26455 24.6924 2.84372C24.6924 3.42292 24.4827 3.92213 24.0633 4.34137L21.393 7.01086Z\",\n fill: \"#3C68B1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEdit);\nexport default __webpack_public_path__ + \"static/media/edit.49a13b36f3f74fe030e1816fcb8ad0c3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTrash(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 24,\n viewBox: \"0 0 22 24\",\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: \"M4.67285 24C3.99188 24 3.41188 23.7605 2.93284 23.2815C2.45384 22.8025 2.21433 22.2225 2.21433 21.5415V2.69271H0.692383V1.17076H6.78018V0H15.9119V1.17076H21.9997V2.69271H20.4777V21.5415C20.4777 22.242 20.2431 22.8268 19.7738 23.2961C19.3046 23.7654 18.7197 24 18.0192 24H4.67285ZM18.9558 2.69271H3.73628V21.5415C3.73628 21.8146 3.82408 22.039 3.99969 22.2146C4.1753 22.3902 4.39969 22.4781 4.67285 22.4781H18.0192C18.2533 22.4781 18.468 22.3805 18.6631 22.1854C18.8582 21.9902 18.9558 21.7756 18.9558 21.5415V2.69271ZM8.00942 19.4342H9.53141V5.73661H8.00942V19.4342ZM13.1606 19.4342H14.6826V5.73661H13.1606V19.4342Z\",\n fill: \"#3C68B1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrash);\nexport default __webpack_public_path__ + \"static/media/trash.6a5536f014e025438652fe45a4beddec.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTickCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\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: \"M10.1368 17.3222L18.6486 8.81052L17.5482 7.72957L10.1368 15.1531L6.39595 11.4122L5.32713 12.4931L10.1368 17.3222ZM12.0021 24C10.3554 24 8.8038 23.6851 7.34746 23.0552C5.89112 22.4253 4.61755 21.5652 3.52675 20.4748C2.43592 19.3845 1.57543 18.1115 0.945255 16.6558C0.315085 15.2001 0 13.6489 0 12.0021C0 10.3424 0.314948 8.78236 0.944845 7.32198C1.57474 5.86157 2.43485 4.59123 3.52517 3.51096C4.61551 2.43066 5.88852 1.57543 7.34421 0.945256C8.79992 0.315086 10.3511 0 11.9979 0C13.6576 0 15.2176 0.31495 16.678 0.944846C18.1384 1.57474 19.4088 2.42959 20.489 3.50938C21.5693 4.58919 22.4246 5.85897 23.0547 7.31873C23.6849 8.77846 24 10.3382 24 11.9979C24 13.6446 23.6851 15.1962 23.0552 16.6525C22.4253 18.1089 21.5704 19.3825 20.4906 20.4733C19.4108 21.5641 18.141 22.4246 16.6813 23.0547C15.2215 23.6849 13.6618 24 12.0021 24Z\",\n fill: \"#469F44\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTickCircle);\nexport default __webpack_public_path__ + \"static/media/tick-circle.fabe3420d96c26b23e4e30074d3d588a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgCrossCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\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: \"M7.2 17.7436L12 12.9436L16.8 17.7436L17.7436 16.8L12.9436 12L17.7436 7.2L16.8 6.2564L12 11.0564L7.2 6.2564L6.2564 7.2L11.0564 12L6.2564 16.8L7.2 17.7436ZM12.0045 24C10.3451 24 8.78496 23.6851 7.32413 23.0554C5.86331 22.4256 4.59259 21.5709 3.51197 20.4913C2.43137 19.4117 1.57589 18.1422 0.945533 16.6827C0.315178 15.2233 0 13.6638 0 12.0045C0 10.3451 0.314878 8.78496 0.944634 7.32413C1.57441 5.86331 2.4291 4.59259 3.5087 3.51197C4.5883 2.43137 5.85782 1.57589 7.31727 0.945534C8.77673 0.315179 10.3362 0 11.9955 0C13.6549 0 15.215 0.314877 16.6759 0.944633C18.1367 1.57441 19.4074 2.4291 20.488 3.5087C21.5686 4.5883 22.4241 5.85782 23.0545 7.31727C23.6848 8.77673 24 10.3362 24 11.9955C24 13.6549 23.6851 15.215 23.0554 16.6759C22.4256 18.1367 21.5709 19.4074 20.4913 20.488C19.4117 21.5686 18.1422 22.4241 16.6827 23.0545C15.2233 23.6848 13.6638 24 12.0045 24Z\",\n fill: \"#DC4F4F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCrossCircle);\nexport default __webpack_public_path__ + \"static/media/cross-circle.096ac7556c9bba2761b20a7821d0435e.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useRef} from \"react\";\r\n\r\ntype Props = {\r\n quantity: number | undefined;\r\n setQuantity: (q: number | undefined) => void;\r\n confirmEdit: () => Promise<void>;\r\n};\r\n\r\nconst BasketQuantityInputGroup = (props: Props) => {\r\n const { quantity, setQuantity, confirmEdit } = props;\r\n\r\n const qtyInputRef = useRef<HTMLInputElement>(null);\r\n\r\n const onClickDecrementQuantity = () => {\r\n if (quantity && quantity > 1) setQuantity(quantity - 1);\r\n };\r\n\r\n const onClickIncrementQuantity = () => {\r\n if (!quantity) return setQuantity(1);\r\n\r\n const isWithinLimit = (quantity + 1).toString().length <= 6;\r\n if (isWithinLimit) setQuantity(quantity + 1);\r\n };\r\n\r\n const onChangeQuantity = (value: string) => {\r\n if (!value) return setQuantity(undefined);\r\n\r\n const isWithinLimit = value.length <= 6;\r\n if (isWithinLimit) setQuantity(+value);\r\n };\r\n\r\n const focusInputOnIncrementOrDecrement = (event: React.MouseEvent<HTMLElement>, inputRef: React.RefObject<HTMLInputElement | null>) => {\r\n event.preventDefault();\r\n inputRef.current?.focus();\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"border border-gray-400 flex justify-center text-grey-submenu rounded-full w-fit\">\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-r-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, qtyInputRef);\r\n onClickDecrementQuantity();\r\n }}>\r\n -\r\n </button>\r\n <input\r\n className=\"w-16 h-8 px-1 text-sm text-center quantity-editor remove-number-input-arrows\"\r\n type=\"number\"\r\n ref={qtyInputRef}\r\n value={quantity}\r\n min={1}\r\n onBlur={() => setQuantity(quantity ? quantity : 0)}\r\n onFocus={(e) => e.currentTarget.select()}\r\n onChange={(e) => onChangeQuantity(e.target.value)}\r\n onKeyUp={async (e) =>\r\n e.key === 'Enter' && quantity && quantity > 0 ? await confirmEdit() : null\r\n }\r\n />\r\n <button\r\n className=\"text-white bg-blue w-8 rounded-full rounded-l-none\"\r\n onClick={(e) => {\r\n focusInputOnIncrementOrDecrement(e, qtyInputRef);\r\n onClickIncrementQuantity();\r\n }}>\r\n +\r\n </button>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default BasketQuantityInputGroup;\r\n","import { useSelector } from 'react-redux';\r\nimport editIcon from '../../../assets/edit.svg';\r\nimport binIcon from '../../../assets/trash.svg';\r\nimport tickIcon from '../../../assets/tick-circle.svg';\r\nimport crossIcon from '../../../assets/cross-circle.svg';\r\nimport noImageIcon from '../../../assets/hide_image.svg';\r\nimport {\r\n BasketLine,\r\n useDeleteBasketItemMutation,\r\n useUpdateBasketItemMutation\r\n} from '../slices/apiSlice';\r\nimport { RootState } from '../../../app/store';\r\nimport { useEffect, useState } from 'react';\r\nimport BasketQuantityInputGroup from './BasketQuantityInputGroup';\r\nimport { toast } from 'react-toastify';\r\nimport { useLazyGetItemImageQuery } from '../../ordering/slices/apiSlice';\r\nimport { openProductImageModal } from '../../ordering/slices/slice';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\n\r\nexport type Props = {\r\n data: BasketLine;\r\n isCarriage?: boolean;\r\n};\r\n\r\nconst BasketTableRow = (props: Props) => {\r\n const { data } = props;\r\n const dispatch = useAppDispatch();\r\n\r\n const [imageUrl, setImageUrl] = useState('');\r\n const [getImage] = useLazyGetItemImageQuery();\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const additionalCharge = data.additionalCharge;\r\n\r\n const [updateBasketItem, { isLoading: isUpdating }] = useUpdateBasketItemMutation();\r\n const [deleteBasketItem, { isLoading: isDeleting }] = useDeleteBasketItemMutation();\r\n\r\n const [editMode, setEditMode] = useState<boolean>(false);\r\n const [quantity, setQuantity] = useState<number | undefined>(data.quantity);\r\n\r\n const disableActionButtons = isUpdating || isDeleting;\r\n\r\n useEffect(() => {\r\n loadImage();\r\n }, []);\r\n\r\n const loadImage = async () => {\r\n try {\r\n const blob = await getImage({ itemNumber: data.itemNumber, imageType: 0 }).unwrap();\r\n const url = URL.createObjectURL(blob);\r\n setImageUrl(url);\r\n } catch (error) {}\r\n };\r\n\r\n const onClickRemoveBasketItem = async () => {\r\n try {\r\n await deleteBasketItem(data.lineNumber);\r\n toast.success(`Removed ${data.itemNumber} from basket`);\r\n } catch (e) {\r\n toast.error(`Unable to remove ${data.itemNumber} from basket`);\r\n }\r\n };\r\n\r\n const onClickConfirmEdit = async () => {\r\n try {\r\n if (quantity && quantity > 0) {\r\n await updateBasketItem({ lineNumber: data.lineNumber, quantity });\r\n setEditMode(false);\r\n const removedCommasFromStock = data.stock.replaceAll(',', '');\r\n if (quantity > Number(removedCommasFromStock)) {\r\n toast.warning(\r\n `Warning - there is insufficient stock of this item, this line may go on back order. Updated ${data.itemNumber} quantity`\r\n );\r\n } else {\r\n toast.success(`Updated ${data.itemNumber} quantity`);\r\n }\r\n }\r\n } catch (e) {\r\n toast.error(`Unable to update ${data.itemNumber} quantity`);\r\n }\r\n };\r\n\r\n const onClickCancelEdit = () => {\r\n setEditMode(false);\r\n setQuantity(data.quantity);\r\n };\r\n\r\n const onClickImage = async () => {\r\n try {\r\n const blob = await getImage({ itemNumber: data.itemNumber, imageType: 1 }).unwrap();\r\n const url = URL.createObjectURL(blob);\r\n\r\n dispatch(\r\n openProductImageModal({\r\n isOpen: true,\r\n itemNumber: data.itemNumber,\r\n description: data.description,\r\n productImage: url\r\n })\r\n );\r\n } catch (e) {\r\n toast.error('Unable to open image');\r\n }\r\n };\r\n\r\n return (\r\n <tr\r\n key={data.lineNumber}\r\n className={!editMode ? 'h-14 text-sm divide-y' : 'h-14 text-sm divide-y bg-blue-light'}>\r\n <td className=\"lg:hidden py-2\">\r\n <div className=\"flex flex-col text-grey-submenu\">\r\n <div className=\"text-blue flex flex-col mb-4\">\r\n <span className=\"font-semibold text-lg\">{data.description}</span>\r\n <span className=\"text-sm\">{data.itemNumber}</span>\r\n </div>\r\n <div className=\"flex justify-between\">\r\n <div className=\"flex flex-col\">\r\n <span className=\"mb-2 text-base\">Quantity</span>\r\n {!editMode || !additionalCharge ? (\r\n <div className=\"border-grey-300 border rounded-full px-5 py-1 bg-white w-28 text-center\">\r\n {data.quantity.toLocaleString()}\r\n </div>\r\n ) : (\r\n <BasketQuantityInputGroup\r\n confirmEdit={onClickConfirmEdit}\r\n quantity={quantity}\r\n setQuantity={setQuantity}\r\n />\r\n )}\r\n </div>\r\n <div className=\"flex flex-col\">\r\n <span className=\"mb-2 text-base\">Your price</span>\r\n <span className=\"text-blue text-lg\">\r\n {currencySymbol}\r\n {data.totalLinePrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex pt-5\">\r\n {!editMode ? (\r\n <>\r\n <button onClick={() => setEditMode(true)} disabled={disableActionButtons}>\r\n <img className=\"h-6\" src={editIcon} alt=\"\" />\r\n </button>\r\n <button onClick={onClickRemoveBasketItem} disabled={disableActionButtons}>\r\n <img className=\"h-6 ml-4\" src={binIcon} alt=\"\" />\r\n </button>\r\n </>\r\n ) : (\r\n <>\r\n <button onClick={onClickConfirmEdit} disabled={disableActionButtons}>\r\n <img className=\"h-6 ml-2\" src={tickIcon} alt=\"\" />\r\n </button>\r\n <button onClick={onClickCancelEdit} disabled={disableActionButtons}>\r\n <img className=\"h-6 ml-2\" src={crossIcon} alt=\"\" />\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n {additionalCharge === 'False' ? (\r\n <td className=\"hidden lg:table-cell\">\r\n {!imageUrl || imageUrl == '' ? (\r\n <button>\r\n <img className=\"mt-2 mb-2 mr-2 h-20\" src={noImageIcon} alt=\"\" />\r\n </button>\r\n ) : (\r\n <button onClick={onClickImage}>\r\n <img className=\"mt-2 mb-2 mr-2 h-20\" src={imageUrl} alt=\"\" />\r\n </button>\r\n )}\r\n </td>\r\n ) : (\r\n <td></td>\r\n )}\r\n <td className=\"hidden lg:table-cell relative after:h-1/3 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-full after:mr-2\">\r\n {data.itemNumber}\r\n <br />\r\n <span className=\"font-semibold\">{data.description}</span>\r\n </td>\r\n <td className=\"hidden lg:table-cell\">{data.lineNumber}</td>\r\n <td className=\"hidden lg:table-cell\">{data.stock.toLocaleString()}</td>\r\n <td className=\"hidden lg:table-cell\">\r\n {data.packQuantity > 0 ? data.packQuantity.toLocaleString() : '-'}\r\n </td>\r\n <td className=\"hidden lg:table-cell relative after:h-1/3 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-full after:mr-2\">\r\n {data.unit}\r\n </td>\r\n <td className=\"font-semibold hidden lg:table-cell\">{data.discountPercentage.toFixed(2)}</td>\r\n <td className=\"font-semibold hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.discountPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 5\r\n })}\r\n </td>\r\n <td className=\"font-semibold hidden lg:table-cell relative after:h-1/3 pr-2 after:w-0.5 after:absolute after:right-0 after:bg-gray-300 after:content-[''] after:top-0 after:translate-y-full after:mr-2\">\r\n {currencySymbol}\r\n {data.totalLinePrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n {!editMode || !additionalCharge ? (\r\n <div className=\"border-grey-300 border rounded-full px-5 py-1 bg-white w-32 text-center\">\r\n {data.quantity.toLocaleString()}\r\n </div>\r\n ) : (\r\n <BasketQuantityInputGroup\r\n confirmEdit={onClickConfirmEdit}\r\n quantity={quantity}\r\n setQuantity={setQuantity}\r\n />\r\n )}\r\n </td>\r\n {additionalCharge === 'False' ? (\r\n <td className=\"text-right pr-2 hidden lg:table-cell\">\r\n <div className=\"w-15 flex justify-end\">\r\n {!editMode ? (\r\n <>\r\n <button onClick={() => setEditMode(true)} disabled={disableActionButtons}>\r\n <img className=\"h-6\" src={editIcon} alt=\"\" />\r\n </button>\r\n <button onClick={onClickRemoveBasketItem} disabled={disableActionButtons}>\r\n <img className=\"h-6 ml-4\" src={binIcon} alt=\"\" />\r\n </button>\r\n </>\r\n ) : (\r\n <>\r\n <button onClick={onClickConfirmEdit} disabled={disableActionButtons}>\r\n <img className=\"h-6\" src={tickIcon} alt=\"\" />\r\n </button>\r\n <button onClick={onClickCancelEdit} disabled={disableActionButtons}>\r\n <img className=\"h-6 ml-4\" src={crossIcon} alt=\"\" />\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </td>\r\n ) : null}\r\n </tr>\r\n );\r\n};\r\nexport default BasketTableRow;\r\n","import { useSelector } from 'react-redux';\r\nimport { useGetBasketQuery } from '../slices/apiSlice';\r\nimport BasketTableRow from './BasketTableRow';\r\nimport { RootState } from '../../../app/store';\r\nimport ProductImageModal from \"../../ordering/components/ProductImageModal\";\r\n\r\nconst BasketTable = () => {\r\n const { data: basketData, isLoading, isError } = useGetBasketQuery();\r\n const showBasketLines = basketData && basketData.basketLines && !isLoading && !isError;\r\n const showCarriageLine = basketData && basketData.carriageLine && !isLoading && !isError;\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n return (\r\n <div className=\"flex flex-col\">\r\n <table className=\"table-auto w-full border-separate border-spacing-y-0 decora-datatable-transactions\">\r\n <thead className=\"text-left bg-navy text-white text-sm font-light tracking-wider\">\r\n <tr className=\"h-14 hidden lg:table-row\">\r\n <th></th>\r\n <th>Item code/<br/>description</th>\r\n <th>Line<br/>No.</th>\r\n <th>Stock</th>\r\n <th>Pack<br/>Qty</th>\r\n <th>Unit</th>\r\n <th>Disc %</th>\r\n <th>Disc.<br/>Price</th>\r\n <th>Total</th>\r\n <th>Qty</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody className=\"text-grey-submenu\">\r\n {isLoading ? (\r\n <tr>\r\n <td>Loading basket...</td>\r\n </tr>\r\n ) : null}\r\n {isError ? (\r\n <tr>\r\n <td>The shopping basket is empty</td>\r\n </tr>\r\n ) : null}\r\n {showBasketLines\r\n ? basketData.basketLines.map((basketRow) => {\r\n return <BasketTableRow key={basketRow.lineNumber} data={basketRow} />;\r\n })\r\n : null}\r\n {showCarriageLine ? <BasketTableRow data={basketData.carriageLine} isCarriage /> : null}\r\n {showBasketLines ? (\r\n <tr>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400 \"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"font-semibold lg:border-t lg:border-b lg:!border-gray-400\">\r\n {currencySymbol}\r\n {basketData?.totalBasketPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n <td className=\"hidden lg:table-cell lg:border-t lg:border-b lg:!border-gray-400\"></td>\r\n </tr>\r\n ) : null}\r\n </tbody>\r\n </table>\r\n <ProductImageModal />\r\n </div>\r\n );\r\n};\r\nexport default BasketTable;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport {useGetBasketAmountQuery, useGetBasketQuery} from \"../../basket/slices/apiSlice\";\r\nimport {Link} from \"react-router-dom\";\r\n\r\nconst OrderSummary = () => {\r\n const {data: amount } = useGetBasketAmountQuery();\r\n const { isError, isLoading } = useGetBasketQuery();\r\n\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const activePage = useSelector((state: RootState) => state.layout.activePage);\r\n const hidden = activePage === 'Delivery Information' || activePage ==='Review Order';\r\n\r\n return (\r\n <div className=\"lg:ml-5 mt-10 bg-gray-100 h-84 w-full lg:w-fit\">\r\n <div className=\"ml-6 mr-6 grid gap-5 pt-7 pb-7\">\r\n <h1 className=\"flex w-full font-serif text-2xl text-gray-700 lg:mr-64 border-gray-300 border-b pb-4\">Order Summary</h1>\r\n <div className=\"flex justify-between text-grey-submenu\">\r\n <div className=\"grid gap-5\">\r\n <h1>Amount</h1>\r\n <h1 className=\"border-gray-300 border-b pb-5\">Total VAT Amount</h1>\r\n <h1 className=\"border-gray-300 border-b pb-5 font-bold lg:font-normal\">Total Invoice Amount</h1>\r\n </div>\r\n <div className=\"flex flex-col space-y-5 flex-1 text-right\">\r\n {isError ? <span>{user?.currencySymbol}</span> : (\r\n <span>{user?.currencySymbol}{amount?.amount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n )}\r\n {isError ? <span>{user?.currencySymbol}</span> : (\r\n <span className=\"border-gray-300 border-b pb-5\">{user?.currencySymbol}{amount?.totalVAT?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n )}\r\n {isError ? <span>{user?.currencySymbol}</span> : (\r\n <span className=\"border-gray-300 border-b pb-5\">{user?.currencySymbol}{amount?.totalAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n {!hidden ? (\r\n <Link\r\n className={`text-white text-center pt-2 pl-2 w-full h-10 font-light ${!isError && !isLoading ? \"bg-blue\" : \"bg-gray-500 cursor-default\"}`}\r\n to={!isError && !isLoading ? \"/checkout/deliveryinformation\" : \"\"}\r\n >\r\n {!isError && !isLoading ? 'Proceed to checkout' : 'The shopping basket is empty' }\r\n </Link>\r\n ) : null }\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default OrderSummary;\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { ConfirmOrderModalOptions } from '../components/ConfirmOrderModal';\r\nimport { CannotPlaceOrderModalOptions } from '../components/CannotPlaceOrderModal';\r\n\r\nexport type CheckoutState = {\r\n deliveryInformation: DeliveryInformation;\r\n activePages: string;\r\n confirmOrderModalOptions: ConfirmOrderModalOptions;\r\n cannotPlaceOrderModalOptions: CannotPlaceOrderModalOptions;\r\n};\r\n\r\nexport type DeliveryInformation = {\r\n addressReference: string;\r\n purchaseOrder: string;\r\n name: string;\r\n address1: string;\r\n address2: string;\r\n city: string;\r\n county: string;\r\n country: string;\r\n contact: string;\r\n postcode: string;\r\n phoneNumber: string;\r\n};\r\n\r\nconst initialState: CheckoutState = {\r\n deliveryInformation: {\r\n addressReference: 'INVOICE',\r\n purchaseOrder: '',\r\n name: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n county: '',\r\n country: '',\r\n contact: '',\r\n postcode: '',\r\n phoneNumber: ''\r\n },\r\n activePages: '',\r\n confirmOrderModalOptions: {\r\n isOpen: false\r\n },\r\n cannotPlaceOrderModalOptions: {\r\n isOpen: false\r\n }\r\n};\r\n\r\nexport const checkoutSlice = createSlice({\r\n name: 'checkout',\r\n initialState,\r\n reducers: {\r\n setDeliveryInformation: (state, action) => {\r\n state.deliveryInformation = action.payload;\r\n },\r\n setCheckoutActivePage: (state, action: PayloadAction<string>) => {\r\n state.activePages = action.payload;\r\n },\r\n openConfirmOrderModal: (state, action: PayloadAction<ConfirmOrderModalOptions>) => {\r\n state.confirmOrderModalOptions.isOpen = true;\r\n },\r\n closeConfirmOrderModal: (state, action: PayloadAction<void>) => {\r\n state.confirmOrderModalOptions.isOpen = false;\r\n },\r\n openCannotPlaceOrderModal: (state, action: PayloadAction<CannotPlaceOrderModalOptions>) => {\r\n state.cannotPlaceOrderModalOptions.isOpen = true;\r\n },\r\n closeCannotPlaceOrderModal: (state, action: PayloadAction<void>) => {\r\n state.cannotPlaceOrderModalOptions.isOpen = false;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setDeliveryInformation,\r\n setCheckoutActivePage,\r\n closeConfirmOrderModal,\r\n openConfirmOrderModal,\r\n openCannotPlaceOrderModal,\r\n closeCannotPlaceOrderModal\r\n} = checkoutSlice.actions;\r\n\r\nexport default checkoutSlice.reducer;\r\n","import Modal from \"../../layout/components/Modal\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../app/store\";\r\nimport { useAppDispatch } from \"../../../app/hooks\";\r\nimport { closeCannotPlaceOrderModal } from \"../slices/slice\";\r\n\r\n\r\nexport type CannotPlaceOrderModalOptions = {\r\n isOpen: boolean;\r\n};\r\n\r\nconst CannotPlaceOrderModal = () => {\r\n const { isOpen } = useSelector((state: RootState) => state.checkout.cannotPlaceOrderModalOptions);\r\n const dispatch = useAppDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeCannotPlaceOrderModal());\r\n };\r\n\r\n return (\r\n <Modal\r\n titleIcon={\"\"}\r\n title=\"There was an issue...\"\r\n isOpen={isOpen}\r\n hasCloseButton\r\n onClose={onClose}\r\n >\r\n <div className=\"grid gap-5\">\r\n <h1>Order cannot be processed.</h1>\r\n <h1 className=\"text-red\">The Basket was updated during the checkout process.</h1>\r\n </div>\r\n </Modal>\r\n );\r\n};\r\nexport default CannotPlaceOrderModal;\r\n","import BasketTable from '../components/BasketTable';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport { useEffect } from 'react';\r\nimport OrderSummary from \"../../checkout/components/OrderSummary\";\r\nimport CannotPlaceOrderModal from \"../../checkout/components/CannotPlaceOrderModal\";\r\n\r\nconst MyBasket = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(setActivePage('My Basket'));\r\n }, []);\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} Create orders</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">Shopping Basket</h1>\r\n {/* <BasketProgressBar /> */}\r\n </div>\r\n </div>\r\n <div className=\"mt-14\">\r\n <BasketTable />\r\n <OrderSummary />\r\n </div>\r\n </div>\r\n <CannotPlaceOrderModal />\r\n </div>\r\n );\r\n};\r\nexport default MyBasket;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nconst CustomerDetails = () => {\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n\r\n return (\r\n <div className=\"grid gap-5 text-grey-submenu\">\r\n <div className=\"flex justify-between border-gray-300 border-b border-t py-4\">\r\n <h1 className=\"flex w-auto text-2xl text-gray-700\">Customer details</h1>\r\n <div className=\"flex flex-1 text-right justify-end text-base text-grey-submenu hidden lg:block\">\r\n <label className=\"text-red text-sm pr-1\">*</label>\r\n <label>Denotes required field</label>\r\n </div>\r\n </div>\r\n <div className=\"flex flex-col lg:block\">\r\n <label>Customer name</label>\r\n <span className=\"border border-gray-300 p-1 rounded-full lg:border-0 lg:rounded-none lg:absolute lg:left-80\">{user?.name}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:block\">\r\n <label>Account no.</label>\r\n <span className=\"border border-gray-300 p-1 rounded-full lg:border-0 lg:rounded-none lg:absolute lg:left-80\">{user?.customerNumber}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:block\">\r\n <label>Contact </label>\r\n <span className=\"border border-gray-300 p-1 rounded-full lg:border-0 lg:rounded-none lg:absolute lg:left-80\">{user?.contact}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:block\">\r\n <label>Currency code </label>\r\n <span className=\"border border-gray-300 p-1 rounded-full lg:border-0 lg:rounded-none lg:absolute lg:left-80\">{user?.currencyCode}</span>\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default CustomerDetails;\r\n","import rootApiSlice from '../../../app/api/slice';\r\n\r\nexport type AddBasketHeaderRequest = {\r\n externalDocNo: string;\r\n deliveryCode: string;\r\n name: string;\r\n address: string;\r\n address2?: string;\r\n city: string;\r\n postCode: string;\r\n country?: string;\r\n county?: string;\r\n phoneNo?: string;\r\n};\r\n\r\nexport type PaymentRequest = {\r\n amount: number;\r\n account_code: string;\r\n currency: string;\r\n reference?: string;\r\n description?: string;\r\n second_reference?: string;\r\n billing_address?: PaymentAddress;\r\n shipping_address?: PaymentAddress;\r\n meta?: any;\r\n};\r\n\r\nexport type PaymentAddress = {\r\n first_name: string;\r\n last_name?: string;\r\n line_1: string;\r\n line_2?: string;\r\n city: string;\r\n post_code: string;\r\n country?: string;\r\n county?: string;\r\n phone?: string;\r\n};\r\n\r\nexport type PaymentResponse = {\r\n payment_Checkout_Url: string;\r\n};\r\n\r\nexport type Country = {\r\n code: string;\r\n name: string;\r\n};\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n addBasketHeader: builder.mutation<void, AddBasketHeaderRequest>({\r\n query: (req) => ({\r\n url: '/basket/header',\r\n method: 'POST',\r\n body: { ...req }\r\n })\r\n }),\r\n postPaymentRequest: builder.mutation<PaymentResponse, PaymentRequest>({\r\n query: (req) => ({\r\n url: '/payment/request',\r\n method: 'POST',\r\n body: { ...req }\r\n })\r\n }),\r\n postInvoicePaymentRequest: builder.mutation<PaymentResponse, PaymentRequest>({\r\n query: (req) => ({\r\n url: '/payment/request/invoice',\r\n method: 'POST',\r\n body: { ...req }\r\n })\r\n }),\r\n getCountries: builder.query<Country[], void>({\r\n query: () => ({\r\n url: '/countries',\r\n method: 'GET'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const {\r\n useAddBasketHeaderMutation,\r\n usePostPaymentRequestMutation,\r\n usePostInvoicePaymentRequestMutation,\r\n useGetCountriesQuery\r\n} = apiSlice;\r\n","import { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { useState } from 'react';\r\nimport { ErrorMessage, Field, Form, Formik } from 'formik';\r\nimport * as yup from 'yup';\r\nimport { setDeliveryInformation } from '../slices/slice';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useGetCountriesQuery } from '../slices/apiSlice';\r\n\r\nexport type DeliveryInformation = {\r\n addressReference: string;\r\n purchaseOrder: string;\r\n name: string;\r\n address1: string;\r\n address2: string;\r\n city: string;\r\n county: string;\r\n country: string;\r\n postcode: string;\r\n phoneNumber: string;\r\n};\r\n\r\nconst DeliveryDetails = () => {\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const { data: countries } = useGetCountriesQuery();\r\n const initialValues = useSelector((state: RootState) => state.checkout.deliveryInformation);\r\n const [selectedAddressRef, setSelectedAddressRef] = useState(initialValues.addressReference);\r\n const [newAddressValues, setNewAddressValues] = useState<DeliveryInformation>(\r\n selectedAddressRef === 'New Delivery Address'\r\n ? {\r\n ...initialValues,\r\n country: user?.country ?? '',\r\n addressReference: 'New Delivery Address'\r\n }\r\n : {\r\n ...initialValues,\r\n name: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n county: '',\r\n country: user?.country ?? '',\r\n postcode: '',\r\n phoneNumber: '',\r\n addressReference: 'New Delivery Address'\r\n }\r\n );\r\n\r\n const dispatch = useDispatch();\r\n const navigate = useNavigate();\r\n\r\n const selectedAddress = user?.deliveryAddresses.find(\r\n (address) => address.reference === selectedAddressRef\r\n );\r\n\r\n const handleAddressChange = (event: any) => {\r\n setSelectedAddressRef(event.target.value);\r\n };\r\n\r\n const handleNewAddressChange = (name: string, value: string) => {\r\n if (!selectedAddress) setNewAddressValues({ ...newAddressValues, [name]: value });\r\n };\r\n\r\n const onSubmit = (values: DeliveryInformation) => {\r\n dispatch(\r\n setDeliveryInformation(\r\n selectedAddress\r\n ? {\r\n ...selectedAddress,\r\n purchaseOrder: values.purchaseOrder,\r\n addressReference: selectedAddress.reference\r\n }\r\n : {\r\n ...newAddressValues,\r\n addressReference: 'New Delivery Address',\r\n purchaseOrder: values.purchaseOrder\r\n }\r\n )\r\n );\r\n\r\n navigate('/checkout/review-order');\r\n };\r\n\r\n const PurchaseOrderValidationSchema = yup\r\n .object()\r\n .shape({ purchaseOrder: yup.string().required('Required').max(12, 'Max 12 Characters') });\r\n\r\n const AddressValidationSchema = yup.object().shape({\r\n purchaseOrder: yup.string().required('Required').max(12, 'Max 12 Characters'),\r\n name: yup.string().max(50, 'Max 50 Characters').required('Required'),\r\n address1: yup.string().max(50, 'Max 50 Characters').required('Required'),\r\n address2: yup.string().max(50, 'Max 50 Characters'),\r\n city: yup.string().max(30, 'Max 30 Characters').required('Required'),\r\n county: yup.string().max(30, 'Max 30 Characters').required('Required'),\r\n country: yup.string().notOneOf(['', 'N/A'], 'Required'),\r\n postcode: yup.string().max(20, 'Max 20 Characters').required('Required'),\r\n phoneNumber: yup\r\n .string()\r\n .max(30, 'Max 30 Characters')\r\n .required('Required')\r\n .matches(/^[\\+]?[0-9]+$/gi, 'Must be number')\r\n });\r\n\r\n const isNewAddress = selectedAddressRef === 'New Delivery Address';\r\n\r\n return (\r\n <div>\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={onSubmit}\r\n validationSchema={isNewAddress ? AddressValidationSchema : PurchaseOrderValidationSchema}>\r\n {({ errors, touched, handleChange }) => (\r\n <Form className=\"relative lg:static\">\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n Purchase order <span className=\"text-red\">*</span>\r\n </label>\r\n <div className=\"lg:absolute lg:left-80\">\r\n <Field\r\n className={`pl-2 py-1 text-sm border rounded-3xl w-full sm:w-96 ${\r\n errors?.purchaseOrder ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"purchaseOrder\"\r\n type=\"input\"\r\n onChange={(e: any) => {\r\n handleNewAddressChange('purchaseOrder', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"purchaseOrder\" className=\"text-red text-sm mt-1\" />\r\n <h1 className=\"flex w-full text-2xl text-gray-700 mt-10 border-gray-300 border-b border-t py-4\">\r\n Delivery details\r\n </h1>\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>Delivery address</label>\r\n <Field\r\n className=\"lg:absolute lg:left-80 py-1 bg-white px-2 border border-zinc-300 rounded-3xl w-full sm:w-96\"\r\n as=\"select\"\r\n name=\"addressReference\"\r\n onChange={(e: any) => {\r\n handleAddressChange(e);\r\n }}\r\n value={selectedAddressRef}>\r\n <option>New Delivery Address</option>\r\n {user?.deliveryAddresses.map((address) => (\r\n <option>{address.reference}</option>\r\n ))}\r\n </Field>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n Name <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.name && touched.name ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"name\"\r\n type=\"input\"\r\n placeholder=\"Name\"\r\n value={selectedAddress?.name ?? newAddressValues.name}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('name', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"name\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n Address 1 <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.address1 && touched.address1 ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"address1\"\r\n type=\"input\"\r\n placeholder=\"Address 1\"\r\n value={selectedAddress?.address1 ?? newAddressValues.address1}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('address1', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"address1\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row lg:items-center mt-5\">\r\n <label>Address 2</label>\r\n <label className=\"text-xs text-zinc-400 lg:ml-1 mb-1 lg:mb-0\">(optional)</label>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.address2 && touched.address2 ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"address2\"\r\n type=\"input\"\r\n placeholder=\"Optional\"\r\n value={selectedAddress?.address2 ?? newAddressValues.address2}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('address2', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"address2\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n City <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.city && touched.city ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"city\"\r\n type=\"input\"\r\n placeholder=\"City\"\r\n value={selectedAddress?.city ?? newAddressValues.city}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('city', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"city\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n County <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.county && touched.county ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"county\"\r\n type=\"input\"\r\n placeholder=\"County\"\r\n value={selectedAddress?.county ?? newAddressValues.county}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('county', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"county\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row lg:items-center mt-5\">\r\n <label>\r\n Country <span className=\"text-red\">*</span>\r\n </label>\r\n <Field\r\n className=\"lg:absolute lg:left-80 py-1 bg-white px-2 border border-zinc-300 rounded-3xl w-full sm:w-96\"\r\n name=\"country\"\r\n as=\"select\"\r\n onChange={(e: any) => {\r\n handleNewAddressChange('country', e.target.value);\r\n handleChange(e);\r\n }}\r\n value={selectedAddress?.country ?? newAddressValues.country}\r\n disabled={!isNewAddress}>\r\n <option value=\"N/A\">Select Country</option>\r\n {countries?.map((country) => (\r\n <option key={country.code} value={country.code}>\r\n {country.name}\r\n </option>\r\n ))}\r\n </Field>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"country\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n Postcode <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.postcode && touched.postcode ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"postcode\"\r\n type=\"input\"\r\n placeholder=\"Postcode\"\r\n value={selectedAddress?.postcode ?? newAddressValues.postcode}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('postcode', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"postcode\" className=\"text-red text-sm mt-1\" />\r\n <div className=\"flex flex-col lg:flex-row mt-5\">\r\n <label>\r\n Phone No. <span className=\"text-red\">*</span>\r\n </label>\r\n <div>\r\n <Field\r\n className={`lg:absolute lg:left-80 border rounded-3xl w-full sm:w-96 px-2 ${\r\n errors?.phoneNumber && touched.phoneNumber ? 'border-red' : 'border-zinc-300'\r\n }`}\r\n name=\"phoneNumber\"\r\n type=\"input\"\r\n placeholder=\"Phone No.\"\r\n value={selectedAddress?.phoneNumber ?? newAddressValues.phoneNumber}\r\n disabled={!isNewAddress}\r\n onChange={(e: any) => {\r\n handleNewAddressChange('phoneNumber', e.target.value);\r\n handleChange(e);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"phoneNumber\" className=\"text-red text-sm mt-1\" />\r\n <button\r\n type=\"submit\"\r\n className=\"text-white absolute mx-auto left-0 right-0 lg:left-auto lg:right-44 -bottom-80 lg:bottom-auto lg:top-96 -mb-9 lg:mb-0 lg:mt-[19rem] w-5/6 sm:w-80 text-center h-10 bg-blue disabled:bg-gray-600\">\r\n Proceed\r\n </button>\r\n </Form>\r\n )}\r\n </Formik>\r\n </div>\r\n );\r\n};\r\nexport default DeliveryDetails;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nconst CheckoutProgressBar = () => {\r\n const isProforma = useSelector((state: RootState) => state.auth.user?.isProforma);\r\n const activePage = useSelector((state: RootState) => state.checkout.activePages);\r\n\r\n return(\r\n <div>\r\n <div className=\"w-full flex bg-blue-light\">\r\n <div className=\"relative w-full after:absolute after:inset-x-28 after:top-1/2 after:block after:h-0.5 after:-translate-y-1/2 after:rounded-lg after:bg-transparent sm:after:bg-sky-700\">\r\n <ol className=\"relative z-20 flex justify-around w-full gap-5 sm:gap-10 lg:gap-20 text-sm font-light text-sky-700\">\r\n <li className=\"flex flex-col lg:flex-row items-center gap-2 bg-blue-light p-2\">\r\n {activePage === \"Delivery Information\" ? (\r\n <span className=\"flex items-center justify-center h-6 w-6 lg:h-8 lg:w-8 text-xs lg:text-[14px]/8 rounded-full bg-blue text-center ft-bold text-white\">\r\n 1\r\n </span>\r\n ) : (\r\n <span className=\"flex items-center justify-center h-6 w-6 lg:h-8 lg:w-8 text-xs lg:text-[14px]/8 rounded-full border border-blue text-center text-[14px]/8\">\r\n 1\r\n </span>\r\n )}\r\n <span className=\"text-blue text-center lg:text-left\"> Delivery Information </span>\r\n </li>\r\n\r\n <li className=\"flex flex-col lg:flex-row items-center gap-2 bg-blue-light p-2\">\r\n {activePage === \"Review Order\" ? (\r\n <span className=\"flex items-center justify-center h-6 w-6 lg:h-8 lg:w-8 text-xs lg:text-[14px]/8 rounded-full bg-blue text-center ft-bold text-white\">\r\n 2\r\n </span>\r\n ) : (\r\n <span className=\"flex items-center justify-center h-6 w-6 lg:h-8 lg:w-8 text-xs lg:text-[14px]/8 rounded-full border border-blue text-center\">\r\n 2\r\n </span>\r\n )}\r\n <span className=\"text-blue text-center lg:text-left\"> Review Order </span>\r\n </li>\r\n {isProforma ? (\r\n <li className=\"flex flex-col lg:flex-row items-center gap-2 bg-blue-light p-2\">\r\n <span className=\"flex items-center justify-center h-6 w-6 lg:h-8 lg:w-8 text-xs lg:text-[14px]/8 rounded-full border border-blue text-center\">\r\n 3\r\n </span>\r\n <span className=\"text-blue text-center lg:text-left\"> Payment </span>\r\n </li>\r\n ) : null}\r\n </ol>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\nexport default CheckoutProgressBar;\r\n","import CustomerDetails from \"../components/CustomerDetails\";\r\nimport DeliveryDetails from \"../components/DeliveryDetails\";\r\nimport OrderSummary from \"../components/OrderSummary\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {useEffect} from \"react\";\r\nimport {setCheckoutActivePage} from \"../slices/slice\"\r\nimport CheckoutProgressBar from \"../components/CheckoutProgressBar\";\r\nimport {setActivePage} from \"../../layout/slice\";\r\n\r\nconst DeliveryInformationPage = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(setActivePage('Delivery Information'));\r\n dispatch(setCheckoutActivePage('Delivery Information'));\r\n }, []);\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-48 lg:h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} Create orders</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">Checkout - <br/> Delivery Information</h1>\r\n </div>\r\n </div>\r\n <CheckoutProgressBar />\r\n <div className=\"flex flex-col lg:flex-row\">\r\n <div className=\"w-full lg:border-r border-zinc-300 mt-10 lg:pr-32\">\r\n <CustomerDetails />\r\n <DeliveryDetails />\r\n </div>\r\n <OrderSummary />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default DeliveryInformationPage;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgInvoice(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 24,\n viewBox: \"0 0 23 24\",\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: \"M0.427734 24V0L2.16571 1.31667L4.00902 0L5.85233 1.31667L7.69567 0L9.53898 1.31667L11.3823 0L13.2256 1.31667L15.0689 0L16.9123 1.31667L18.7556 0L20.5989 1.31667L22.3369 0V24L20.5989 22.6833L18.7556 24L16.9123 22.6833L15.0689 24L13.2256 22.6833L11.3823 24L9.53898 22.6845L7.69567 24L5.85233 22.6845L4.00902 24L2.16571 22.6845L0.427734 24ZM3.80099 17.0612H19.0215V16.0079H3.80099V17.0612ZM3.80099 12.5267H19.0215V11.4733H3.80099V12.5267ZM3.80099 7.95787H19.0215V6.90456H3.80099V7.95787ZM1.48105 21.9381H21.2835V2.06189H1.48105V21.9381Z\",\n fill: \"#3C68B1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInvoice);\nexport default __webpack_public_path__ + \"static/media/Invoice.090191225257659ecfe0c424dc2e356d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgSideChevron(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 20,\n viewBox: \"0 0 31 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: \"M17.3992 10L12.1992 4.80001L12.9992 4L18.9992 10L12.9992 16L12.1992 15.2L17.3992 10Z\",\n fill: \"#373F41\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSideChevron);\nexport default __webpack_public_path__ + \"static/media/side-chevron.e05c3e69c1128902a912640a5c66f857.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgCheckboxUncheckedSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Interface / Checkbox_Unchecked\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M4 7.2002V16.8002C4 17.9203 4 18.4801 4.21799 18.9079C4.40973 19.2842 4.71547 19.5905 5.0918 19.7822C5.5192 20 6.07899 20 7.19691 20H16.8031C17.921 20 18.48 20 18.9074 19.7822C19.2837 19.5905 19.5905 19.2842 19.7822 18.9079C20 18.4805 20 17.9215 20 16.8036V7.19691C20 6.07899 20 5.5192 19.7822 5.0918C19.5905 4.71547 19.2837 4.40973 18.9074 4.21799C18.4796 4 17.9203 4 16.8002 4H7.2002C6.08009 4 5.51962 4 5.0918 4.21799C4.71547 4.40973 4.40973 4.71547 4.21799 5.0918C4 5.51962 4 6.08009 4 7.2002Z\",\n stroke: \"#000000\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckboxUncheckedSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/checkbox-unchecked-svgrepo-com.c1bbed3d8867d677d17f8eaa9c2f7c7b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgCheckboxCheckSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Interface / Checkbox_Check\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M8 12L11 15L16 9M4 16.8002V7.2002C4 6.08009 4 5.51962 4.21799 5.0918C4.40973 4.71547 4.71547 4.40973 5.0918 4.21799C5.51962 4 6.08009 4 7.2002 4H16.8002C17.9203 4 18.4796 4 18.9074 4.21799C19.2837 4.40973 19.5905 4.71547 19.7822 5.0918C20 5.5192 20 6.07899 20 7.19691V16.8036C20 17.9215 20 18.4805 19.7822 18.9079C19.5905 19.2842 19.2837 19.5905 18.9074 19.7822C18.48 20 17.921 20 16.8031 20H7.19691C6.07899 20 5.5192 20 5.0918 19.7822C4.71547 19.5905 4.40973 19.2842 4.21799 18.9079C4 18.4801 4 17.9203 4 16.8002Z\",\n stroke: \"#00CC00\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckboxCheckSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/checkbox-check-svgrepo-com.92518d00020bed53e31abe6d5238708c.svg\";\nexport { ForwardRef as ReactComponent };","import { PayloadAction, createSlice } from '@reduxjs/toolkit';\r\nimport { GetAllInvoicesResponse, InvoiceLine } from './apiSlice';\r\nimport {CopyOrderModalOptions} from \"../components/CopyOrderModal\";\r\nimport {PaidInvoiceModalOptions} from \"../components/PaidInvoiceModal\";\r\n\r\nexport type InvoiceState = {\r\n selectedInvoices: GetAllInvoicesResponse;\r\n viewSelectedInvoices: InvoiceLine | null;\r\n copyOrderModalOptions: CopyOrderModalOptions;\r\n paidInvoiceModalOptions: PaidInvoiceModalOptions;\r\n};\r\n\r\nconst initialState: InvoiceState = {\r\n selectedInvoices: {\r\n invoices: [],\r\n totalRemainingAmount: 0\r\n },\r\n viewSelectedInvoices: null,\r\n copyOrderModalOptions: {\r\n isOpen: false,\r\n },\r\n paidInvoiceModalOptions: {\r\n isOpen: false,\r\n isSuccess: false\r\n }\r\n};\r\n\r\nexport const slice = createSlice({\r\n name: 'account',\r\n initialState,\r\n reducers: {\r\n addSelectedInvoice: (state, action: PayloadAction<InvoiceLine>) => {\r\n const exists = state.selectedInvoices.invoices.find(\r\n (i) => i.documentNumber === action.payload.documentNumber\r\n );\r\n if (!exists) {\r\n state.selectedInvoices.invoices.push(action.payload);\r\n state.selectedInvoices.totalRemainingAmount = state.selectedInvoices.invoices.reduce(\r\n (total, invoice) => {\r\n return total + invoice.remainingAmount;\r\n },\r\n 0\r\n );\r\n }\r\n },\r\n removeSelectedInvoice: (state, action: PayloadAction<InvoiceLine>) => {\r\n state.selectedInvoices.invoices = state.selectedInvoices.invoices.filter(\r\n (invoice) => invoice.documentNumber !== action.payload?.documentNumber\r\n );\r\n state.selectedInvoices.totalRemainingAmount = state.selectedInvoices.invoices.reduce(\r\n (total, invoice) => {\r\n return total + invoice.remainingAmount;\r\n },\r\n 0\r\n );\r\n },\r\n viewSelectedInvoice: (state, action: PayloadAction<InvoiceLine | null>) => {\r\n state.viewSelectedInvoices = action.payload;\r\n },\r\n openCopyOrderModal: (state, action: PayloadAction<CopyOrderModalOptions>) => {\r\n state.copyOrderModalOptions.isOpen = true;\r\n },\r\n closeCopyOrderModal: (state, action: PayloadAction<void>) => {\r\n state.copyOrderModalOptions.isOpen = false;\r\n },\r\n openPaidInvoiceModal: (state, action: PayloadAction<PaidInvoiceModalOptions>) => {\r\n state.paidInvoiceModalOptions.isOpen = true;\r\n state.paidInvoiceModalOptions.isSuccess = action.payload.isSuccess;\r\n },\r\n closePaidInvoiceModal: (state, action: PayloadAction<void>) => {\r\n state.paidInvoiceModalOptions.isOpen = false;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n addSelectedInvoice,\r\n removeSelectedInvoice,\r\n viewSelectedInvoice,\r\n openCopyOrderModal,\r\n closeCopyOrderModal,\r\n openPaidInvoiceModal,\r\n closePaidInvoiceModal\r\n} = slice.actions;\r\n\r\nexport default slice.reducer;\r\n","import { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport viewIcon from '../../../assets/Invoice.svg';\r\nimport viewIconMobile from '../../../assets/side-chevron.svg';\r\nimport checkbox_unchecked from '../../../assets/checkbox-unchecked-svgrepo-com.svg';\r\nimport checkbox_checked from '../../../assets/checkbox-check-svgrepo-com.svg';\r\nimport { InvoiceLine } from '../slices/apiSlice';\r\nimport { toast } from 'react-toastify';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { addSelectedInvoice, removeSelectedInvoice, viewSelectedInvoice } from '../slices/slice';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport type Props = {\r\n data: InvoiceLine;\r\n};\r\n\r\nconst InvoiceTableRow = (props: Props) => {\r\n const { data } = props;\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const { invoices: selectedInvoices } = useSelector(\r\n (state: RootState) => state.account.selectedInvoices\r\n );\r\n\r\n const isSelectedInvoice =\r\n selectedInvoices.find((i) => i.documentNumber === data.documentNumber) !== undefined;\r\n\r\n const handleClickPay = async () => {\r\n try {\r\n dispatch(addSelectedInvoice(data));\r\n } catch (e) {\r\n toast.error('Unable to select invoice');\r\n }\r\n };\r\n\r\n const handleClickRemove = async () => {\r\n try {\r\n dispatch(removeSelectedInvoice(data));\r\n } catch (e) {\r\n toast.error('Unable to select invoice');\r\n }\r\n };\r\n\r\n const handleToggleSelected = async () => {\r\n if (isSelectedInvoice) handleClickRemove();\r\n else handleClickPay();\r\n };\r\n\r\n const handleClickView = async () => {\r\n try {\r\n dispatch(viewSelectedInvoice(data));\r\n } catch (e) {\r\n toast.error('Unable to select invoice');\r\n }\r\n };\r\n\r\n return (\r\n <tr className={`h-14 text-sm border-b ${isSelectedInvoice ? 'bg-blue-light' : ''}`}>\r\n <td className=\"\">\r\n <div>\r\n <img\r\n className=\"h-10 hover:cursor-pointer -ml-1 lg:ml-0\"\r\n src={isSelectedInvoice ? checkbox_checked : checkbox_unchecked}\r\n alt=\"\"\r\n onClick={handleToggleSelected}\r\n />\r\n </div>\r\n {/* <button\r\n className=\"border px-4 py-2 bg-blue-900 text-white hover:cursor-pointer disabled:bg-gray-600\"\r\n type=\"button\"\r\n onClick={handleToggleSelected}>\r\n Pay\r\n </button> */}\r\n </td>\r\n\r\n <td className=\"lg:hidden\">\r\n <div className=\"flex flex-col py-2\">\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-blue font-semibold\">{data.documentType} {data.documentNumber}</span>\r\n <span className=\"text-blue\">{data.reference}</span>\r\n </div>\r\n <div className=\"grid grid-cols-3 text-xs text-grey-submenu py-2\">\r\n <div className=\"flex flex-col text-left\">\r\n <span className=\"pb-1\">Remaining price</span>\r\n <span>\r\n {currencySymbol}\r\n {data.remainingAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex flex-col border-r border-l border-gray-300 text-left pl-3\">\r\n <span className=\"pb-1\">Original amount</span>\r\n <span>\r\n {currencySymbol}\r\n {data.originalAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex flex-col text-left pl-3\">\r\n <span className=\"pb-1\">Due:</span>\r\n <span>{data.dueDate}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n\r\n <td className=\"hidden lg:table-cell\">{data.postingDate}</td>\r\n <td className=\"hidden lg:table-cell\">{data.documentType}</td>\r\n <td className=\"hidden lg:table-cell\">{data.documentNumber}</td>\r\n {/* <td>{data.description}</td> */}\r\n <td className=\"hidden lg:table-cell\">{data.reference}</td>\r\n <td className=\"hidden lg:table-cell\">{data.dueDate}</td>\r\n <td className=\"\">\r\n <Link to=\"/view-transaction\" onClick={handleClickView}>\r\n <img className=\"hidden lg:block h-6 hover:cursor-pointer\" src={viewIcon} alt=\"\" />\r\n <img className=\"lg:hidden h-6 hover:cursor-pointer\" src={viewIconMobile} alt=\"\" />\r\n </Link>\r\n </td>\r\n <td className=\"text-right hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.originalAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n <td className=\"text-right hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.remainingAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n {/* <td>\r\n {isSelected ? (\r\n <img\r\n className=\"h-6 mx-auto hover:cursor-pointer\"\r\n src={removeIcon}\r\n alt=\"\"\r\n onClick={handleClickRemove}\r\n />\r\n ) : (\r\n <button\r\n className=\"border px-4 py-2 bg-blue-900 text-white hover:cursor-pointer disabled:bg-gray-600\"\r\n type=\"button\"\r\n onClick={handleClickPay}\r\n disabled={isSelectedInvoice}>\r\n Pay\r\n </button>\r\n )}\r\n </td> */}\r\n </tr>\r\n\r\n\r\n );\r\n};\r\nexport default InvoiceTableRow;\r\n","import { useSelector } from 'react-redux';\r\nimport { GetAllInvoicesResponse } from '../slices/apiSlice';\r\nimport InvoiceTableRow from './InvoiceTableRow';\r\nimport { RootState } from '../../../app/store';\r\nimport spinner from \"../../../assets/spinner-black.gif\";\r\n\r\nexport type Props = {\r\n data: GetAllInvoicesResponse | undefined;\r\n isLoading?: boolean;\r\n isError?: boolean;\r\n};\r\n\r\nconst InvoiceTable = (props: Props) => {\r\n const { data, isLoading, isError } = props;\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const { selectedInvoices } = useSelector((state: RootState) => state.account);\r\n\r\n const hasInvoices = data?.invoices && !isLoading && !isError;\r\n const hasSelectedInvoices = selectedInvoices && selectedInvoices.invoices.length > 0;\r\n\r\n return (\r\n <>\r\n {data ? (\r\n <div className=\"text-xs mb-4\">\r\n <span className=\"font-bold text-grey-submenu\">{data?.invoices.length}</span> invoices\r\n </div>\r\n ) : null}\r\n <div className=\"flex flex-col\">\r\n <table className=\"table-fixed justify-start items-start border-collapse border-b border-gray-300 decora-datatable\">\r\n <thead>\r\n <tr className=\"bg-navy text-white text-xs h-14 text-left hidden lg:table-row\">\r\n <th className=\"font-semibold\">Select<br/>Invoice</th>\r\n <th className=\"font-semibold\">Posting<br/>Date</th>\r\n <th className=\"font-semibold\">Document<br/>Type</th>\r\n <th className=\"font-semibold\">Document<br/>No.</th>\r\n <th className=\"font-semibold\">Customer<br/>Order Ref.</th>\r\n <th className=\"font-semibold\">Due<br/>Date</th>\r\n <th className=\"font-semibold\">View</th>\r\n <th className=\"text-right font-semibold\">Original<br/>Amount</th>\r\n <th className=\"text-right font-semibold\">Remaining<br/>Amount</th>\r\n </tr>\r\n </thead>\r\n <tbody className=\"text-grey-submenu\">\r\n {isLoading && (\r\n <tr>\r\n <td colSpan={9}>\r\n <div className=\"flex py-8 justify-center\">Loading invoices <img className=\"ml-4 h-8\" src={spinner} alt=\"\"/></div>\r\n </td>\r\n </tr>\r\n )}\r\n {isError && (\r\n <tr>\r\n <td>Unable to retrieve invoices</td>\r\n </tr>\r\n )}\r\n {hasInvoices &&\r\n data?.invoices.map((invoice) => (\r\n <InvoiceTableRow key={invoice.documentNumber} data={invoice} />\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n <div className=\"py-4 font-semibold text-right border-b border-gray-300 bg-grey-light text-sm pr-3\">\r\n {currencySymbol}\r\n {data?.totalRemainingAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </div>\r\n <div\r\n className={`py-4 font-semibold text-right border-b border-gray-300 bg-grey-light text-sm pr-3 ${\r\n hasSelectedInvoices ? 'text-blue' : 'text-red'\r\n }`}>\r\n <span className=\"mr-6\">\r\n {hasSelectedInvoices ? selectedInvoices.invoices.length : 'No'} invoice\r\n {selectedInvoices.invoices.length > 1 && 's'} selected\r\n </span>\r\n <span>\r\n {currencySymbol}\r\n {selectedInvoices.totalRemainingAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default InvoiceTable;\r\n","import Modal from \"../../layout/components/Modal\";\r\nimport tickIcon from \"../../../assets/tick-circle-svgrepo-com.svg\"\r\nimport {closePaidInvoiceModal} from \"../slices/slice\";\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nexport type PaidInvoiceModalOptions = {\r\n isOpen: boolean;\r\n isSuccess: boolean;\r\n}\r\n\r\nconst PaidInvoiceModal = () => {\r\n const {isOpen, isSuccess } = useSelector(\r\n (state: RootState) => state.account.paidInvoiceModalOptions\r\n );\r\n const dispatch = useDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closePaidInvoiceModal());\r\n }\r\n\r\n return(\r\n <Modal\r\n titleIcon={isSuccess ? tickIcon : ''}\r\n title={isSuccess ? \"Thank You!\" : \"There was an issue...\"}\r\n isOpen={isOpen}\r\n hasCloseButton\r\n onClose={onClose} >\r\n <>\r\n {isSuccess ? (\r\n <h1>Your invoice has been paid.</h1>\r\n ) : (\r\n <h1 className=\"text-red\">Unable to process this payment. Contact sales@decora.co.uk for further assistance </h1>\r\n )}\r\n </>\r\n </Modal>\r\n );\r\n}\r\nexport default PaidInvoiceModal;\r\n","import { ErrorMessage, Field, Form, Formik } from 'formik';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport * as yup from 'yup';\r\nimport { RootState } from '../../../app/store';\r\nimport PaidInvoiceModal from './PaidInvoiceModal';\r\nimport { openPaidInvoiceModal } from '../slices/slice';\r\nimport { toast } from 'react-toastify';\r\nimport { usePostInvoicePaymentRequestMutation } from '../../checkout/slices/apiSlice';\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport { useEffect } from 'react';\r\n\r\ntype PayInvoicesForm = {\r\n method: string;\r\n reference: string;\r\n notes: string;\r\n};\r\n\r\ntype PaymentRequestDocument = {\r\n documentNo: string;\r\n remainingAmount: string;\r\n paymentMethod: string;\r\n};\r\n\r\nconst initialValues: PayInvoicesForm = { method: 'PAY ONLINE', reference: '', notes: '' };\r\n\r\nconst validationSchema = yup.object({\r\n method: yup.string().required('Required').oneOf(['PAY ONLINE']),\r\n reference: yup.string().required('Required').max(12, 'Max 12 Characters'),\r\n notes: yup.string()\r\n});\r\n\r\nconst PayInvoicesTile = () => {\r\n const dispatch = useDispatch();\r\n\r\n const [urlQueryParams, setUrlQueryParams] = useSearchParams();\r\n useEffect(() => {\r\n if (urlQueryParams.get('confirminvoice') === 'success') {\r\n dispatch(openPaidInvoiceModal({ isOpen: true, isSuccess: true }));\r\n } else if (urlQueryParams.get('confirminvoice') === 'failure') {\r\n dispatch(openPaidInvoiceModal({ isOpen: true, isSuccess: false }));\r\n }\r\n urlQueryParams.delete('confirminvoice');\r\n setUrlQueryParams(urlQueryParams);\r\n }, []);\r\n\r\n const [submitPaymentRequest] = usePostInvoicePaymentRequestMutation();\r\n\r\n const { user } = useSelector((state: RootState) => state.auth);\r\n const { selectedInvoices } = useSelector((state: RootState) => state.account);\r\n const hasSelectedInvoices = selectedInvoices && selectedInvoices.invoices.length > 0;\r\n\r\n const selectedDocuments = selectedInvoices.invoices.map((x) => `#${x.documentNumber}`).join(', ');\r\n\r\n const onRedirectToPayment = async (values: PayInvoicesForm) => {\r\n try {\r\n if (selectedInvoices.totalRemainingAmount && user!.currencyCode) {\r\n const documentString: PaymentRequestDocument[] = selectedInvoices.invoices.map((x) => {\r\n return {\r\n documentNo: x.documentNumber,\r\n remainingAmount: x.remainingAmount.toString(),\r\n paymentMethod: 'PAY ONLINE'\r\n };\r\n });\r\n\r\n const response = await submitPaymentRequest({\r\n amount: selectedInvoices.totalRemainingAmount,\r\n account_code: user!.customerNumber,\r\n currency: user!.currencyCode,\r\n description: values.notes,\r\n reference: values.reference,\r\n // second_reference: JSON.stringify(documentString),\r\n billing_address: {\r\n first_name: user!.name,\r\n last_name: user!.contact,\r\n line_1: user!.address1,\r\n city: user!.city,\r\n post_code: user!.postcode,\r\n country: user!.country,\r\n county: user!.county,\r\n phone: user!.phoneNumber\r\n },\r\n meta: documentString\r\n }).unwrap();\r\n\r\n window.location.href = response.payment_Checkout_Url;\r\n }\r\n } catch (e) {\r\n toast.error('Cannot pay invoices');\r\n }\r\n };\r\n\r\n const handleClickPayInvoices = async (values: PayInvoicesForm) => {\r\n await onRedirectToPayment(values);\r\n };\r\n\r\n return (\r\n <div className=\"lg:border lg:bg-blue-light p-4 w-full lg:w-6/12 2xl:w-4/12\">\r\n <div\r\n className={`columns-1 py-2 font-normal text-xl border-b border-gray-300 ${\r\n !hasSelectedInvoices && 'text-red'\r\n }`}>\r\n <h2 className=\"font-semibold text-black text-base lg:hidden mb-4\">Invoices</h2>\r\n <div className=\"flex justify-between mb-2 lg:mb-8 text-sm lg:text-xl\">\r\n {hasSelectedInvoices ? (\r\n <div>\r\n <div>Pay selected invoice{selectedInvoices.invoices.length > 1 && 's'}</div>\r\n <div className={`max-w-xs break-words text-xs`}>({selectedDocuments})</div>\r\n </div>\r\n ) : (\r\n <span>\r\n {hasSelectedInvoices ? selectedInvoices.invoices.length : 'No'} invoices\r\n {selectedInvoices.invoices.length > 1 && 's'} selected\r\n </span>\r\n )}\r\n <div>\r\n {user!.currencySymbol}\r\n {selectedInvoices.totalRemainingAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={handleClickPayInvoices}\r\n validationSchema={validationSchema}>\r\n {({ errors }) => (\r\n <Form className=\"whitespace-nowrap\">\r\n <div className=\"my-6 flex flex-col lg:flex-row\">\r\n <label className=\"font-semibold text-sm w-1/3 mb-2 lg:mb-0\">Payment Method</label>\r\n <Field\r\n as=\"select\"\r\n className={`w-full lg:w-2/3 lg:ml-4 px-2 py-1 border bg-white rounded-full text-sm ${\r\n errors.method ? 'border-red' : ''\r\n }`}\r\n name=\"method\">\r\n <option>Please select</option>\r\n <option>PAY ONLINE</option>\r\n </Field>\r\n </div>\r\n <div className=\"mt-6 mb-0 flex flex-col lg:flex-row\">\r\n <label className=\"font-semibold text-sm w-1/3 mb-2 lg:mb-0\">\r\n Payment Reference<span className=\"text-red pl-1\">*</span>\r\n </label>\r\n <Field\r\n as=\"input\"\r\n type=\"text\"\r\n className={`w-full lg:w-2/3 lg:ml-4 px-2 py-1 text-sm border rounded-full ${\r\n errors.reference ? 'border-red' : ''\r\n }`}\r\n name=\"reference\"\r\n />\r\n </div>\r\n <ErrorMessage component=\"div\" name=\"reference\" className=\"text-red text-sm\" />\r\n <div className=\"my-6 flex flex-col lg:flex-row\">\r\n <label className=\"font-semibold text-sm w-1/3 mb-2 lg:mb-0\">Notes</label>\r\n <Field\r\n as=\"textarea\"\r\n className={`w-full lg:w-2/3 lg:ml-4 p-2 text-sm border ${\r\n errors.notes ? 'border-red' : ''\r\n }`}\r\n name=\"notes\"\r\n />\r\n </div>\r\n <div className=\"mb-4 mt-10 flex justify-center lg:justify-start\">\r\n <button\r\n className=\"hover:cursor-pointer p-2 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-5 w-full lg:w-auto\"\r\n type=\"submit\">\r\n Pay Invoices\r\n </button>\r\n </div>\r\n </Form>\r\n )}\r\n </Formik>\r\n <PaidInvoiceModal />\r\n </div>\r\n );\r\n};\r\n\r\nexport default PayInvoicesTile;\r\n","import rootApiSlice from '../../../app/api/slice';\r\nimport { User } from '../../auth/slices/slice';\r\n\r\nexport type GetAllInvoicesResponse = {\r\n invoices: InvoiceLine[];\r\n totalRemainingAmount: number;\r\n};\r\n\r\nexport type InvoiceLine = {\r\n postingDate: string;\r\n documentType: string;\r\n documentNumber: string;\r\n orderNumber: string;\r\n description: string;\r\n reference: string;\r\n originalAmount: number;\r\n remainingAmount: number;\r\n dueDate: string;\r\n totalInvoiceAmount: number;\r\n invoiceDetails: [\r\n {\r\n type: string;\r\n itemNo: string;\r\n description: string;\r\n quantity: string;\r\n unit: string;\r\n lineDiscount: string;\r\n unitPrice: string;\r\n total: string;\r\n }\r\n ];\r\n};\r\n\r\nexport type GetInvoiceStatementRequest = User & InvoiceLine;\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getInvoices: builder.query<GetAllInvoicesResponse, void>({\r\n query: () => ({\r\n url: '/account/invoices',\r\n method: 'GET'\r\n })\r\n }),\r\n getInvoiceStatement: builder.mutation<any, string>({\r\n query: (documentNumber) => ({\r\n url: `/account/invoice/${encodeURIComponent(documentNumber)}`,\r\n method: 'GET',\r\n responseHandler: async (response) => {\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', `Sales Invoice-${documentNumber}.pdf`);\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Clean up the URL and link\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(link);\r\n }\r\n },\r\n cache: 'no-cache'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const { useGetInvoicesQuery, useGetInvoiceStatementMutation } = apiSlice;\r\n","import { useEffect } from 'react';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport InvoiceTable from '../components/InvoiceTable';\r\nimport PayInvoicesTile from '../components/PayInvoicesTile';\r\nimport { useGetInvoicesQuery } from '../slices/apiSlice';\r\n\r\nconst MyAccountPage = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(setActivePage('My Account'));\r\n }, []);\r\n\r\n const { data, isLoading, isError } = useGetInvoicesQuery();\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} My Account</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">My Account</h1>\r\n </div>\r\n </div>\r\n <div className=\"mt-6 border-b\">\r\n <InvoiceTable data={data} isLoading={isLoading} isError={isError} />\r\n </div>\r\n <div className=\"mt-10\">\r\n <PayInvoicesTile />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default MyAccountPage;\r\n","import rootApiSlice from '../../../app/api/slice';\r\nimport { User } from '../../auth/slices/slice';\r\n\r\nexport type OpenOrder = {\r\n orderNumber: string;\r\n reference: string;\r\n location: string;\r\n despatchDate: string;\r\n orderedDate: string;\r\n consignmentNumber: string;\r\n amount: number;\r\n vatAmount: number;\r\n invoiceTotal: number;\r\n isTrackingAvailable: boolean;\r\n status: string;\r\n totalOrderAmount: number;\r\n openOrderLine: [\r\n {\r\n type: string;\r\n itemNo: string;\r\n description: string;\r\n quantity: string;\r\n quantityShipped: string;\r\n location: string;\r\n unit: string;\r\n lineDiscount: string;\r\n unitPrice: string;\r\n total: string;\r\n }\r\n ];\r\n};\r\n\r\nexport type OrderTrackingInformation = {\r\n documentNumber: string;\r\n trackingId: string[];\r\n};\r\n\r\nexport type GetOrderStatementRequest = User & OpenOrder;\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getOpenOrders: builder.query<OpenOrder[], void>({\r\n query: () => ({\r\n url: '/order',\r\n method: 'GET'\r\n }),\r\n transformResponse: (response: OpenOrder[]) => {\r\n const sortedOrders = response\r\n .sort((a, b) => {\r\n return b.orderNumber.localeCompare(a.orderNumber);\r\n })\r\n .sort((a, b) => {\r\n const datePartsA = a.orderedDate.split('/').map(Number);\r\n const datePartsB = b.orderedDate.split('/').map(Number);\r\n const dateA = new Date(datePartsA[2] + 2000, datePartsA[1] - 1, datePartsA[0]);\r\n const dateB = new Date(datePartsB[2] + 2000, datePartsB[1] - 1, datePartsB[0]);\r\n\r\n return dateB.getTime() - dateA.getTime();\r\n });\r\n\r\n return sortedOrders;\r\n },\r\n providesTags: ['OpenOrders']\r\n }),\r\n getOrderTrackingInformation: builder.query<OrderTrackingInformation, string>({\r\n query: (orderNumber) => ({\r\n url: `/order/${orderNumber}/track`,\r\n method: 'GET'\r\n })\r\n }),\r\n copyOrder: builder.mutation<void, string | undefined>({\r\n query: (orderNumber) => ({\r\n url: `/order/${orderNumber}/copy`,\r\n method: 'POST'\r\n }),\r\n invalidatesTags: ['Basket']\r\n }),\r\n cancelOrder: builder.mutation<void, string | undefined>({\r\n query: (orderNumber) => ({\r\n url: `/order/${orderNumber}/cancel`,\r\n method: 'POST'\r\n }),\r\n invalidatesTags: ['OpenOrders']\r\n }),\r\n getOrderStatement: builder.mutation<string, GetOrderStatementRequest>({\r\n query: (req) => ({\r\n url: '/order/statement-template',\r\n method: 'POST',\r\n body: req,\r\n responseHandler: async (response) => {\r\n const blob = await response.blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', 'Statement.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Clean up the URL and link\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(link);\r\n },\r\n cache: 'no-cache'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const {\r\n useGetOpenOrdersQuery,\r\n useLazyGetOrderTrackingInformationQuery,\r\n useCopyOrderMutation,\r\n useCancelOrderMutation,\r\n useGetOrderStatementMutation\r\n} = apiSlice;\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { OpenOrder } from './apiSlice';\r\nimport { CopyOrderEnquiryModalOptions } from '../components/CopyOrderEquiryModal';\r\nimport { CancelOrderEnquiryModalOptions } from '../components/CancelOrderModal';\r\nimport { CopyOrderModalOptions } from '../../account/components/CopyOrderModal';\r\nimport { PaginationOptions } from '../../ordering/components/PaginationControls';\r\nimport _ from 'lodash';\r\nimport { OrderTrackingModalOptions } from '../components/OrderTackingModal';\r\nimport moment from 'moment';\r\n\r\nexport type SortingOptions = {\r\n field: 'orderedDate' | 'despatchDate';\r\n direction: 'asc' | 'desc';\r\n};\r\n\r\nexport type OrderState = {\r\n orders: {\r\n data: OpenOrder[];\r\n filteredData: OpenOrder[];\r\n filterValue?: string;\r\n filterTotal: number;\r\n };\r\n pagination: PaginationOptions;\r\n sorting: SortingOptions;\r\n viewSelectedOrder: OpenOrder | null;\r\n copyOrderEnquiryModalOptions: CopyOrderEnquiryModalOptions;\r\n cancelOrderEnquiryModalOptions: CancelOrderEnquiryModalOptions;\r\n orderTrackingModalOptions: OrderTrackingModalOptions;\r\n};\r\n\r\nconst initialState: OrderState = {\r\n orders: {\r\n data: [],\r\n filteredData: [],\r\n filterTotal: 0\r\n },\r\n pagination: {\r\n itemsPerPage: 20,\r\n pageCount: 1,\r\n currentPage: 1\r\n },\r\n sorting: {\r\n field: 'orderedDate',\r\n direction: 'desc'\r\n },\r\n viewSelectedOrder: null,\r\n copyOrderEnquiryModalOptions: {\r\n isOpen: false\r\n },\r\n cancelOrderEnquiryModalOptions: {\r\n isOpen: false\r\n },\r\n orderTrackingModalOptions: {\r\n isOpen: false,\r\n trackingIds: []\r\n }\r\n};\r\n\r\nconst filterOpenOrders = (orders: OpenOrder[], filter: string) => {\r\n const f = filter.toLocaleLowerCase();\r\n return orders.filter(\r\n (o) =>\r\n o.orderNumber.toLocaleLowerCase().includes(f) || o.reference.toLocaleLowerCase().includes(f)\r\n );\r\n};\r\n\r\nconst sortOpenOrders = (orders: OpenOrder[], sorting: SortingOptions) => {\r\n if (orders.length === 0) return orders;\r\n\r\n return orders.sort((a, b) => {\r\n if (sorting.field === 'orderedDate')\r\n return sortDates(a.orderedDate, b.orderedDate, sorting.direction);\r\n\r\n if (sorting.field === 'despatchDate')\r\n return sortDates(a.despatchDate, b.despatchDate, sorting.direction);\r\n\r\n return 0;\r\n });\r\n};\r\n\r\nconst sortDates = (a: string, b: string, dir: 'asc' | 'desc'): number => {\r\n const aParsed = moment(a, 'DD/MM/YY').unix();\r\n const bParsed = moment(b, 'DD/MM/YY').unix();\r\n return dir === 'asc' ? aParsed - bParsed : bParsed - aParsed;\r\n};\r\n\r\nexport const slice = createSlice({\r\n name: 'open-orders',\r\n initialState,\r\n reducers: {\r\n setOpenOrders: (state, action: PayloadAction<OpenOrder[] | undefined>) => {\r\n state.pagination = { ...initialState.pagination };\r\n state.orders.data = action.payload ?? [];\r\n const { data, filterValue } = state.orders;\r\n const filtered = filterValue ? filterOpenOrders(data, filterValue) : data;\r\n\r\n if (filtered.length > 0) {\r\n const { sorting } = state;\r\n const sorted = sortOpenOrders([...filtered], sorting);\r\n state.orders.filterTotal = sorted.length;\r\n state.orders.filteredData = _.take(sorted, state.pagination.itemsPerPage);\r\n state.pagination.pageCount = Math.ceil(sorted.length / state.pagination.itemsPerPage);\r\n } else {\r\n state.orders.filteredData = [];\r\n }\r\n },\r\n setFilteredOpenOrders: (state, action: PayloadAction<string | undefined>) => {\r\n state.pagination = { ...initialState.pagination };\r\n state.orders.filterValue = action.payload;\r\n const { data, filterValue } = state.orders;\r\n const filtered = filterValue ? filterOpenOrders(data, filterValue) : data;\r\n state.orders.filterTotal = filtered.length;\r\n if (filtered.length > 0) {\r\n const { sorting } = state;\r\n const sorted = sortOpenOrders([...filtered], sorting);\r\n state.orders.filterTotal = sorted.length;\r\n state.orders.filteredData = _.take(sorted, state.pagination.itemsPerPage);\r\n state.pagination.pageCount = Math.ceil(sorted.length / state.pagination.itemsPerPage);\r\n } else {\r\n state.orders.filteredData = [];\r\n }\r\n },\r\n setPagination: (state, action: PayloadAction<PaginationOptions>) => {\r\n state.pagination = action.payload;\r\n const { data, filterValue } = state.orders;\r\n const filtered = filterValue ? filterOpenOrders(data, filterValue) : data;\r\n const { sorting } = state;\r\n const sorted = sortOpenOrders([...filtered], sorting);\r\n state.orders.filterTotal = sorted.length;\r\n state.orders.filteredData = _.take(\r\n _.drop(sorted, state.pagination.itemsPerPage * (state.pagination.currentPage - 1)),\r\n state.pagination.itemsPerPage\r\n );\r\n },\r\n setSorting: (state, action: PayloadAction<SortingOptions>) => {\r\n state.sorting = action.payload;\r\n const { data, filterValue } = state.orders;\r\n const filtered = filterValue ? filterOpenOrders(data, filterValue) : data;\r\n const { sorting } = state;\r\n const sorted = sortOpenOrders([...filtered], sorting);\r\n state.orders.filterTotal = sorted.length;\r\n state.orders.filteredData = _.take(\r\n _.drop(sorted, state.pagination.itemsPerPage * (state.pagination.currentPage - 1)),\r\n state.pagination.itemsPerPage\r\n );\r\n },\r\n viewSelectedOrder: (state, action: PayloadAction<OpenOrder | null>) => {\r\n state.viewSelectedOrder = action.payload;\r\n },\r\n openCopyOrderModal: (state, action: PayloadAction<CopyOrderModalOptions>) => {\r\n state.copyOrderEnquiryModalOptions.isOpen = true;\r\n },\r\n closeCopyOrderModal: (state) => {\r\n state.copyOrderEnquiryModalOptions.isOpen = false;\r\n },\r\n openCancelOrderModal: (state, action: PayloadAction<CopyOrderModalOptions>) => {\r\n state.cancelOrderEnquiryModalOptions.isOpen = true;\r\n },\r\n closeCancelOrderModal: (state) => {\r\n state.cancelOrderEnquiryModalOptions.isOpen = false;\r\n },\r\n openOrderTrackingModal: (state, action: PayloadAction<OrderTrackingModalOptions>) => {\r\n state.orderTrackingModalOptions.isOpen = true;\r\n state.orderTrackingModalOptions.trackingIds = action.payload.trackingIds;\r\n },\r\n closeOrderTrackingModal: (state, action: PayloadAction<void>) => {\r\n state.orderTrackingModalOptions.isOpen = false;\r\n state.orderTrackingModalOptions.trackingIds = [];\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setOpenOrders,\r\n setFilteredOpenOrders,\r\n setPagination,\r\n setSorting,\r\n viewSelectedOrder,\r\n openCancelOrderModal,\r\n openCopyOrderModal,\r\n closeCopyOrderModal,\r\n closeCancelOrderModal,\r\n closeOrderTrackingModal,\r\n openOrderTrackingModal\r\n} = slice.actions;\r\n\r\nexport default slice.reducer;\r\n","import { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport viewIcon from '../../../assets/Invoice.svg';\r\nimport viewIconMobile from '../../../assets/side-chevron.svg';\r\nimport { OpenOrder, useLazyGetOrderTrackingInformationQuery } from '../slices/apiSlice';\r\nimport { toast } from 'react-toastify';\r\nimport { Link } from 'react-router-dom';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { openOrderTrackingModal, viewSelectedOrder } from '../slices/slice';\r\n\r\nexport type Props = {\r\n data: OpenOrder;\r\n};\r\n\r\nconst OpenOrdersTableRow = (props: Props) => {\r\n const { data } = props;\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const [getOrderTrackingInformation, { isLoading }] = useLazyGetOrderTrackingInformationQuery();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const handleClickTrackOrder = async () => {\r\n try {\r\n const trackingInfo = await getOrderTrackingInformation(data.orderNumber).unwrap();\r\n if (trackingInfo?.trackingId) {\r\n dispatch(\r\n openOrderTrackingModal({\r\n isOpen: true,\r\n trackingIds: trackingInfo.trackingId\r\n })\r\n );\r\n } else {\r\n toast.error('Tracking unavailable');\r\n }\r\n } catch (e) {\r\n toast.error('Unable to get tracking information');\r\n }\r\n };\r\n\r\n const handleClickView = async () => {\r\n try {\r\n dispatch(viewSelectedOrder(data));\r\n } catch (e) {\r\n toast.error('Unable to select order');\r\n }\r\n };\r\n\r\n return (\r\n <tr className=\"h-14 text-sm\">\r\n <td className=\"lg:hidden flex flex-col py-2 border-b border-gray-300\">\r\n <div className=\"grid grid-cols-2\">\r\n <div className=\"flex flex-col\">\r\n <span className=\"font-bold\">{data.orderNumber}</span>\r\n <span className=\"text-sm\">{data.reference}</span>\r\n </div>\r\n <div className=\"flex justify-end\">\r\n <span className={`rounded-full px-6 py-1 h-fit bg-orders-${data.status.toLowerCase().replace(' ', '-')}`}>{data.status}</span>\r\n </div>\r\n </div>\r\n <div className=\"flex justify-between pt-5 text-xs\">\r\n <div className=\"text-grey-faded\">\r\n Ordered: {data.orderedDate} | Location: {data.location.slice(0, -1)}\r\n </div>\r\n <Link to=\"/open-order-enquiry\" onClick={handleClickView}>\r\n <img className=\"h-6 hover:cursor-pointer\" src={viewIconMobile} alt=\"\" />\r\n </Link>\r\n </div>\r\n </td>\r\n <td className=\"pl-2 font-bold hidden lg:table-cell\">{data.orderNumber}</td>\r\n <td className=\"hidden lg:table-cell\">{data.reference}</td>\r\n <td className=\"hidden lg:table-cell\">{data.location.slice(0, -1)}</td>\r\n <td className=\"hidden lg:table-cell\">{data.despatchDate}</td>\r\n <td className=\"hidden lg:table-cell\">{data.orderedDate}</td>\r\n <td className=\"hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.invoiceTotal.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n {data.isTrackingAvailable ? (\r\n <button\r\n className=\"p-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit\"\r\n type=\"button\"\r\n onClick={handleClickTrackOrder}\r\n disabled={isLoading}>\r\n {!isLoading ? 'Track Order' : 'Loading...'}\r\n </button>\r\n ) : null}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n <Link to=\"/open-order-enquiry\" onClick={handleClickView}>\r\n <img className=\"h-6 mx-auto hover:cursor-pointer pr-4\" src={viewIcon} alt=\"\" />\r\n </Link>\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n <div className=\"flex justify-center\">\r\n <span className={`rounded-full px-6 py-1 bg-orders-${data.status.toLowerCase().replace(' ', '-')}`}>{data.status}</span>\r\n </div>\r\n </td>\r\n </tr>\r\n );\r\n};\r\nexport default OpenOrdersTableRow;\r\n","import Modal from '../../layout/components/Modal';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { closeOrderTrackingModal } from '../slices/slice';\r\n\r\nexport type OrderTrackingModalOptions = {\r\n isOpen: boolean;\r\n trackingIds: string[];\r\n};\r\n\r\nconst OrderTrackingModal = () => {\r\n const { isOpen, trackingIds } = useSelector(\r\n (state: RootState) => state.openOrder.orderTrackingModalOptions\r\n );\r\n const dispatch = useDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeOrderTrackingModal());\r\n };\r\n\r\n const handleTrack = (trackingId: any) => {\r\n const newTab = window.open(`https://www.smartfreight.com/tracking/${trackingId}`, '_blank');\r\n if (newTab) newTab.focus();\r\n };\r\n\r\n return (\r\n <Modal title=\"Track your order\" isOpen={isOpen} hasCloseButton onClose={onClose}>\r\n <>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th className=\"p-2 font-normal\">Tracking Numbers</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {trackingIds.map((trackingId, key) => (\r\n <tr key={`tracking ${key}`} className=\"border-t border-gray-300\">\r\n <td>\r\n <button\r\n onClick={() => {\r\n handleTrack(trackingId);\r\n }}\r\n className=\"p-2 text-blue-700\">\r\n {trackingId}\r\n </button>\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </>\r\n </Modal>\r\n );\r\n};\r\nexport default OrderTrackingModal;\r\n","var _g, _g2, _g3;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgSortArrows(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#ffffff\",\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 562.392 562.391\",\n xmlSpace: \"preserve\",\n stroke: \"#ffffff\",\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\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.89,262.141h314.604c19.027,0,17.467-31.347,15.496-47.039c-0.605-4.841-3.636-11.971-6.438-15.967L303.965,16.533 c-12.577-22.044-32.968-22.044-45.551,0L114.845,199.111c-2.803,3.996-5.832,11.126-6.438,15.967 C106.43,230.776,104.863,262.141,123.89,262.141z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.845,363.274l143.569,182.584c12.577,22.044,32.968,22.044,45.551,0l143.587-182.609 c2.804-3.996,5.826-11.119,6.438-15.967c1.971-15.691,3.531-47.038-15.496-47.038H123.89c-19.027,0-17.46,31.365-15.483,47.062 C109.019,352.147,112.042,359.277,114.845,363.274z\"\n }))))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSortArrows);\nexport default __webpack_public_path__ + \"static/media/sort-arrows.dd1020c37816aeafb8d13a367ff68239.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgSortUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#ffffff\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"-96 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n stroke: \"#ffffff\",\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\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSortUp);\nexport default __webpack_public_path__ + \"static/media/sort-up.a605edb8bde6150b6cd02c29b16087ab.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgSortDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#ffffff\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"-96 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n stroke: \"#ffffff\",\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\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSortDown);\nexport default __webpack_public_path__ + \"static/media/sort-down.6121013b98de7a203bfbb3a47028505d.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect } from 'react';\r\nimport { useGetOpenOrdersQuery } from '../slices/apiSlice';\r\nimport OpenOrdersTableRow from './OpenOrdersTableRow';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setOpenOrders, setSorting } from '../slices/slice';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport OrderTrackingModal from './OrderTackingModal';\r\nimport sortIcon from '../../../assets/sort-arrows.svg';\r\nimport sortUp from '../../../assets/sort-up.svg';\r\nimport sortDown from '../../../assets/sort-down.svg';\r\nimport spinner from \"../../../assets/spinner-black.gif\";\r\n\r\nconst OpenOrdersTable = () => {\r\n const dispatch = useAppDispatch();\r\n const { data, isLoading, isError } = useGetOpenOrdersQuery();\r\n\r\n useEffect(() => {\r\n dispatch(setOpenOrders(data));\r\n }, [data]);\r\n\r\n const { sorting } = useSelector((state: RootState) => state.openOrder);\r\n const { filteredData: orders } = useSelector((state: RootState) => state.openOrder.orders);\r\n\r\n const showOrders = orders && !isLoading && !isError;\r\n\r\n // const [isSorted, setIsSorted] = useState(false);\r\n // const [sortingField, setSortingField] = useState<keyof OpenOrder | null>(null);\r\n // const [sortDirection, setSortDirection] = useState('');\r\n // const [sortedData, setSortedData] = useState<OpenOrder[] | undefined>(openOrders);\r\n\r\n const handleSort = (field: 'orderedDate' | 'despatchDate') => {\r\n if (field === sorting.field)\r\n dispatch(setSorting({ ...sorting, direction: sorting.direction === 'asc' ? 'desc' : 'asc' }));\r\n else dispatch(setSorting({ ...sorting, field, direction: 'asc' }));\r\n };\r\n\r\n return (\r\n <div className=\"flex flex-col\">\r\n <table className=\"table-fixed justify-start items-start border-collapse border-b border-gray-300 decora-datatable\">\r\n <thead>\r\n <tr className=\"bg-navy text-white text-xs h-14 text-left hidden lg:table-row\">\r\n <th className=\"pl-2\">Decora<br/>Order No.</th>\r\n <th>Customer<br/>Order Ref.</th>\r\n <th>Location</th>\r\n <th className=\"cursor-pointer\" onClick={() => handleSort('despatchDate')}>\r\n <span className=\"flex\">\r\n Despatch<br/>Date{' '}\r\n <div className=\"hidden\">\r\n {sorting.field === 'despatchDate' ? (\r\n <>\r\n {sorting.direction === 'asc' ? (\r\n <img className=\"pl-2 h-4\" src={sortUp} alt=\"\" />\r\n ) : (\r\n <img className=\"pl-2 h-4\" src={sortDown} alt=\"\" />\r\n )}\r\n </>\r\n ) : (\r\n <img className=\"pl-2 h-4\" src={sortIcon} alt=\"\" />\r\n )}\r\n </div>\r\n </span>\r\n </th>\r\n <th className=\"cursor-pointer\" onClick={() => handleSort('orderedDate')}>\r\n <span className=\"flex\">\r\n Date<br/>Ordered{' '}\r\n <div className=\"hidden\">\r\n {sorting.field === 'orderedDate' ? (\r\n <>\r\n {sorting.direction === 'asc' ? (\r\n <img className=\"pl-2 h-4\" src={sortUp} alt=\"\" />\r\n ) : (\r\n <img className=\"pl-2 h-4\" src={sortDown} alt=\"\" />\r\n )}\r\n </>\r\n ) : (\r\n <img className=\"pl-2 h-4\" src={sortIcon} alt=\"\" />\r\n )}\r\n </div>\r\n </span>\r\n </th>\r\n <th>Invoice<br/>Total</th>\r\n <th>Tracking</th>\r\n <th>View</th>\r\n <th>Order<br/>Status</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {isLoading && (\r\n <tr>\r\n <td colSpan={9}>\r\n <div className=\"flex py-8 justify-center\">Loading open orders <img className=\"ml-4 h-8\" src={spinner} alt=\"\"/></div>\r\n </td>\r\n </tr>\r\n )}\r\n {isError && (\r\n <tr>\r\n <td>Unable to retrieve open orders</td>\r\n </tr>\r\n )}\r\n {showOrders &&\r\n orders.map((order) => <OpenOrdersTableRow key={order.orderNumber} data={order} />)}\r\n </tbody>\r\n </table>\r\n <OrderTrackingModal />\r\n </div>\r\n );\r\n};\r\n\r\nexport default OpenOrdersTable;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgSearchSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M15.7955 15.8111L21 21M18 10.5C18 14.6421 14.6421 18 10.5 18C6.35786 18 3 14.6421 3 10.5C3 6.35786 6.35786 3 10.5 3C14.6421 3 18 6.35786 18 10.5Z\",\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearchSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/search-svgrepo-com.01da7b90b09620b3b6c61977cfa584e0.svg\";\nexport { ForwardRef as ReactComponent };","import { useSelector } from 'react-redux';\r\nimport { setFilteredOpenOrders } from '../slices/slice';\r\nimport { RootState } from '../../../app/store';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport searchIcon from '../../../assets/search-svgrepo-com.svg';\r\n\r\nconst OpenOrdersSearchFilter = () => {\r\n const dispatch = useAppDispatch();\r\n const { filterValue } = useSelector((state: RootState) => state.openOrder.orders);\r\n\r\n return (\r\n <div className=\"mt-6 w-full md:w-1/2 lg:w-1/3\">\r\n <img className=\"h-5 absolute ml-3 mt-3\" src={searchIcon} alt=\"\" />\r\n <input\r\n className=\"border border-gray-400 h-8 rounded-2xl p-5 w-full pl-10\"\r\n type=\"text\"\r\n placeholder=\"Search by Product Name, Code, etc\"\r\n value={filterValue}\r\n onChange={(e) => dispatch(setFilteredOpenOrders(e.target.value))}\r\n />\r\n </div>\r\n );\r\n};\r\nexport default OpenOrdersSearchFilter;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgTick(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 29,\n height: 20,\n viewBox: \"0 0 29 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: \"M9.41911 20L0 10.5809L1.06246 9.55513L9.41911 17.9117L27.2941 0L28.3566 1.06251L9.41911 20Z\",\n fill: \"#469F44\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTick);\nexport default __webpack_public_path__ + \"static/media/tick.463fd586c265192c3a2407ec8d91a924.svg\";\nexport { ForwardRef as ReactComponent };","import Modal from '../../layout/components/Modal';\r\nimport tickIcon from '../../../assets/tick.svg';\r\nimport spinner from '../../../assets/spinner-black.gif';\r\nimport { RootState } from '../../../app/store';\r\nimport { useSelector } from 'react-redux';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { closeConfirmOrderModal } from '../slices/slice';\r\nimport { useGetOrderConfirmationQuery } from \"../../basket/slices/apiSlice\";\r\n\r\nexport type ConfirmOrderModalOptions = {\r\n isOpen: boolean;\r\n};\r\n\r\nconst ConfirmOrderModal = () => {\r\n const { isOpen } = useSelector((state: RootState) => state.checkout.confirmOrderModalOptions);\r\n const dispatch = useAppDispatch();\r\n const {isLoading, isError, isSuccess} = useGetOrderConfirmationQuery();\r\n\r\n const onClose = () => {\r\n dispatch(closeConfirmOrderModal());\r\n };\r\n\r\n return (\r\n <Modal\r\n titleIcon={isSuccess ? tickIcon : \"\"}\r\n title={!isError || isLoading ? \"Thank You!\" : \"There was an issue...\"}\r\n isOpen={isOpen}\r\n hasCloseButton={!isLoading}\r\n onClose={onClose}\r\n >\r\n {isLoading ? (\r\n <div className=\"flex\">\r\n <h1>We are processing your order</h1>\r\n <img className=\"px-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n ) : (\r\n <div>\r\n {!isError ? (\r\n <div className=\"py-4 text-lg font-normal text-grey-submenu\">\r\n <h1>Your order has been placed.</h1>\r\n <h1>Check open orders for updates</h1>\r\n </div>\r\n ) : (\r\n <div className=\"text-red\">\r\n <h1>Unable to process this order. Contact sales@decora.co.uk for further assistance</h1>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </Modal>\r\n );\r\n};\r\nexport default ConfirmOrderModal;\r\n","import { useEffect } from 'react';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport OpenOrdersTable from '../components/OpenOrdersTable';\r\nimport OpenOrdersSearchFilter from '../components/OpenOrdersSearchFilter';\r\nimport ConfirmOrderModal from '../../checkout/components/ConfirmOrderModal';\r\nimport PaginationControls from '../../ordering/components/PaginationControls';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { setPagination } from '../slices/slice';\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport { openConfirmOrderModal } from '../../checkout/slices/slice';\r\n\r\nconst OpenOrdersPage = () => {\r\n const dispatch = useAppDispatch();\r\n const [urlQueryParams, setUrlQueryParams] = useSearchParams();\r\n useEffect(() => {\r\n dispatch(setActivePage('Open Orders'));\r\n\r\n if (urlQueryParams.get('confirmorder') === 'success') {\r\n dispatch(openConfirmOrderModal({ isOpen: true }));\r\n urlQueryParams.delete('confirmorder');\r\n setUrlQueryParams(urlQueryParams);\r\n }\r\n }, []);\r\n\r\n const { pagination, orders } = useSelector((state: RootState) => state.openOrder);\r\n\r\n const paginationLowerIndex = pagination.itemsPerPage * (pagination.currentPage - 1) + 1;\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} Open Orders</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">Open Orders</h1>\r\n </div>\r\n </div>\r\n <OpenOrdersSearchFilter />\r\n <div className=\"my-6 text-grey-submenu\">\r\n <p className=\"mb-4 text-xs hidden lg:block\">\r\n {orders.filteredData.length > 0\r\n ? (\r\n <span>\r\n Displaying <span className=\"font-bold\">{paginationLowerIndex}</span> -\r\n <span className=\"font-bold\">{paginationLowerIndex + orders.filteredData.length - 1}</span> of\r\n <span className=\"font-bold\"> {orders.filterTotal}</span> results\r\n </span>\r\n )\r\n : 'Enter product details above'\r\n }\r\n </p>\r\n <OpenOrdersTable />\r\n </div>\r\n <PaginationControls options={pagination} setPagination={setPagination} />\r\n </div>\r\n <ConfirmOrderModal />\r\n </div>\r\n );\r\n};\r\n\r\nexport default OpenOrdersPage;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nconst AccountDetailsTable = () => {\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n\r\n return (\r\n <div className=\"mt-10 pl-5 lg:pl-10 grid gap-4\">\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4\">Company Name: </label>\r\n <span className=\"\">{user?.name}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Account No: </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.customerNumber}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Address 1: </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.address1}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">City: </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.city}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">County: </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.county}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Postcode: </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.postcode}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Email </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.email}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Phone No. </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.phoneNumber}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4 pt-4 lg:pt-8\">Fax No. </label>\r\n <span className=\"pt-4 lg:pt-8\">{user?.faxNumber}</span>\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default AccountDetailsTable;\r\n","var _g, _g2, _g3;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgDownloadSvgrepoWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n stroke: \"#ffffff\",\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\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 9.00195C19.175 9.01406 20.3529 9.11051 21.1213 9.8789C22 10.7576 22 12.1718 22 15.0002V16.0002C22 18.8286 22 20.2429 21.1213 21.1215C20.2426 22.0002 18.8284 22.0002 16 22.0002H8C5.17157 22.0002 3.75736 22.0002 2.87868 21.1215C2 20.2429 2 18.8286 2 16.0002L2 15.0002C2 12.1718 2 10.7576 2.87868 9.87889C3.64706 9.11051 4.82497 9.01406 7 9.00195\",\n stroke: \"#ffffff\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2L12 15M12 15L9 11.5M12 15L15 11.5\",\n stroke: \"#ffffff\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownloadSvgrepoWhite);\nexport default __webpack_public_path__ + \"static/media/download-svgrepo-white.1aefa9b3b3f6d3fce82943893865bf62.svg\";\nexport { ForwardRef as ReactComponent };","import rootApiSlice from '../../../app/api/slice';\r\n\r\nexport const apiSlice = rootApiSlice.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getStatement: builder.query<any, string>({\r\n query: (statement) => ({\r\n url: `/account/statement/${encodeURIComponent(statement)}`,\r\n method: 'GET',\r\n responseHandler: async (response) => {\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', `${statement}.pdf`);\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Clean up the URL and link\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(link);\r\n }\r\n },\r\n cache: 'no-cache'\r\n })\r\n })\r\n })\r\n});\r\n\r\nexport const { useLazyGetStatementQuery } = apiSlice;\r\n","import downloadImg from '../../../assets/download-svgrepo-white.svg';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { toast } from 'react-toastify';\r\nimport { useLazyGetStatementQuery } from '../slices/apiSlice';\r\nimport spinner from '../../../assets/spinner-white.gif';\r\nimport { useState } from 'react';\r\n\r\nconst BalanceDetailsTable = () => {\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const [trigger, { isLoading }] = useLazyGetStatementQuery();\r\n const [selectedStatement, setSelectedStatement] = useState('');\r\n\r\n const handleDownload = async () => {\r\n try {\r\n if (selectedStatement) {\r\n var response = await trigger(selectedStatement);\r\n if (response.status === 'rejected') toast.error('Unable to download statement');\r\n }\r\n } catch (e) {\r\n toast.error('Unable to download statement');\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"mt-10 pl-5 lg:lg:pl-10 grid gap-4\">\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold lg:w-1/4\">Country: </label>\r\n <span className=\"lg:pl-10\">{user?.country}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold pt-8 lg:w-1/4\">Currency Code: </label>\r\n <span className=\"lg:pl-10 pt-8\">{user?.currencyCode}</span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold pt-8 lg:w-1/4\">On Stop: </label>\r\n {user?.onStop === 'False' ? (\r\n <span className=\"lg:pl-10 pt-8\">No</span>\r\n ) : user?.onStop === 'True' ? (\r\n <span className=\"lg:pl-10 pt-8\">Yes</span>\r\n ) : (\r\n ''\r\n )}\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold pt-8 lg:w-1/4\">Credit Limit: </label>\r\n <span className=\"lg:pl-10 pt-8\">\r\n {user?.currencySymbol}\r\n {user?.creditLimit?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row w-full\">\r\n <label className=\"font-semibold pt-8 lg:w-1/4\">Balance: </label>\r\n <span className=\"lg:pl-10 pt-8\">\r\n {user?.currencySymbol}\r\n {user?.balance?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n {/* <div className=\"flex w-full lg:justify-center pt-14 pb-10\">\r\n <button\r\n className=\"p-2 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6\"\r\n disabled={isLoading}>\r\n <div className=\"flex items-center\">Request change of details</div>\r\n </button>\r\n </div> */}\r\n <div className=\"flex flex-col lg:flex-row w-full pt-8\">\r\n <label className=\"font-semibold lg:w-1/4\">Select Statement:</label>\r\n <select\r\n className=\"lg:ml-10 bg-white border border-grey rounded-full px-5 py-1 w-1/2 lg:w-1/3\"\r\n onChange={(e) => {\r\n setSelectedStatement(e.target.value);\r\n }}\r\n disabled={isLoading}>\r\n <option value=\"\">Select Statement...</option>\r\n {user?.statements?.map((s) => (\r\n <option value={s.filename}>{s.name}</option>\r\n ))}\r\n </select>\r\n </div>\r\n <div className=\"flex w-full lg:justify-center pt-14 pb-10\">\r\n <button\r\n className=\"p-2 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6\"\r\n onClick={handleDownload}\r\n disabled={isLoading && !selectedStatement}>\r\n {!isLoading ? (\r\n <div className=\"flex items-center\">\r\n Download Statement\r\n <img className=\"ml-3 h-6\" src={downloadImg} alt=\"\" />\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center\">\r\n Downloading...\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default BalanceDetailsTable;\r\n","import { useAppDispatch } from '../../../app/hooks';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport AccountDetailsTable from '../components/AccountDetailsTable';\r\nimport BalanceDetailsTable from '../components/BalanceDetailsTable';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst MyDetailsPage = () => {\r\n const dispatch = useAppDispatch();\r\n dispatch(setActivePage('My Details'));\r\n\r\n return (\r\n <div className=\"pt-6\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 px-5 md:px-0\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} My Details</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">My Details</h1>\r\n </div>\r\n </div>\r\n <div className=\"flex flex-col lg:flex-row lg:mt-10 gap-16 lg:gap-28\">\r\n <div className=\"bg-grey-light text-grey-submenu lg:w-screen h-full\">\r\n <h1 className=\"mt-10 text-xl font-semibold pl-5 lg:pl-10\">Account Details</h1>\r\n <AccountDetailsTable />\r\n {/* <div className=\"pt-12 pb-10 w-full flex lg:justify-center pl-5 lg:pl-0\">\r\n <Link\r\n className=\"p-2 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6\"\r\n title={'Change Password'}\r\n to=\"/change-password\"\r\n >\r\n Change Password\r\n </Link>\r\n </div> */}\r\n </div>\r\n <div className=\"bg-blue-light text-grey-submenu lg:w-screen\">\r\n <h1 className=\"mt-10 text-xl font-semibold pl-5 lg:pl-10\">Balance Details</h1>\r\n <BalanceDetailsTable />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default MyDetailsPage;\r\n","import { useChangePasswordMutation } from \"../slices/apiSlice\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { toast } from 'react-toastify';\r\nimport { Formik, Form, Field } from 'formik';\r\nimport * as yup from 'yup';\r\n\r\nexport type ChangePasswordCredentials = {\r\n oldPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nconst ChangePassword = () => {\r\n const [changePassword, { isLoading }] = useChangePasswordMutation();\r\n const navigate = useNavigate();\r\n\r\n const initialValues: ChangePasswordCredentials = {oldPassword: '', newPassword: '', confirmPassword: ''}\r\n\r\n const handleChangePassword = async (values: ChangePasswordCredentials) => {\r\n try {\r\n await changePassword(values).unwrap();\r\n toast.success('Password changed');\r\n navigate('/details')\r\n }\r\n catch (error) {\r\n toast.error('Failed to change password');\r\n }\r\n };\r\n\r\n const ChangePasswordValidationSchema = yup.object({\r\n oldPassword: yup.string().required(),\r\n newPassword: yup.string().required(),\r\n confirmPassword: yup.string().oneOf([yup.ref('newPassword'), ''], 'Passwords must match')\r\n });\r\n\r\n return (\r\n <div className=\"bg-grey-light w-full lg:w-1/2 h-fit mt-10 p-10\">\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={handleChangePassword}\r\n validationSchema={ChangePasswordValidationSchema}>\r\n {({errors, touched}) => (\r\n <Form className=\"w-auto\">\r\n <div className=\"w-full flex justify-end mt-3 text-sm text-grey-su\">\r\n <label><span className=\"text-red\">*</span> Denotes required field</label>\r\n </div>\r\n <div className=\"w-full flex flex-col lg:flex-row whitespace-nowrap\">\r\n <label className=\"mt-10 w-1/4 font-semibold\">Old Password<span className=\"text-red pl-2\">*</span></label>\r\n <Field\r\n className={`border rounded-2xl px-1 py-0.5 w-3/4 mt-2 lg:mt-10 pl-2 ${\r\n errors.oldPassword ? 'border-red' : ''\r\n }`}\r\n type=\"password\"\r\n name=\"oldPassword\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n <div className=\"w-full flex flex-col lg:flex-row whitespace-nowrap\">\r\n <label className=\"mt-10 w-1/4 font-semibold\">New Password<span className=\"text-red ml-2\">*</span></label>\r\n <Field\r\n className={`border rounded-2xl px-1 py-0.5 w-3/4 mt-2 lg:mt-10 pl-2 ${\r\n errors.newPassword ? 'border-red' : ''\r\n }`}\r\n type=\"password\"\r\n name=\"newPassword\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n <div className=\"w-full flex flex-col lg:flex-row whitespace-nowrap\">\r\n <label className=\"mt-10 w-1/4 font-semibold\">Confirm Password<span className=\"text-red ml-2\">*</span></label>\r\n <Field\r\n className={`border rounded-2xl px-1 py-0.5 w-3/4 mt-2 lg:mt-10 pl-2 ${\r\n errors.confirmPassword ? 'border-red' : ''\r\n }`}\r\n name=\"confirmPassword\"\r\n type=\"password\"\r\n />\r\n {errors.confirmPassword && touched.confirmPassword && (\r\n <div className=\"text-red ml-5 mt-2\">{errors.confirmPassword}</div>\r\n )}\r\n </div>\r\n <button\r\n className=\"p-2 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6 mt-10\"\r\n type=\"submit\"\r\n disabled={isLoading}>\r\n {isLoading ? 'Saving...' : 'Save New Password'}\r\n </button>\r\n </Form>\r\n )}\r\n </Formik>\r\n </div>\r\n );\r\n}\r\nexport default ChangePassword;\r\n\r\n","import ChangePassword from \"../components/ChangePassword\";\r\n\r\nconst ChangePasswordPage = () => {\r\n\r\n return(\r\n <div className=\"pt-6 text-grey-submenu\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 px-5 lg:px-0\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} My Details {`>`} Change Password</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">Change Password</h1>\r\n </div>\r\n </div>\r\n <ChangePassword />\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default ChangePasswordPage;\r\n","import downloadImg from '../../../assets/download-svgrepo-white.svg';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { toast } from 'react-toastify';\r\nimport { useGetInvoiceStatementMutation } from '../slices/apiSlice';\r\nimport spinner from '../../../assets/spinner-white.gif'\r\n\r\nconst TransactionDetails = () => {\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const viewInvoice = useSelector((state: RootState) => state.account.viewSelectedInvoices);\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const [fetchHtml, {isLoading}] = useGetInvoiceStatementMutation();\r\n\r\n const handleClickDownload = async () => {\r\n try {\r\n if (user && viewInvoice) {\r\n await fetchHtml(viewInvoice.documentNumber);\r\n }\r\n } catch (e) {\r\n toast.error('Unable to download statement');\r\n }\r\n };\r\n\r\n return(\r\n <div className=\"grid gap-8 mt-10 h-fit border-b border-zinc-300 text-grey-submenu\">\r\n <div>\r\n <label className=\"font-bold\">Posting Date:</label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{viewInvoice?.postingDate}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Document Type:</label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{viewInvoice?.documentType}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Document No: </label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{viewInvoice?.documentNumber}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Description </label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{viewInvoice?.description}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Original Amount: </label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{currencySymbol}\r\n {viewInvoice?.originalAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Remaining Amount: </label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{currencySymbol}\r\n {viewInvoice?.remainingAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Due Date: </label>\r\n <span className=\"absolute left-48 sm:left-72 lg:left-80\">{viewInvoice?.dueDate}</span>\r\n </div>\r\n <button\r\n className=\"p-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit mb-10\"\r\n onClick={handleClickDownload}\r\n disabled={isLoading}\r\n >\r\n {!isLoading ? (\r\n <div className=\"flex items-center\">\r\n Order Summary\r\n <img className=\"ml-3 h-6\" src={downloadImg} alt=\"\" />\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center\">\r\n Downloading...\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n );\r\n};\r\nexport default TransactionDetails;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nconst TransactionTable = () => {\r\n const invoiceDetails = useSelector((state: RootState) => state.account.viewSelectedInvoices?.invoiceDetails);\r\n const viewInvoice = useSelector((state: RootState) => state.account.viewSelectedInvoices);\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n return(\r\n <div>\r\n <div className=\"text-xs mt-4\">\r\n <span className=\"font-bold text-grey-submenu\">{invoiceDetails?.length}</span> items\r\n </div>\r\n <div className=\"flex flex-col mt-6\">\r\n <table className=\"table-fixed justify-start items-start border-collapse border-b border-gray-300 decora-datatable-transactions\">\r\n <thead>\r\n <tr className=\"bg-navy text-white text-sm h-14 text-left hidden lg:table-row\">\r\n <th>Type</th>\r\n <th>Item No.</th>\r\n <th>Description</th>\r\n <th>Qty</th>\r\n <th>Unit of Measure</th>\r\n <th>Line Discount</th>\r\n <th>Unit Price</th>\r\n <th>Total</th>\r\n </tr>\r\n </thead>\r\n <tbody className=\"text-grey-submenu\">\r\n {invoiceDetails?.map((item: any, index: any) => (\r\n <tr key={index} className=\"flex w-full lg:table-row\">\r\n <td className=\"lg:hidden w-full\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-blue font-semibold\">{item.description}</span>\r\n <div className=\"flex text-blue font-light\">\r\n <div className=\"flex flex-col pr-6 w-fit\">\r\n <span className=\"text-xs\">Item code</span>\r\n <span className=\"text-xs\">Pack quantity</span>\r\n <span className=\"text-xs\">Unit</span>\r\n </div>\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-xs\">{item.itemNo}</span>\r\n <span className=\"text-xs\">{item.quantity}</span>\r\n <span className=\"text-xs\">{item.unit}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"grid grid-cols-3 text-xs text-grey-submenu font-semibold pt-3 w-fit\">\r\n <div className=\"flex flex-col text-left opacity-70 pr-2\">\r\n <span className=\"pb-1\">Line discount</span>\r\n <span>{currencySymbol}{item.lineDiscount}</span>\r\n </div>\r\n <div className=\"flex flex-col border-r border-l border-gray-300 text-left px-2\">\r\n <span className=\"pb-1\">Unit price</span>\r\n <span>{currencySymbol}{item.unitPrice.toLocaleString()}</span>\r\n </div>\r\n <div className=\"flex flex-col text-left pl-2\">\r\n <span className=\"pb-1\">Total</span>\r\n <span>{currencySymbol}{item.total.toLocaleString()}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td className=\"hidden lg:table-cell pl-3\">{item.type}</td>\r\n <td className=\"hidden lg:table-cell\">{item.itemNo}</td>\r\n <td className=\"hidden lg:table-cell\">{item.description}</td>\r\n <td className=\"hidden lg:table-cell\">{item.quantity}</td>\r\n <td className=\"hidden lg:table-cell\">{item.unit}</td>\r\n <td className=\"hidden lg:table-cell\">{item.lineDiscount}</td>\r\n <td className=\"hidden lg:table-cell\">\r\n {currencySymbol}\r\n {item.unitPrice.toLocaleString()}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">{currencySymbol}\r\n {item.total.toLocaleString()}\r\n </td>\r\n </tr>\r\n ))}\r\n <tr>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"font-bold pl-2 lg:pl-0\">\r\n <span className=\"lg:hidden\">Total:<br/></span>\r\n {currencySymbol}\r\n {viewInvoice?.totalInvoiceAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default TransactionTable;\r\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgShoppingCartBlack(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\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: \"M6.29977 5H21L19 12H7.37671M20 16H8L6 3H3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z\",\n stroke: \"#000000\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgShoppingCartBlack);\nexport default __webpack_public_path__ + \"static/media/shopping-cart-black.163662593865287bf9e29dfd12244d65.svg\";\nexport { ForwardRef as ReactComponent };","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {closeCopyOrderModal} from \"../slices/slice\";\r\nimport Modal from \"../../layout/components/Modal\";\r\nimport cartIcon from \"../../../assets/shopping-cart-black.svg\"\r\nimport {useCopyOrderMutation} from \"../../open-orders/slices/apiSlice\";\r\nimport {toast} from \"react-toastify\";\r\nimport { useNavigate } from 'react-router-dom';\r\nimport spinner from \"../../../assets/spinner-white.gif\";\r\n\r\nexport type CopyOrderModalOptions = {\r\n isOpen: boolean;\r\n};\r\n\r\nconst CopyOrderModal = () => {\r\n const {isOpen } = useSelector(\r\n (state: RootState) => state.account.copyOrderModalOptions\r\n );\r\n\r\n const navigate = useNavigate();\r\n const [copyOrder, { isLoading}] = useCopyOrderMutation();\r\n const viewInvoice = useSelector((state: RootState) => state.account.viewSelectedInvoices)\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeCopyOrderModal());\r\n };\r\n\r\n const handleCopyOrder = async () => {\r\n try{\r\n await copyOrder(viewInvoice?.orderNumber).unwrap();\r\n navigate(\"/basket\")\r\n toast.success(`Order ${viewInvoice?.orderNumber} copied`)\r\n } catch (e) {\r\n toast.error(`Unable to copy order`)\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Copy order\" titleIcon={cartIcon} isOpen={isOpen} onClose={onClose}>\r\n <>\r\n <span className=\"font-bold pt-4\">Do you want to clear your basket and copy this order into a new basket?</span>\r\n <div className=\"flex justify-evenly bg-grey-light mt-4 -mb-10 -mx-4 py-4\">\r\n <button\r\n onClick={onClose}\r\n className=\"flex py-1 bg-grey-light border text-blue border-blue font-light text-sm disabled:bg-gray-600 px-6 w-fit\"\r\n disabled={isLoading}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleCopyOrder}\r\n className=\"flex py-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6 w-fit\"\r\n disabled={isLoading}\r\n >\r\n {!isLoading ? (\r\n 'Confirm'\r\n ) : (\r\n <div className=\"flex\">\r\n Copying\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n </>\r\n </Modal>\r\n );\r\n};\r\nexport default CopyOrderModal;\r\n","import TransactionDetails from \"../components/TransactionDetails\";\r\nimport TransactionTable from \"../components/TransactionTable\";\r\nimport {toast} from \"react-toastify\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {openCopyOrderModal} from \"../slices/slice\";\r\nimport CopyOrderModal from \"../components/CopyOrderModal\";\r\nimport {useEffect} from \"react\";\r\nimport {closeCopyOrderModal} from \"../slices/slice\";\r\n\r\nconst ViewTransactionPage = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(closeCopyOrderModal());\r\n }, []);\r\n\r\n const onClickCopyOrder = async () => {\r\n try {\r\n dispatch(\r\n openCopyOrderModal({\r\n isOpen: true,\r\n })\r\n );\r\n } catch (e) {\r\n toast.error('Unable to copy order');\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} My Account {`>`} View Transaction</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">View Transaction</h1>\r\n </div>\r\n </div>\r\n <TransactionDetails />\r\n </div>\r\n <TransactionTable />\r\n <button\r\n className=\"flex mb-5 mt-10 p-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit mb-10\"\r\n onClick={onClickCopyOrder}\r\n >\r\n Copy Order\r\n </button>\r\n <CopyOrderModal />\r\n </div>\r\n );\r\n}\r\nexport default ViewTransactionPage;\r\n","import downloadImg from '../../../assets/download-svgrepo-white.svg';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport { toast } from 'react-toastify';\r\nimport { GetOrderStatementRequest, useGetOrderStatementMutation } from '../slices/apiSlice';\r\nimport spinner from '../../../assets/spinner-white.gif'\r\n\r\nconst OrderEnquiryDetails = () => {\r\n const viewOrder = useSelector((state: RootState) => state.openOrder.viewSelectedOrder);\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const [fetchHtml, {isLoading}] = useGetOrderStatementMutation();\r\n\r\n const handleClickDownload = async () => {\r\n try {\r\n if (user && viewOrder) {\r\n const req: GetOrderStatementRequest = {\r\n ...viewOrder,\r\n ...user\r\n };\r\n await fetchHtml(req);\r\n }\r\n } catch (e) {\r\n toast.error('Unable to download statement');\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"grid gap-8 mt-5 h-fit border-b border-zinc-300 text-grey-submenu\">\r\n <div>\r\n <label className=\"font-bold\">Order No:</label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{viewOrder?.orderNumber}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Order Date:</label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{viewOrder?.orderedDate}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Dispatch Date: </label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{viewOrder?.despatchDate}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Customer Ref: </label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{viewOrder?.reference}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Amount: </label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{currencySymbol}\r\n {viewOrder?.amount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">VAT: </label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{currencySymbol}\r\n {viewOrder?.vatAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}</span>\r\n </div>\r\n <div>\r\n <label className=\"font-bold\">Invoice Total: </label>\r\n <span className=\"absolute left-44 sm:left-60 lg:left-80\">{currencySymbol}\r\n {viewOrder?.invoiceTotal?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}</span>\r\n </div>\r\n <button\r\n className=\"p-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit mb-10\"\r\n onClick={handleClickDownload}\r\n disabled={isLoading}\r\n >\r\n {!isLoading ? (\r\n <div className=\"flex items-center\">\r\n Order Summary\r\n <img className=\"ml-3 h-6\" src={downloadImg} alt=\"\" />\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center\">\r\n Downloading...\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n );\r\n};\r\nexport default OrderEnquiryDetails;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\n\r\nconst OrderEnquiryTable = () => {\r\n const openOrderDetails = useSelector((state: RootState) => state.openOrder.viewSelectedOrder?.openOrderLine);\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const viewOrder = useSelector((state: RootState) => state.openOrder.viewSelectedOrder);\r\n\r\n return(\r\n <div>\r\n <div className=\"text-xs\">\r\n <span className=\"font-bold text-grey-submenu\">{openOrderDetails?.length}</span> items\r\n </div>\r\n <div className=\"flex flex-col mt-6\">\r\n <table className=\"table-fixed justify-start items-start border-collapse border-b border-gray-300 decora-datatable-transactions text-grey-submenu\">\r\n <thead>\r\n <tr className=\"bg-navy text-white text-sm h-14 text-left hidden lg:table-row\">\r\n <th>Item</th>\r\n <th>No.</th>\r\n <th>Description</th>\r\n <th>Qty</th>\r\n <th>Qty Shipped</th>\r\n <th>Location</th>\r\n <th>Unit</th>\r\n <th>Unit Price</th>\r\n <th>Disc %</th>\r\n <th>Total</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {openOrderDetails?.map((item, index) => (\r\n <tr key={index}>\r\n <td className=\"lg:hidden w-full\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-blue font-semibold\">{item.description}</span>\r\n <div className=\"flex text-blue font-light\">\r\n <div className=\"flex flex-col pr-6 w-fit\">\r\n <span className=\"text-sm\">Item code</span>\r\n <span className=\"text-sm\">Pack quantity</span>\r\n <span className=\"text-sm\">Unit</span>\r\n </div>\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-sm\">{item.itemNo}</span>\r\n <span className=\"text-sm\">{item.quantity}</span>\r\n <span className=\"text-sm\">{item.unit}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"grid grid-cols-3 text-sm text-grey-submenu font-semibold pt-3 w-fit\">\r\n <div className=\"flex flex-col text-left opacity-70 pr-2\">\r\n <span className=\"pb-1\">Line discount</span>\r\n <span>{currencySymbol}{item.lineDiscount}</span>\r\n </div>\r\n <div className=\"flex flex-col border-r border-l border-gray-300 text-left px-2\">\r\n <span className=\"pb-1\">Unit price</span>\r\n <span>{currencySymbol}{item.unitPrice.toLocaleString()}</span>\r\n </div>\r\n <div className=\"flex flex-col text-left pl-2\">\r\n <span className=\"pb-1\">Total</span>\r\n <span>{currencySymbol}{item.total.toLocaleString()}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td className=\"hidden lg:table-cell pl-3\">{item.type}</td>\r\n <td className=\"hidden lg:table-cell\">{item.itemNo}</td>\r\n <td className=\"hidden lg:table-cell\">{item.description}</td>\r\n <td className=\"hidden lg:table-cell\">{item.quantity}</td>\r\n <td className=\"hidden lg:table-cell\">{item.quantityShipped}</td>\r\n <td className=\"hidden lg:table-cell\">{item.location}</td>\r\n <td className=\"hidden lg:table-cell\">{item.unit}</td>\r\n <td className=\"hidden lg:table-cell\">{currencySymbol}\r\n {item.unitPrice.toLocaleString()}</td>\r\n <td className=\"hidden lg:table-cell\">{item.lineDiscount}</td>\r\n <td className=\"hidden lg:table-cell\">{currencySymbol}\r\n {item.total.toLocaleString()}</td>\r\n </tr>\r\n ))}\r\n <tr>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"font-bold text-base pl-2 lg:pl-0\">\r\n <span className=\"lg:hidden\">Total:<br/></span>\r\n {currencySymbol}\r\n {viewOrder?.totalOrderAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default OrderEnquiryTable;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {closeCopyOrderModal} from \"../slices/slice\";\r\nimport Modal from \"../../layout/components/Modal\";\r\nimport cartIcon from \"../../../assets/shopping-cart-black.svg\"\r\nimport {useCopyOrderMutation} from \"../slices/apiSlice\";\r\nimport {useNavigate} from \"react-router-dom\";\r\nimport {toast} from \"react-toastify\";\r\nimport spinner from \"../../../assets/spinner-white.gif\";\r\n\r\nexport type CopyOrderEnquiryModalOptions = {\r\n isOpen: boolean;\r\n};\r\n\r\nconst CopyOrderEnquiryModal = () => {\r\n const {isOpen } = useSelector(\r\n (state: RootState) => state.openOrder.copyOrderEnquiryModalOptions\r\n );\r\n\r\n const navigate = useNavigate();\r\n\r\n const [copyOrderEnquiry, {isLoading}] = useCopyOrderMutation();\r\n const orderToCopy = useSelector((state: RootState) => state.openOrder.viewSelectedOrder)\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const onClose = () => {\r\n dispatch(closeCopyOrderModal());\r\n };\r\n\r\n const handleCopyOrder = async () => {\r\n try {\r\n await copyOrderEnquiry(orderToCopy?.orderNumber).unwrap();\r\n toast.success(`Order is ${orderToCopy?.orderNumber} copied`);\r\n navigate('/basket');\r\n } catch (e) {\r\n toast.error(`Unable to copy order`)\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Copy order\" titleIcon={cartIcon} isOpen={isOpen} onClose={onClose}>\r\n <>\r\n <span className=\"font-semibold pt-4\">Do you want to clear your basket and copy this order into a new basket?</span>\r\n <div className=\"flex justify-evenly bg-grey-light mt-4 -mb-10 -mx-4 py-4\">\r\n <button onClick={onClose} className=\"flex py-1 bg-grey-light border text-blue border-blue font-light text-sm disabled:bg-gray-600 px-6 w-fit\">\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleCopyOrder}\r\n className=\"flex py-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6 w-fit\"\r\n disabled={isLoading}\r\n >\r\n {!isLoading ? (\r\n 'Confirm'\r\n ) : (\r\n <div className=\"flex\">\r\n Copying\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n </>\r\n </Modal>\r\n );\r\n}\r\nexport default CopyOrderEnquiryModal;\r\n","import {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport {useCancelOrderMutation} from \"../slices/apiSlice\";\r\nimport {useAppDispatch} from \"../../../app/hooks\";\r\nimport {closeCancelOrderModal} from \"../slices/slice\";\r\nimport {toast} from \"react-toastify\";\r\nimport Modal from \"../../layout/components/Modal\";\r\nimport cartIcon from \"../../../assets/shopping-cart-black.svg\";\r\nimport {useNavigate} from \"react-router-dom\";\r\nimport spinner from \"../../../assets/spinner-white.gif\";\r\n\r\nexport type CancelOrderEnquiryModalOptions = {\r\n isOpen: boolean;\r\n};\r\n\r\nconst CancelOrderModal = () => {\r\n\r\n const {isOpen} = useSelector(\r\n (state: RootState) => state.openOrder.cancelOrderEnquiryModalOptions\r\n );\r\n\r\n const isProforma = useSelector((state: RootState) => state.auth.user?.isProforma);\r\n\r\n const [cancelOrderEnquiry, {isLoading}] = useCancelOrderMutation();\r\n const orderToCancel = useSelector((state: RootState) => state.openOrder.viewSelectedOrder)\r\n\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n\r\n const onClose = () => {\r\n dispatch(closeCancelOrderModal());\r\n };\r\n\r\n const handleCancelOrder = async () => {\r\n dispatch(closeCancelOrderModal());\r\n try{\r\n if(isProforma || orderToCancel?.status === 'Shipped' || orderToCancel?.status === 'In Progress'){\r\n toast.error(`Unable to cancel this order as it is currently in progress. Contact sales@decora.co.uk for further assistance`)\r\n }\r\n else{\r\n await cancelOrderEnquiry(orderToCancel?.orderNumber).unwrap();\r\n toast.success(`Order is ${orderToCancel?.orderNumber} canceled`)\r\n navigate(\"/open-orders\")\r\n }\r\n } catch (e){\r\n toast.error(`Unable to cancel order`)\r\n }\r\n };\r\n\r\n return(\r\n <Modal title=\"Cancel Order\" titleIcon={cartIcon} isOpen={isOpen} onClose={onClose}>\r\n <>\r\n <span className=\"font-semibold pt-4\">Are you sure you want to cancel this order</span>\r\n <div className=\"flex justify-evenly bg-grey-light mt-4 -mb-10 -mx-4 py-4\">\r\n <button\r\n onClick={onClose}\r\n className=\"flex py-1 bg-grey-light border text-blue border-blue font-light text-sm disabled:bg-gray-600 px-6 w-fit\"\r\n disabled={isLoading}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleCancelOrder}\r\n className=\"flex py-1 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-6 w-fit\"\r\n disabled={isLoading}\r\n >\r\n {!isLoading ? (\r\n 'Confirm'\r\n ) : (\r\n <div className=\"flex\">\r\n Cancelling\r\n <img className=\"ml-3 h-6\" src={spinner} alt=\"\" />\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n </>\r\n </Modal>\r\n );\r\n}\r\nexport default CancelOrderModal;\r\n","import {useAppDispatch} from \"../../../app/hooks\";\r\nimport {useEffect} from \"react\";\r\nimport OrderEnquiryDetails from '../components/OrderEnquiryDetails';\r\nimport OrderEnquiryTable from '../components/OrderEnquiryTable';\r\nimport CopyOrderEnquiryModal from \"../components/CopyOrderEquiryModal\";\r\nimport {closeCancelOrderModal, closeCopyOrderModal, openCancelOrderModal, openCopyOrderModal} from \"../slices/slice\";\r\nimport CancelOrderModal from \"../components/CancelOrderModal\";\r\n\r\nconst OpenOrderEnquiryPage = () => {\r\n const dispatch = useAppDispatch();\r\n useEffect(() => {\r\n dispatch(closeCopyOrderModal());\r\n dispatch(closeCancelOrderModal());\r\n }, []);\r\n\r\n const onClickCopyOrder = async () => {\r\n dispatch(\r\n openCopyOrderModal({\r\n isOpen: true,\r\n })\r\n );\r\n };\r\n\r\n const onClickCancelOrder = async () => {\r\n dispatch(\r\n openCancelOrderModal({\r\n isOpen: true,\r\n })\r\n );\r\n };\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} Open Orders {`>`} Open Order Enquiry </p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">Open Order Enquiry</h1>\r\n </div>\r\n </div>\r\n <div className=\"grid gap-8 mt-5 h-fit\">\r\n <CopyOrderEnquiryModal />\r\n <CancelOrderModal />\r\n <OrderEnquiryDetails />\r\n <OrderEnquiryTable />\r\n <div className=\"flex space-x-4\">\r\n <button\r\n className=\"flex py-1.5 bg-blue font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit\"\r\n onClick={onClickCopyOrder}>\r\n Copy Order\r\n </button>\r\n\r\n <button\r\n className=\"flex py-1.5 bg-red font-light text-sm text-white disabled:bg-gray-600 px-4 w-fit\"\r\n onClick={onClickCancelOrder}>\r\n Cancel Order\r\n </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default OpenOrderEnquiryPage;\r\n","var _g, _g2, _g3;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgUpChevronSvgrepoCom1(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#000000\",\n height: \"800px\",\n width: \"800px\",\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 407.437 407.437\",\n xmlSpace: \"preserve\",\n transform: \"rotate(180)\",\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\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"386.258,91.567 203.718,273.512 21.179,91.567 0,112.815 203.718,315.87 407.437,112.815 \"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUpChevronSvgrepoCom1);\nexport default __webpack_public_path__ + \"static/media/up-chevron-svgrepo-com (1).1b550b88d4fd93ebc2c303fac3cda8ab.svg\";\nexport { ForwardRef as ReactComponent };","var _polygon;\nvar _excluded = [\"title\", \"titleId\"];\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); }\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; }\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; }\nimport * as React from \"react\";\nfunction SvgDownChevronSvgrepoCom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#000000\",\n height: \"800px\",\n width: \"800px\",\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 407.437 407.437\",\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"386.258,91.567 203.718,273.512 21.179,91.567 0,112.815 203.718,315.87 407.437,112.815 \"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownChevronSvgrepoCom);\nexport default __webpack_public_path__ + \"static/media/down-chevron-svgrepo-com.461bba4377fac4452e616038662fd8a2.svg\";\nexport { ForwardRef as ReactComponent };","import {useState} from \"react\";\r\nimport {Link} from \"react-router-dom\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport upIcon from '../../../assets/up-chevron-svgrepo-com (1).svg'\r\nimport downIcon from '../../../assets/down-chevron-svgrepo-com.svg'\r\n\r\n\r\nconst DeliveryInformationCollapsible = () => {\r\n const [isOpen, setIsOpen] = useState(true);\r\n const user = useSelector((state: RootState) => state.auth.user);\r\n const deliveryInfo = useSelector((state: RootState) => state.checkout.deliveryInformation);\r\n\r\n const handleClose = () => {\r\n setIsOpen(false);\r\n }\r\n const handleOpen = () => {\r\n setIsOpen(true)\r\n }\r\n\r\n return(\r\n <div>\r\n <div className=\"flex border-b border-t border-zinc-300 w-auto pt-4 pb-4\">\r\n <h1 className=\"flex w-full text-lg text-gray-700\">Delivery Information</h1>\r\n <Link className=\"mr-10 text-blue-400 underline\" to=\"/checkout/deliveryinformation\">Change</ Link>\r\n {isOpen ? (\r\n <button onClick={handleClose}>\r\n <img className=\"h-5 mr-3\" src={upIcon} alt=\"\"/></button>\r\n ):(\r\n <button onClick={handleOpen}>\r\n <img className=\"h-5 mr-3\" src={downIcon} alt=\"\"/></button>\r\n )}\r\n </div>\r\n {isOpen ? (\r\n <div className=\"text-grey-submenu\">\r\n <div className=\"mt-10\">\r\n <h1 className=\"font-bold pb-3 text-lg\">Customer details</h1>\r\n <h2>{user?.name}</h2>\r\n <h2>{user?.customerNumber}</h2>\r\n <h2>{user?.contact}</h2>\r\n <h2>{user?.phoneNumber}</h2>\r\n <h2>{deliveryInfo?.purchaseOrder}</h2>\r\n </div>\r\n <div className=\"mt-10\">\r\n <h1 className=\"font-bold pb-3 text-lg\">Delivery details</h1>\r\n <h2>{deliveryInfo?.name}</h2>\r\n <h2>{deliveryInfo?.address1}</h2>\r\n <h2>{deliveryInfo?.address2}</h2>\r\n <h2>{deliveryInfo?.city}</h2>\r\n <h2>{deliveryInfo?.county}</h2>\r\n <h2>{deliveryInfo?.country}</h2>\r\n <h2>{deliveryInfo?.contact}</h2>\r\n <h2>{deliveryInfo?.postcode}</h2>\r\n <h2>{deliveryInfo?.phoneNumber}</h2>\r\n </div>\r\n </div>\r\n ): \"\" }\r\n </div>\r\n );\r\n}\r\nexport default DeliveryInformationCollapsible;\r\n","import {BasketLine} from \"../../basket/slices/apiSlice\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport BasketQuantityInputGroup from \"../../basket/components/BasketQuantityInputGroup\";\r\nimport editIcon from \"../../../assets/edit.svg\";\r\nimport binIcon from \"../../../assets/trash.svg\";\r\nimport tickIcon from \"../../../assets/tick-circle.svg\";\r\nimport crossIcon from \"../../../assets/cross-circle.svg\";\r\n\r\nexport type Props = {\r\n data: BasketLine;\r\n isCarriage?: boolean;\r\n};\r\n\r\nconst ReviewTableRow = (props: Props) => {\r\n const { data } = props;\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n\r\n return(\r\n <tr key={data.lineNumber} className=\"h-14 text-sm divide-y\">\r\n <td className=\"lg:hidden py-2\">\r\n <div className=\"flex flex-col text-grey-submenu\">\r\n <div className=\"text-blue flex flex-col mb-4\">\r\n <span className=\"font-semibold text-lg\">{data.description}</span>\r\n <div className=\"flex\">\r\n <div className=\"text-sm flex flex-col w-fit pr-8\">\r\n <span>Item code</span>\r\n <span>Pack quantity</span>\r\n </div>\r\n <div className=\"text-sm flex flex-col\">\r\n <span>{data.itemNumber}</span>\r\n <span>{data.quantity}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"flex justify-between w-fit\">\r\n <div className=\"flex flex-col border-r border-gray-300 text-grey-faded pr-4\">\r\n <span>Quantity</span>\r\n <span>{data.quantity}</span>\r\n </div>\r\n <div className=\"flex flex-col border-r border-gray-300 px-4\">\r\n <span>Discount price</span>\r\n <span className=\"font-semibold\">\r\n {currencySymbol}\r\n {data.discountPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n <div className=\"flex flex-col border-l border-gray-300 pl-4\">\r\n <span>Total price</span>\r\n <span className=\"font-semibold\">\r\n {currencySymbol}\r\n {data.totalLinePrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n\r\n\r\n <td className=\"hidden lg:table-cell pl-3\">{data.itemNumber}</td>\r\n <td className=\"hidden lg:table-cell\">{data.description}</td>\r\n <td className=\"hidden lg:table-cell\">{data.quantity}</td>\r\n <td className=\"hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.discountPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n <td className=\"hidden lg:table-cell\">\r\n {currencySymbol}\r\n {data.totalLinePrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n </tr>\r\n );\r\n}\r\nexport default ReviewTableRow;\r\n","import {useGetBasketQuery} from \"../../basket/slices/apiSlice\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {RootState} from \"../../../app/store\";\r\nimport ReviewTableRow from \"./ReviewTableRow\";\r\n\r\nconst ReviewTable = () => {\r\n const { data: basketData, isLoading, isError } = useGetBasketQuery();\r\n\r\n const currencySymbol = useSelector((state: RootState) => state.auth.user?.currencySymbol);\r\n const showBasketLines = basketData && basketData.basketLines && !isLoading && !isError;\r\n const showCarriageLine = basketData && basketData.carriageLine && !isLoading && !isError;\r\n\r\n return(\r\n <div className=\"flex flex-col mt-10\">\r\n <table className=\"table-auto w-full border-separate border-spacing-y-0 decora-datatable-transactions\">\r\n <thead className=\"text-left bg-navy text-white text-xs tracking-wider\">\r\n <tr className=\"h-14 hidden lg:table-row\">\r\n <th>Item No.</th>\r\n <th>Description</th>\r\n <th>Qty</th>\r\n <th>Disc. Price</th>\r\n <th>Total</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {isLoading ? (\r\n <tr>\r\n <td>Loading basket...</td>\r\n </tr>\r\n ) : null}\r\n {isError ? (\r\n <tr>\r\n <td>Unable to retrieve basket</td>\r\n </tr>\r\n ) : null}\r\n {showBasketLines\r\n ? basketData.basketLines.map((basketRow) => {\r\n return <ReviewTableRow key={basketRow.lineNumber} data={basketRow} />;\r\n })\r\n : null}\r\n {showCarriageLine ? <ReviewTableRow data={basketData.carriageLine} isCarriage /> : null}\r\n {showBasketLines ? (\r\n <tr>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"hidden lg:table-cell\"></td>\r\n <td className=\"font-bold text-lg lg:text-sm px-2\">\r\n <span className=\"font-normal lg:hidden\">Total<br/></span>\r\n {currencySymbol}\r\n {basketData?.totalBasketPrice.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}\r\n </td>\r\n </tr>\r\n ) : null}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\nexport default ReviewTable;\r\n","import {useState} from \"react\";\r\nimport {Link} from \"react-router-dom\";\r\nimport ReviewTable from \"./ReviewTable\";\r\nimport upIcon from '../../../assets/up-chevron-svgrepo-com (1).svg'\r\nimport downIcon from '../../../assets/down-chevron-svgrepo-com.svg'\r\n\r\nconst ReviewOrderCollapsible = () => {\r\n const [isOpen, setIsOpen] = useState(true);\r\n\r\n const handleClose = () => {\r\n setIsOpen(false);\r\n }\r\n const handleOpen = () => {\r\n setIsOpen(true)\r\n }\r\n\r\n return(\r\n <div>\r\n <div className=\"flex border-b border-t border-zinc-300 w-auto pt-4 pb-4 mt-10\">\r\n <h1 className=\"flex w-full text-lg text-gray-700\">Review Order</h1>\r\n <Link className=\"mr-10 text-blue-400 underline\" to=\"/basket\">Change</ Link>\r\n {isOpen ? (\r\n <button onClick={handleClose}>\r\n <img className=\"h-5 mr-3\" src={upIcon} alt=\"\"/></button>\r\n ):(\r\n <button onClick={handleOpen}>\r\n <img className=\"h-5 mr-3\" src={downIcon} alt=\"\"/></button>\r\n )}\r\n </div>\r\n {isOpen ? (\r\n <ReviewTable />\r\n ): \"\"}\r\n </div>\r\n );\r\n}\r\nexport default ReviewOrderCollapsible;\r\n","import {Link} from \"react-router-dom\";\r\nimport downIcon from \"../../../assets/down-chevron-svgrepo-com.svg\";\r\nimport upIcon from \"../../../assets/up-chevron-svgrepo-com (1).svg\";\r\nimport {useState} from \"react\";\r\n\r\nconst TermsAndConditionsCollapsible = () => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleClose = () => {\r\n setIsOpen(false);\r\n }\r\n const handleOpen = () => {\r\n setIsOpen(true)\r\n }\r\n\r\n return (\r\n <div>\r\n <div className=\"flex border-b border-t border-zinc-300 w-auto pt-4 pb-4\">\r\n <h1 className=\"flex w-full text-lg text-gray-700\">Terms and Conditions</h1>\r\n {isOpen ? (\r\n <button onClick={handleClose}>\r\n <img className=\"h-5 mr-3\" src={upIcon} alt=''/></button>\r\n ):(\r\n <button onClick={handleOpen}>\r\n <img className=\"h-5 mr-3\" src={downIcon} alt=''/></button>\r\n )}\r\n </div>\r\n {isOpen ? (\r\n <div className=\"grid gap-5 mt-5 text-grey-submenu\">\r\n <div>\r\n <h1 className=\"text-lg\">Introduction</h1>\r\n <span>1. These terms and conditions will apply when you place your order with us.<br /></span>\r\n <span>2. Before you place your order, we reserve the right to change these terms and conditions at any time.\r\n Any such changes will take effect when posted on this website and it is your responsibility to read these\r\n terms and conditions on each occasion you use this website.<br /></span>\r\n <span>3. Please print these terms and conditions and any email we send you for future reference.<br /></span>\r\n </div>\r\n\r\n <div>\r\n <h1 className=\"text-lg\">Specification of Goods</h1>\r\n <span>1. It is your responsibility to provide us with exact measurements, suitable for your requirements.\r\n We shall not be responsible for any incorrect measurements supplied.<br /></span>\r\n <span>2. Further details and specifications of our products can be found at <br />\r\n <Link className=\"text-blue-600 border-b border-blue-500\" to='https://www.decora.co.uk/'>www.decora.co.uk</Link><br /></span>\r\n <span>3. If an accurate colour matching is required, we recommend that you order a sample from us before\r\n placing your order.<br /></span>\r\n </div>\r\n\r\n <div>\r\n <h1 className=\"text-lg\">Price and Payment</h1>\r\n <span>1. The price you pay is the price displayed on this website at the time we receive your order.\r\n Any price displayed on this website shall be subject to change at any time.<br /></span>\r\n <span>2. All prices shown will either be in Sterling £ or Euro €, as determined by your customer account.\r\n VAT at the current rate will be added and displayed on your order if applicable.<br /></span>\r\n <span>3. Whilst we try to ensure that all prices on this website are accurate, errors may occur. If we\r\n discover an error in the price of goods you have ordered we will inform you as soon as possible and give\r\n you the option of reconfirming your order at the correct price or cancelling it.<br /></span>\r\n <span>4. Title to any goods shall pass to you on delivery of the goods provided that we have processed and\r\n received payment in full for the goods.<br /></span>\r\n </div>\r\n\r\n <div>\r\n <h1 className=\"text-lg\">Delivery</h1>\r\n <span>1. Delivery of goods can only be made to mainland UK, UK Islands, Northern Ireland and Republic of\r\n Ireland as part of our standard delivery service. The carriage charge can vary by area and will have been\r\n confirmed to you when your account with us was created<br /></span>\r\n <span>2. Delivery charges are detailed in this website and when you pay for your order. Delivery charges will\r\n be included on the invoice where applicable for credit account customers.<br /></span>\r\n <span>3. Estimated delivery timescales will be included on your order acknowledgement which will be emailed\r\n shortly after the order has been processed. We make every effort to achieve these delivery targets for every\r\n order.<br /></span>\r\n <span>4. Risk of loss and damage to your order passes to you on the date when the goods are delivered or on\r\n the date of first attempted delivery by us.<br /></span>\r\n </div>\r\n </div>\r\n ) : \"\" }\r\n </div>\r\n );\r\n};\r\nexport default TermsAndConditionsCollapsible;\r\n","import { useAppDispatch } from '../../../app/hooks';\r\nimport { useEffect } from 'react';\r\nimport {\r\n closeCannotPlaceOrderModal,\r\n closeConfirmOrderModal,\r\n openCannotPlaceOrderModal,\r\n setCheckoutActivePage\r\n} from '../slices/slice';\r\nimport OrderSummary from '../components/OrderSummary';\r\nimport DeliveryInformationCollapsible from '../components/DeliveryInformationCollapsible';\r\nimport ReviewOrderCollapsible from '../components/ReviewOrderCollapsible';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../app/store';\r\nimport CheckoutProgressBar from '../components/CheckoutProgressBar';\r\nimport ConfirmOrderModal from '../components/ConfirmOrderModal';\r\nimport { useGetBasketAmountQuery, useSubmitBasketMutation } from '../../basket/slices/apiSlice';\r\nimport { toast } from 'react-toastify';\r\nimport { useAddBasketHeaderMutation, usePostPaymentRequestMutation } from '../slices/apiSlice';\r\nimport { setActivePage } from '../../layout/slice';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport TermsAndConditionsCollapsible from '../components/TermsAndConditionsCollapsible';\r\nimport spinner from '../../../assets/spinner-white.gif';\r\nimport CannotPlaceOrderModal from '../components/CannotPlaceOrderModal';\r\nimport * as yup from 'yup';\r\n\r\nconst ReviewOrderPage = () => {\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n const { user } = useSelector((state: RootState) => state.auth);\r\n const { isProforma, currencyCode } = user!;\r\n const { data: amount } = useGetBasketAmountQuery();\r\n const [addBasketHeaderPost] = useAddBasketHeaderMutation();\r\n const [submitBasket, { isLoading }] = useSubmitBasketMutation();\r\n const [submitPaymentRequest] = usePostPaymentRequestMutation();\r\n const deliveryInfo = useSelector((state: RootState) => state.checkout.deliveryInformation);\r\n\r\n useEffect(() => {\r\n dispatch(setCheckoutActivePage('Review Order'));\r\n dispatch(setActivePage('Review Order'));\r\n dispatch(closeConfirmOrderModal());\r\n dispatch(closeCannotPlaceOrderModal());\r\n }, []);\r\n\r\n const handlePlaceOrder = async () => {\r\n const validationSchema = yup.object().shape({\r\n purchaseOrder: yup.string().required().max(20),\r\n name: yup.string().required(),\r\n address1: yup.string().required()\r\n });\r\n\r\n if (deliveryInfo.purchaseOrder && deliveryInfo.purchaseOrder.length > 20)\r\n toast.error('Purchase order cannot be greater than 20 characters');\r\n\r\n const validationCheck = await validationSchema.isValid({\r\n purchaseOrder: deliveryInfo.purchaseOrder,\r\n name: deliveryInfo.name,\r\n address1: deliveryInfo.address1\r\n });\r\n\r\n if (!validationCheck) toast.error('Cannot submit order. Missing delivery information');\r\n else {\r\n if (isProforma) {\r\n await onRedirectToPayment();\r\n } else await onSubmitOrder();\r\n }\r\n };\r\n\r\n const addBasketHeader = async () => {\r\n const payload = {\r\n externalDocNo: deliveryInfo.purchaseOrder,\r\n deliveryCode: deliveryInfo.addressReference,\r\n name: deliveryInfo.name,\r\n address: deliveryInfo.address1,\r\n address2: deliveryInfo.address2,\r\n city: deliveryInfo.city,\r\n postCode: deliveryInfo.postcode,\r\n country: deliveryInfo.country,\r\n county: deliveryInfo.county,\r\n phoneNo: deliveryInfo.phoneNumber\r\n };\r\n\r\n await addBasketHeaderPost(payload).unwrap();\r\n };\r\n\r\n const onRedirectToPayment = async () => {\r\n try {\r\n if (amount?.totalAmount && currencyCode) {\r\n const payload = {\r\n amount: amount?.totalAmount,\r\n account_code: user!.customerNumber,\r\n currency: currencyCode,\r\n reference: deliveryInfo.purchaseOrder,\r\n description: deliveryInfo.purchaseOrder,\r\n billing_address: {\r\n first_name: user!.name,\r\n last_name: user!.contact,\r\n line_1: user!.address1,\r\n city: user!.city,\r\n post_code: user!.postcode,\r\n country: user!.country,\r\n county: user!.county,\r\n phone: user!.phoneNumber\r\n },\r\n shipping_address: {\r\n first_name: deliveryInfo.name,\r\n last_name: deliveryInfo.name,\r\n line_1: deliveryInfo.address1,\r\n line_2: deliveryInfo.address2,\r\n city: deliveryInfo.city,\r\n post_code: deliveryInfo.postcode,\r\n country: deliveryInfo.country,\r\n county: deliveryInfo.county,\r\n phone: deliveryInfo.phoneNumber\r\n }\r\n };\r\n\r\n await addBasketHeader();\r\n\r\n const response = await submitPaymentRequest(payload).unwrap();\r\n\r\n window.location.href = response.payment_Checkout_Url;\r\n }\r\n } catch (e) {\r\n toast.error('Cannot confirm order');\r\n }\r\n };\r\n\r\n const onSubmitOrder = async () => {\r\n if (amount?.amount !== undefined) {\r\n try {\r\n await addBasketHeader();\r\n await submitBasket(amount?.amount).unwrap();\r\n navigate('/open-orders?confirmorder=success');\r\n } catch (e) {\r\n navigate('/basket');\r\n dispatch(openCannotPlaceOrderModal({ isOpen: true }));\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"pt-6 px-5 md:px-0\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"h-36 border-b border-zinc-300\">\r\n <p className=\"text-gray-500 text-xs h-12\">Wholesale portal {`>`} Checkout</p>\r\n <div className=\"flex\">\r\n <h1 className=\"flex w-full font-serif text-4xl text-gray-700\">\r\n Checkout - Review Order\r\n </h1>\r\n </div>\r\n </div>\r\n <CheckoutProgressBar />\r\n <div className=\"flex flex-col lg:flex-row relative lg:static\">\r\n <div className=\"w-full lg:border-r border-zinc-300 mt-10 lg:pr-10\">\r\n <DeliveryInformationCollapsible />\r\n <ReviewOrderCollapsible />\r\n\r\n <div className=\"bg-blue-light mt-10 mb-10 p-4 lg:p-6 font-light\">\r\n {isProforma ? (\r\n <span>\r\n By clicking the “Proceed to Payment†button, you confirm that you have read,\r\n understand, and accept our Terms of Sale.\r\n </span>\r\n ) : (\r\n <span>\r\n By clicking the “Place Order†button, you confirm that you have read, understand,\r\n and accept our Terms of Sale.\r\n </span>\r\n )}\r\n </div>\r\n <TermsAndConditionsCollapsible />\r\n </div>\r\n <OrderSummary />\r\n <button\r\n onClick={handlePlaceOrder}\r\n className=\"text-white absolute bottom-4 mx-auto left-0 right-0 lg:left-auto lg:bottom-auto lg:right-44 lg:top-96 lg:mt-72 w-80 text-center h-10 bg-blue disabled:bg-gray-600\">\r\n {isProforma ? (\r\n 'Proceed to Payment'\r\n ) : (\r\n <div className=\"flex justify-center\">\r\n Place Order\r\n {isLoading ? <img className=\"ml-3 h-6\" src={spinner} alt=\"\" /> : ''}\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n </div>\r\n <ConfirmOrderModal />\r\n <CannotPlaceOrderModal />\r\n </div>\r\n );\r\n};\r\nexport default ReviewOrderPage;\r\n","import { useNavigate, useSearchParams } from 'react-router-dom';\r\nimport { useAppDispatch } from '../../../app/hooks';\r\nimport { useLazyRefreshQuery } from '../slices/apiSlice';\r\nimport { logout, setCredentials } from '../slices/slice';\r\nimport { useEffect } from 'react';\r\n\r\nconst RedirectSSOPage = () => {\r\n const [urlQueryParams] = useSearchParams();\r\n const dispatch = useAppDispatch();\r\n const [trigger] = useLazyRefreshQuery();\r\n const navigate = useNavigate();\r\n\r\n const redirect = async () => {\r\n try {\r\n const rt = urlQueryParams.get('rt');\r\n if (rt) {\r\n const data = await trigger(rt).unwrap();\r\n\r\n await dispatch(\r\n setCredentials({\r\n token: data.accessToken,\r\n refresh: data.refreshToken,\r\n user: data.user\r\n })\r\n );\r\n\r\n navigate('/');\r\n } else {\r\n dispatch(logout());\r\n }\r\n } catch {\r\n dispatch(logout());\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n redirect();\r\n }, []);\r\n\r\n return <div></div>;\r\n};\r\n\r\nexport default RedirectSSOPage;\r\n","import { createBrowserRouter, RouteObject } from 'react-router-dom';\r\nimport App from '../App';\r\nimport LoginPage from '../../features/auth/pages/LoginPage';\r\nimport HomePage from '../../features/home/pages/HomePage';\r\nimport RequireAuth from '../../features/auth/components/RequireAuth';\r\nimport OrderProductsPage from '../../features/ordering/pages/OrderProductsPage';\r\nimport MyBasket from '../../features/basket/pages/MyBasket';\r\nimport DeliveryInformationPage from '../../features/checkout/pages/DeliveryInformationPage';\r\nimport MyAccountPage from '../../features/account/pages/MyAccountPage';\r\nimport OpenOrdersPage from '../../features/open-orders/pages/OpenOrdersPage';\r\nimport MyDetailsPage from '../../features/details/pages/MyDetailsPage';\r\nimport ChangePasswordPage from '../../features/auth/pages/ChangePasswordPage';\r\nimport ViewTransactionPage from '../../features/account/pages/ViewTransactionPage';\r\nimport OpenOrderEnquiryPage from '../../features/open-orders/pages/OpenOrderEnquiryPage';\r\nimport ReviewOrderPage from '../../features/checkout/pages/ReviewOrderPage';\r\nimport RedirectSSOPage from '../../features/auth/pages/RedirectSSOPage';\r\n\r\nexport const routes: RouteObject[] = [\r\n {\r\n path: '/',\r\n element: <App />,\r\n children: [\r\n { path: 'login', element: <LoginPage /> },\r\n { path: 'redirect', element: <RedirectSSOPage /> },\r\n {\r\n element: <RequireAuth />,\r\n children: [\r\n { path: '', element: <HomePage /> },\r\n { path: 'account', element: <MyAccountPage /> },\r\n { path: '/view-transaction', element: <ViewTransactionPage /> },\r\n { path: 'open-orders', element: <OpenOrdersPage /> },\r\n { path: '/open-order-enquiry', element: <OpenOrderEnquiryPage /> },\r\n { path: 'details', element: <MyDetailsPage /> },\r\n { path: '/change-password', element: <ChangePasswordPage /> },\r\n { path: 'basket', element: <MyBasket /> },\r\n { path: 'checkout/deliveryinformation', element: <DeliveryInformationPage /> },\r\n { path: 'checkout/review-order', element: <ReviewOrderPage /> },\r\n { path: '/products/search', element: <OrderProductsPage /> }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\n\r\nexport const router = createBrowserRouter(routes);\r\n","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n } // otherwise hard set the new value\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n // defaults\n var blacklist = config.blacklist || null;\n var whitelist = config.whitelist || null;\n var transforms = config.transforms || [];\n var throttle = config.throttle || 0;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var serialize;\n\n if (config.serialize === false) {\n serialize = function serialize(x) {\n return x;\n };\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize;\n } else {\n serialize = defaultSerialize;\n }\n\n var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n var lastState = {};\n var stagedState = {};\n var keysToProcess = [];\n var timeIterator = null;\n var writePromise = null;\n\n var update = function update(state) {\n // add any changed keys to the queue\n Object.keys(state).forEach(function (key) {\n if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n if (lastState[key] === state[key]) return; // value unchanged? noop\n\n if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n keysToProcess.push(key); // add key to queue\n }); //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n\n Object.keys(lastState).forEach(function (key) {\n if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n keysToProcess.push(key);\n }\n }); // start the time iterator if not running (read: throttle)\n\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle);\n }\n\n lastState = state;\n };\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator);\n timeIterator = null;\n return;\n }\n\n var key = keysToProcess.shift();\n var endState = transforms.reduce(function (subState, transformer) {\n return transformer.in(subState, key, lastState);\n }, lastState[key]);\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState);\n } catch (err) {\n console.error('redux-persist/createPersistoid: error serializing state', err);\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key];\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState();\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(function (key) {\n if (lastState[key] === undefined) {\n delete stagedState[key];\n }\n });\n writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n if (blacklist && blacklist.indexOf(key) !== -1) return false;\n return true;\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err);\n\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err);\n }\n }\n\n var flush = function flush() {\n while (keysToProcess.length !== 0) {\n processNextKey();\n }\n\n return writePromise || Promise.resolve();\n }; // return `persistoid`\n\n\n return {\n update: update,\n flush: flush\n };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n var transforms = config.transforms || [];\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var debug = config.debug;\n var deserialize;\n\n if (config.deserialize === false) {\n deserialize = function deserialize(x) {\n return x;\n };\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize;\n } else {\n deserialize = defaultDeserialize;\n }\n\n return storage.getItem(storageKey).then(function (serialized) {\n if (!serialized) return undefined;else {\n try {\n var state = {};\n var rawState = deserialize(serialized);\n Object.keys(rawState).forEach(function (key) {\n state[key] = transforms.reduceRight(function (subState, transformer) {\n return transformer.out(subState, key, rawState);\n }, deserialize(rawState[key]));\n });\n return state;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n throw err;\n }\n }\n });\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n var storage = config.storage;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer');\n if (!config.key) throw new Error('key is required in persistor config');\n if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n }\n\n var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n var debug = config.debug || false;\n var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n var getStoredState = config.getStoredState || defaultGetStoredState;\n var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n var _persistoid = null;\n var _purge = false;\n var _paused = true;\n\n var conditionalUpdate = function conditionalUpdate(state) {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n return state;\n };\n\n return function (state, action) {\n var _ref = state || {},\n _persist = _ref._persist,\n rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n var restState = rest;\n\n if (action.type === PERSIST) {\n var _sealed = false;\n\n var _rehydrate = function _rehydrate(payload, err) {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n if (!_sealed) {\n action.rehydrate(config.key, payload, err);\n _sealed = true;\n }\n };\n\n timeout && setTimeout(function () {\n !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n }, timeout); // @NOTE PERSIST resumes if paused.\n\n _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n }\n\n if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n action.register(config.key);\n getStoredState(config).then(function (restoredState) {\n var migrate = config.migrate || function (s, v) {\n return Promise.resolve(s);\n };\n\n migrate(restoredState, version).then(function (migratedState) {\n _rehydrate(migratedState);\n }, function (migrateErr) {\n if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n _rehydrate(undefined, migrateErr);\n });\n }, function (err) {\n _rehydrate(undefined, err);\n });\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: {\n version: version,\n rehydrated: false\n }\n });\n } else if (action.type === PURGE) {\n _purge = true;\n action.result(purgeStoredState(config));\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush());\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === PAUSE) {\n _paused = true;\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge) return _objectSpread({}, restState, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n }) // @NOTE if key does not match, will continue to default else below\n\n });\n\n if (action.key === config.key) {\n var reducedState = baseReducer(restState, action);\n var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n var _newState = _objectSpread({}, reconciledRest, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n })\n });\n\n return conditionalUpdate(_newState);\n }\n } // if we have not already handled PERSIST, straight passthrough\n\n\n if (!_persist) return baseReducer(state, action); // run base reducer:\n // is state modified ? return original : return updated\n\n var newState = baseReducer(restState, action);\n if (newState === restState) return state;\n return conditionalUpdate(_objectSpread({}, newState, {\n _persist: _persist\n }));\n };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n registry: [],\n bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case REGISTER:\n return _objectSpread({}, state, {\n registry: [].concat(_toConsumableArray(state.registry), [action.key])\n });\n\n case REHYDRATE:\n var firstIndex = state.registry.indexOf(action.key);\n\n var registry = _toConsumableArray(state.registry);\n\n registry.splice(firstIndex, 1);\n return _objectSpread({}, state, {\n registry: registry,\n bootstrapped: registry.length === 0\n });\n\n default:\n return state;\n }\n};\n\nexport default function persistStore(store, options, cb) {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n var optionsToTest = options || {};\n var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n bannedKeys.forEach(function (k) {\n if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n });\n }\n\n var boostrappedCb = cb || false;\n\n var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n var register = function register(key) {\n _pStore.dispatch({\n type: REGISTER,\n key: key\n });\n };\n\n var rehydrate = function rehydrate(key, payload, err) {\n var rehydrateAction = {\n type: REHYDRATE,\n payload: payload,\n err: err,\n key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n };\n store.dispatch(rehydrateAction);\n\n _pStore.dispatch(rehydrateAction);\n\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb();\n boostrappedCb = false;\n }\n };\n\n var persistor = _objectSpread({}, _pStore, {\n purge: function purge() {\n var results = [];\n store.dispatch({\n type: PURGE,\n result: function result(purgeResult) {\n results.push(purgeResult);\n }\n });\n return Promise.all(results);\n },\n flush: function flush() {\n var results = [];\n store.dispatch({\n type: FLUSH,\n result: function result(flushResult) {\n results.push(flushResult);\n }\n });\n return Promise.all(results);\n },\n pause: function pause() {\n store.dispatch({\n type: PAUSE\n });\n },\n persist: function persist() {\n store.dispatch({\n type: PERSIST,\n register: register,\n rehydrate: rehydrate\n });\n }\n });\n\n if (!(options && options.manualPersist)) {\n persistor.persist();\n }\n\n return persistor;\n}","import { configureStore, ThunkAction, Action, combineReducers, Reducer } from '@reduxjs/toolkit';\r\nimport accountReducer from '../features/account/slices/slice';\r\nimport authReducer from '../features/auth/slices/slice';\r\nimport layoutReducer from '../features/layout/slice';\r\nimport orderReducer from '../features/ordering/slices/slice';\r\nimport openOrderReducer from '../features/open-orders/slices/slice';\r\nimport checkoutReducer from '../features/checkout/slices/slice';\r\nimport rootApiSlice from './api/slice';\r\nimport { persistReducer, persistStore } from 'redux-persist';\r\nimport thunk from 'redux-thunk';\r\nimport storage from 'redux-persist/lib/storage';\r\n\r\nconst authPersistConfig = {\r\n key: 'decora_wholesale_auth',\r\n storage: storage\r\n};\r\n\r\nconst combinedReducer = combineReducers({\r\n [rootApiSlice.reducerPath]: rootApiSlice.reducer,\r\n account: accountReducer,\r\n auth: persistReducer(authPersistConfig, authReducer),\r\n layout: layoutReducer,\r\n order: orderReducer,\r\n openOrder: openOrderReducer,\r\n checkout: checkoutReducer\r\n});\r\n\r\nexport type RootState = ReturnType<typeof combinedReducer>;\r\n\r\nconst rootReducer: Reducer = (state: RootState, action: any) => {\r\n if (action.type === 'auth/logout') {\r\n storage.removeItem('persist:decora_wholesale_auth');\r\n state = {} as RootState;\r\n rootApiSlice.util.resetApiState();\r\n\r\n window.location.href = '/login';\r\n }\r\n return combinedReducer(state, action);\r\n};\r\n\r\nexport const store = configureStore({\r\n reducer: rootReducer,\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false\r\n }).concat(rootApiSlice.middleware, thunk),\r\n devTools: true\r\n});\r\n\r\nexport const persistor = persistStore(store);\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type AppThunk<ReturnType = void> = ThunkAction<\r\n ReturnType,\r\n RootState,\r\n unknown,\r\n Action<string>\r\n>;\r\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback<E extends Enhancers = Enhancers> = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer<S, A> | ReducersMapObject<S, A>\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware<S>) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject<S, A>` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState<S>` is correct\r\n - `Reducer<S, A>` is being passed in. In this case, actually `CombinedState<S>` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState<CombinedState<NoInfer<S>>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback<E>\r\n}\r\n\r\ntype Middlewares<S> = ReadonlyArray<Middleware<{}, S>>\r\n\r\ntype Enhancers = ReadonlyArray<StoreEnhancer>\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>\r\n> extends Store<S, A> {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions<M> & Dispatch<A>\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore<S & ExtractStateExtensions<E>, A, M> &\r\n ExtractStoreExtensions<E>\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions<S, A, M, E>): EnhancedStore<S, A, M, E> {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware<S>()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer<S, A>\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer<S, A>\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer<any>\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _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 _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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 _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 React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PersistGate, _PureComponent);\n\n function PersistGate() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PersistGate);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n bootstrapped: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n var persistor = _this.props.persistor;\n\n var _persistor$getState = persistor.getState(),\n bootstrapped = _persistor$getState.bootstrapped;\n\n if (bootstrapped) {\n if (_this.props.onBeforeLift) {\n Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n return _this.setState({\n bootstrapped: true\n });\n });\n } else {\n _this.setState({\n bootstrapped: true\n });\n }\n\n _this._unsubscribe && _this._unsubscribe();\n }\n });\n\n return _this;\n }\n\n _createClass(PersistGate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n this.handlePersistorState();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._unsubscribe && this._unsubscribe();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n }\n\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.bootstrapped);\n }\n\n return this.state.bootstrapped ? this.props.children : this.props.loading;\n }\n }]);\n\n return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n children: null,\n loading: null\n});","import './index.css';\r\nimport 'react-toastify/dist/ReactToastify.min.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport { RouterProvider } from 'react-router-dom';\r\nimport { router } from './app/router/Routes';\r\nimport { Provider } from 'react-redux';\r\nimport { persistor, store } from './app/store';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\n\r\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);\r\nroot.render(\r\n <React.StrictMode>\r\n <Provider store={store}>\r\n <PersistGate loading={null} persistor={persistor}>\r\n <RouterProvider router={router} />\r\n </PersistGate>\r\n </Provider>\r\n </React.StrictMode>\r\n);\r\n"],"names":["reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","b","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","call","arrayAggregator","array","setter","iteratee","accumulator","index","value","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","baseTrim","string","slice","trimmedEndIndex","replace","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","uid","exec","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","obj","arr","res","arrLen","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","len","momentProperties","updateInProgress","copyConfig","to","from","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","abs","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","o","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","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","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","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","E","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","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","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","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","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","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","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","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","maxSize","_maxSize","_size","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","normalizePath","part","isQuoted","str","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","safe","segments","cb","iter","idx","isBracket","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","window","document","createElement","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","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","Reflect","construct","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","configurable","enumerable","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","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","style","setProperty","tb","menuitem","area","br","col","embed","hr","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","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","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","C","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","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","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","fromCharCode","code","location","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","password","tel","text","url","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","pf","qf","rf","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","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","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","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","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_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","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","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","Ki","digest","Li","Mi","error","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","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","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","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","Y","Z","qk","rk","sk","tk","uk","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","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","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","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","keyList","hasProp","hasElementType","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","__self","__source","jsx","jsxs","setState","forceUpdate","_status","_result","default","Children","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","__esModule","storage","_getStorage","getItem","setItem","removeItem","_typeof","storageType","testKey","hasStorage","noopStorage","_default","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","reWords","acc","pascalCase","sentenceCase","titleCase","toposort","nodes","edges","cursor","sorted","visited","outgoingEdges","edge","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","inst","useSyncExternalStoreWithSelector","hasValue","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","getProto","__proto__","ns","def","definition","globalThis","nmd","Action","_arrayWithHoles","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_nonIterableRest","_s","_e","_x","_r","_arr","_n","Constructor","_toPropertyKey","hint","prim","toPrimitive","Number","_defineProperties","writable","protoProps","staticProps","_setPrototypeOf","setPrototypeOf","_inherits","subClass","superClass","_getPrototypeOf","_isNativeReflectConstruct","sham","Proxy","Boolean","_assertThisInitialized","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","_iterableToArray","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","_e2","ResultType","PopStateEventType","invariant","warning","getHistoryState","usr","createLocation","_extends","pathname","hash","parsePath","createPath","_ref","_ref$pathname","_ref$search","_ref$hash","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","_options2","_options2$window","_options2$v5Compat","v5Compat","globalHistory","history","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","immutableRouteKeys","convertRoutesToDataRoutes","routes","mapRouteProperties","parentPath","manifest","route","treePath","_toConsumableArray","isIndexRoute","indexRoute","pathOrLayoutRoute","matchRoutes","locationArg","basename","stripBasename","branches","flattenRoutes","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","flattenRoute","relativePath","caseSensitive","joinPaths","computeScore","_route$path","_step","_iterator","explodeOptionalSegments","exploded","_segments","isOptional","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","params","pathnameBase","normalizePathname","_compilePath","paramNames","regexpSource","paramName","compilePath","_compilePath2","_slicedToArray","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","dest","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","_ref4","_ref4$search","_ref4$hash","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","_Error","_super","_classCallCheck","_createClass","ErrorResponse","status","statusText","internal","isRouteErrorResponse","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","formMethod","formAction","formEncType","formData","json","IDLE_FETCHER","IDLE_BLOCKER","proceed","ABSOLUTE_URL_REGEX","defaultMapRouteProperties","hasErrorBoundary","createRouter","init","routerWindow","isBrowser","isServer","detectErrorBoundary","inFlightDataRoutes","dataRoutes","v7_normalizeFormMethod","v7_prependBasename","unlistenHistory","subscribers","savedScrollPositions","getScrollRestorationKey","getScrollPosition","initialScrollRestored","hydrationData","initialMatches","initialErrors","getInternalRouterError","_getShortCircuitMatch","getShortCircuitMatches","_defineProperty","router","pendingNavigationController","initialized","loader","historyAction","navigation","restoreScrollPosition","preventScrollReset","revalidation","loaderData","actionData","errors","fetchers","blockers","pendingAction","pendingPreventScrollReset","isUninterruptedRevalidation","isRevalidationRequired","cancelledDeferredRoutes","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeDeferreds","blockerFunctions","ignoreNextHistoryUpdate","updateState","newState","subscriber","completeNavigation","_location$state","_location$state2","isActionReload","isMutationMethod","_isRedirect","mergeLoaderData","getSavedScrollPosition","navigate","_x2","_x3","_navigate","_asyncToGenerator","_regeneratorRuntime","_callee2","opts","normalizedPath","_normalizeNavigateOpt2","submission","currentLocation","nextLocation","userReplace","blockerKey","_context2","normalizeTo","fromRouteId","relative","normalizeNavigateOptions","shouldBlockNavigation","updateBlocker","startNavigation","pendingError","_x4","_x5","_x6","_startNavigation","_callee3","routesToUse","loadingNavigation","_error","_getShortCircuitMatch2","notFoundMatches","_route","request","pendingActionData","actionOutput","_yield$handleLoaders","shortCircuited","_context3","abort","startUninterruptedRevalidation","saveScrollPosition","overrideNavigation","cancelActiveDeferreds","isHashChangeOnly","AbortController","createClientSideRequest","signal","findNearestBoundary","handleAction","pendingActionError","getLoadingNavigation","Request","handleLoaders","fetcherSubmission","_x7","_x8","_x9","_x10","_x11","_handleAction","_callee4","actionMatch","boundaryMatch","_context4","interruptActiveLoads","getSubmittingNavigation","getTargetMatch","routeId","callLoaderOrAction","aborted","isRedirectResult","startRedirectNavigation","isErrorResult","isDeferredResult","_x12","_x13","_x14","_x15","_x16","_x17","_x18","_x19","_x20","_handleLoaders","_callee5","activeSubmission","_getMatchesToLoad","_getMatchesToLoad2","matchesToLoad","revalidatingFetchers","_updatedFetchers","abortPendingFetchRevalidations","_yield$callLoadersAnd","results","loaderResults","fetcherResults","redirect","fetcherKey","_processLoaderData","updatedFetchers","didAbortFetchLoads","shouldUpdateFetchers","_context5","getSubmissionFromNavigation","getMatchesToLoad","markFetchRedirectsDone","fetcher","revalidatingFetcher","getLoadingFetcher","abortFetcher","controller","callLoadersAndMaybeResolveData","findRedirect","processLoaderData","deferredData","subscribe","abortStaleFetchLoads","getFetcher","_handleFetcherAction","_callee6","requestMatches","_error2","existingFetcher","abortController","fetchRequest","originatingLoadId","actionResult","doneFetcher","loadingFetcher","revalidationRequest","loadId","loadFetcher","_getMatchesToLoad3","_getMatchesToLoad4","_yield$callLoadersAnd2","_processLoaderData2","_doneFetcher","_context6","setFetcherError","getSubmittingFetcher","getDoneFetcher","isFetchActionRedirect","staleKey","_handleFetcherLoader","_callee7","_doneFetcher2","_context7","resolveDeferredData","t0","_x33","_x34","_x35","_startRedirectNavigation","_callee8","_temp","_ref7","redirectLocation","isDocumentReload","redirectHistoryAction","_context8","revalidate","_isFetchActionRedirect","reloadDocument","_x36","_x37","_x38","_x39","_x40","_callLoadersAndMaybeResolveData","_callee9","currentMatches","fetchersToLoad","_context9","all","resolveDeferredResults","_cancelledDeferredRou","deleteFetcher","markFetchersDone","_step2","_iterator2","_step3","doneKeys","_iterator3","landedId","_step4","yeetedKeys","_iterator4","_step4$value","deleteBlocker","newBlocker","blocker","_ref2","_entries","blockerFunction","cancelledRouteIds","dfd","getScrollKey","createUseMatchesMatch","initialize","enableScrollRestoration","positions","getPosition","getKey","fetch","_normalizeNavigateOpt","_x21","_x22","_x23","_x24","_x25","_x26","handleFetcherAction","_x27","_x28","_x29","_x30","_x31","_x32","handleFetcherLoader","dispose","getBlocker","_internalFetchControllers","_internalActiveDeferreds","_internalSetRoutes","newRoutes","prependBasename","contextualMatches","activeRouteMatch","_step5","_iterator5","hasNakedIndexQuery","normalizeFormMethod","isFetcher","isSubmissionNavigation","isValidMethod","searchParams","getInvalidBodyError","rawFormMethod","stripHashFromPath","FormData","URLSearchParams","_ref3","_ref12","parse","convertFormDataToSearchParams","convertSearchParamsToFormData","append","getLoaderMatchesUntilBoundary","boundaryId","boundaryMatches","currentUrl","nextUrl","navigationMatches","currentLoaderData","currentMatch","isMissingData","isNewLoader","currentRouteMatch","nextRouteMatch","shouldRevalidateLoader","currentParams","nextParams","defaultShouldRevalidate","isNewRouteInstance","fetcherMatches","fetcherMatch","currentPath","loaderMatch","shouldRevalidate","routeChoice","loadLazyRouteModule","_x60","_x61","_x62","_loadLazyRouteModule","_callee15","lazyRoute","routeToUpdate","routeUpdates","lazyRouteProperty","staticRouteValue","isPropertyStaticallyDefined","_context16","_x63","_x64","_x65","_x66","_x67","_x68","_x69","_x70","_callLoaderOrAction","_callee16","resultType","onReject","runHandler","handler","_url","_url2","isSameBasename","contentType","_result$init","_result$init2","_context17","abortPromise","race","requestContext","isResponse","headers","isStaticRequest","protocol","isRouteRequest","response","statusCode","isDeferredData","deferred","Headers","_step6","_iterator6","_step6$value","_step7","_iterator7","_step7$value","processRouteLoaderData","foundError","loaderHeaders","_processRouteLoaderDa","_revalidatingFetchers","newLoaderData","_step8","mergedLoaderData","_iterator8","eligibleMatches","_temp4","_ref13","errorMessage","resolveData","_x71","_x72","_x73","_x74","_x75","_x76","_resolveDeferredResults","_callee17","signals","_loop","_context19","isRevalidatingLoader","_context18","_x77","_x78","_x79","_resolveDeferredData","_callee18","unwrap","_context20","unwrappedData","getAll","pathMatches","DataRouterContext","React","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useIsomorphicLayoutEffect","static","useNavigate","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","useNavigateStable","dataRouterContext","_React$useContext3","routePathnamesJson","UNSAFE_getPathContributingMatches","useNavigateUnstable","OutletContext","useResolvedPath","_temp2","useRoutesImpl","dataRouterState","parentMatches","routeMatch","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","useRouteError","lightgrey","preStyles","padding","backgroundColor","fontStyle","defaultErrorElement","RenderErrorBoundary","_React$Component","_this","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","getChildren","hookName","ctx","useRouteContext","thisRoute","startTransitionImpl","RouterProvider","fallbackElement","_React$useState4","setStateImpl","v7_startTransition","Router","DataRoutes","Navigate","jsonPath","Outlet","useOutlet","_ref5","_ref5$basename","basenameProp","_ref5$children","locationProp","_ref5$navigationType","_ref5$static","staticProp","navigationContext","_locationProp","_locationProp$pathnam","_locationProp$search","_locationProp$hash","_locationProp$state","_locationProp$key","locationContext","trailingPathname","AwaitRenderStatus","neverSettledPromise","updates","createSearchParams","parseHydrationData","_window","__staticRouterHydrationData","deserializeErrors","serialized","_entries$_i","__type","__subType","ErrorConstructor","Link","absoluteHref","_objectWithoutPropertiesLoose","_excluded","UNSAFE_NavigationContext","isExternal","targetUrl","_React$useContext","_useResolvedPath","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","locationSearch","defaultSearchParams","setSearchParams","nextInit","navigateOptions","newSearchParams","ErrorBoundaryContext","initialState","didCatch","_Component","resetErrorBoundary","_this$props$onReset","_this$props","_len","_key","onReset","reason","_this$props$onError","_this$props2","prevProps","prevState","_this$props$onReset2","_this$props3","resetKeys","hasArrayChanged","_this$props4","fallbackRender","FallbackComponent","_this$state","childToRender","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_jsx","className","_jsxs","alt","scrollTo","linkedinIcon","facebookIcon","twitterIcon","mzuriLogo","isoIcon","isoIcon2","ukasIcon","batch","getBatch","ContextKey","gT","getContext","_gT$ContextKey","contextMap","realContext","ReactReduxContext","createReduxContextHook","useReduxContext","refEquality","createSelectorHook","useDefaultReduxContext","selector","equalityFnOrOptions","equalityFn","_ref$equalityFn","_ref$stabilityCheck","stabilityCheck","noopCheck","_useReduxContext","store","subscription","getServerState","globalStabilityCheck","wrappedSelector","selectedState","addNestedSub","getState","useSelector","nullListeners","notify","createSubscription","parentSub","unsubscribe","handleChangeWrapper","onStateChange","trySubscribe","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","serverState","_ref$noopCheck","contextValue","previousState","createStoreHook","useStore","createDispatchHook","useDefaultStore","newBatch","useDispatch","shallowEqual","objA","objB","keysA","keysB","initializeUseSelector","initializeConnect","nn","rn","freeze","tn","en","on","revocable","revoke","proxy","$","op","deleteProperty","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","an","cn","pn","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","compose","applyMiddleware","middlewares","_dispatch","middlewareAPI","middleware","_objectSpread","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","baseProto","MiddlewareArray","__extends","species","prepend","__spreadArray","EnhancerArray","freezeDraftable","isDraftable","createNextState","curryGetDefaultMiddleware","_c","middlewareArray","immutableCheck","serializableCheck","thunkMiddleware","getDefaultMiddleware","createAction","prepareAction","actionCreator","prepared","__spreadValues","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","addDefaultCase","createSlice","_reducer","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","cr","caseReducer","isDraft2","isDraftable2","createNextState2","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","actionKey","getType2","prepare","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","fulfilled","requestId","__spreadProps","requestStatus","rejected","serializeError","rejectedWithValue","condition","AC","class_1","onabort","throwIfAborted","extra","abortReason","idGenerator","promise2","__async","conditionResult","abortedPromise","_b","getPendingMeta","rejectWithValue","fulfillWithValue","finalAction","err_1","dispatchConditionRejection","unwrapResult","withTypes","hasMatchFunction","isAnyOf","matchers","isAllOf","hasExpectedRequestMetadata","validStatus","hasValidRequestId","hasValidRequestStatus","isAsyncThunkArray","isPending","asyncThunks","asyncThunk","combinedMatcher","isRejected","isRejectedWithValue","hasFlag","isFulfilled","isAsyncThunkAction","asyncThunks_1","alm","promise","SHOULD_AUTOBATCH","prepareAutoBatched","createQueueWithTimer","timeout","requestAnimationFrame","enableES5","clearTokenAndRedirect","_callee","logout","authSlice","refresh","user","setCredentials","_action$payload","_authSlice$actions","useAppDispatch","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","createCacheKeyComparator","equals","put","getEntries","createSingletonCache","cacheIndex","createLruCache","matchingEntry","clearCache","createSelectorCreator","memoizeOptionsFromArgs","_len2","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dep","dependencyTypes","getDependencies","memoizedResultFunc","lastResult","recomputations","resetRecomputations","QueryStatus","QueryStatus2","createSelector","withoutTrailingSlash","withoutLeadingSlash","joinUrls","isAbsoluteUrl","delimiter","_iPO","copyWithStructuralSharing","oldObj","newObj","newKeys","oldKeys","isSameObject","mergeObj","_j","newKeys_1","defaultFetchFn","defaultValidateStatus","defaultIsJsonContentType","stripUndefined","isPlainObject2","_k","fetchBaseQuery","baseUrl","prepareHeaders","fetchFn","paramsSerializer","isJsonContentType","_m","jsonContentType","jsonReplacer","defaultTimeout","globalResponseHandler","responseHandler","globalValidateStatus","validateStatus","baseFetchOptions","__objRest","api","endpoint","forced","_a2","_o","_p","_q","isJsonifiable","divider","query","requestClone","timedOut","timeoutId","e_1","responseClone","responseText","handleResponse","resultData","handleResponseError_1","originalStatus","e_2","HandledError","defaultBackoff","maxRetries","attempts","DefinitionType","DefinitionType2","EMPTY_OPTIONS","retryWithBackoff","baseQuery","defaultOptions","extraOptions","possibleMaxRetries","defaultRetryCondition","__","backoff","retryCondition","retry2","e_3","throwImmediately","baseQueryApi","retry","fail","onFocus","onFocusLost","onOnline","onOffline","isQueryDefinition","calculateProvidedBy","description","queryArg","assertTagTypes","expandTagDescription","isNotNullish","forceQueryFnSymbol","isUpsertQuery","defaultTransformResponse","baseQueryReturnValue","calculateProvidedByThunk","endpointDefinitions","assertTagType","endpointName","originalArgs","baseQueryMeta","updateQuerySubstateIfExists","queryCacheKey","substate","getMutationCacheKey","fixedCacheKey","updateMutationSubstateIfExists","buildSlice","reducerPath","queryThunk","mutationThunk","definitions","apiUid","extractRehydrationInfo","hasRehydrationInfo","resetApiState","createAction2","querySlice","removeQueryResult","queryResultPatched","patches","upserting","uninitialized","startedTimeStamp","fulfilledTimeStamp_1","fulfilledTimeStamp","arg_1","baseQueryMeta_1","requestId_1","draftSubstateData","structuralSharing","isDraft","original","queries","mutationSlice","removeMutationResult","cacheKey","mutations","invalidationSlice","tagTypeSubscriptions","idSubscriptions","foundAt","provided","incomingTags","cacheKeys","subscribedQueries","cacheKeys_1","isFulfilled2","isRejectedWithValue2","providedTags","providedTags_1","subscriptionSlice","updateSubscriptionOptions","unsubscribeQueryResult","internal_probeSubscription","internalSubscriptionsSlice","subscriptionsUpdated","configSlice","online","onLine","focused","visibilityState","middlewareRegistered","combinedReducer","subscriptions","unsubscribeMutationResult","skipToken","initialSubState","defaultQuerySubState","defaultMutationSubState","buildSelectors","serializeQueryArgs","selectSkippedQuery","selectSkippedMutation","buildQuerySelector","endpointDefinition","queryArgs","serializedArgs","selectInternalState","withRequestFlags","buildMutationSelector","mutationId","selectInvalidatedBy","tags","apiState","toInvalidate","invalidateSubscriptions_1","invalidate","querySubState","isUninitialized","isLoading","isSuccess","rootState","defaultSerializeQueryArgs","cached","stringified","isPlainObject3","key2","buildCreateApi","modules","optionsWithDefaults","keepUnusedDataFor","refetchOnMountOrArgChange","refetchOnFocus","refetchOnReconnect","queryArgsApi","finalSerializeQueryArgs","endpointSQA_1","queryArgsApi2","initialResult","tagTypes","injectEndpoints","evaluatedEndpoints","endpoints","mutation","overrideExisting","initializedModules_1","initializedModules","injectEndpoint","enhanceEndpoints","addTagTypes","addTagTypes_1","eT","partialDefinition","buildCacheCollectionHandler","internalState","internalActions","anySubscriptionsRemainingForKey","currentSubscriptions","currentRemovalTimeouts","handleUnsubscribe","api2","finalKeepUnusedDataFor","currentTimeout","mwApi","internalState2","util","queryState","buildInvalidationByTagsHandler","refetchQuery","isThunkActionWithTags","isAnyOf2","isFulfilled3","isRejectedWithValue3","invalidateTags","valuesArray_1","subscriptionSubState","buildPollingHandler","currentPolls","startNextPoll","lowestPollingInterval","findLowestPollingInterval","currentPoll","nextPollTimestamp","currentInterval","pollingInterval","updatePollingInterval","cleanupPollForKey","existingPoll","POSITIVE_INFINITY","clearPolls","neverResolvedError","buildCacheLifecycleHandler","isQueryThunk","isMutationThunk","isFulfilledThunk","isFulfilled4","lifecycleMap","handleNewKey","onCacheEntryAdded","lifecycle","cacheEntryRemoved","cacheDataLoaded","valueResolved","select","extra2","lifecycleApi","getCacheEntry","updateCachedData","updateRecipe","updateQueryData","runningHandler","stateBefore","getCacheKey","oldState","cacheKey2","buildQueryLifecycleHandler","isPendingThunk","isPending2","isRejectedThunk","isRejected2","isFullfilledThunk","isFulfilled5","endpointName_1","originalArgs_1","onQueryStarted","lifecycle_1","queryFulfilled","selector_1","isUnhandledError","buildDevCheckHandler","queueMicrotaskShim","buildBatchedActionsHandler","subscriptionsPrefix","previousSubscriptions","dispatchQueued","didMutate","mutableState","_g","_h","subscriptionOptions","actuallyMutateSubscriptions","newSubscriptions","produceWithPatches2","isSubscriptionSliceAction","isAdditionalSubscriptionAction","buildMiddleware","createAction3","handlerBuilders","initialized2","builderArgs","handlers","build","batchedActionsHandler","windowEventsHandler","refetchValidQueries","sub","buildWindowEventHandler","mwApiWithNext","actionShouldContinue","hasSubscription","isThisApiSliceAction","handlers_1","override","forceRefetch","safeAssign","coreModuleName","coreModule","enablePatches","executeEndpoint","_0","_1","transformResponse","baseQueryApi_1","isForcedQuery","forceQueryFn","queryFn","arg2","catchedError","error_1","transformErrorResponse","e_4","requestState","baseFetchOnMountOrArgChange","fulfilledVal","refetchVal","queryThunkArgs","currentArg","previousArg","endpointState","matchesEndpoint","prefetch","force","hasTheForce","maxAge","hasMaxAge","ifOlderThan","queryAction","force2","initiate","latestStateValue","lastFulfilledTs","inversePatches","undo","patchQueryData","upsertQueryData","buildMatchThunkActions","matchPending","matchFulfilled","matchRejected","buildThunks","sliceActions","middlewareActions","runningQueries","runningMutations","buildInitiateQuery","thunkResult","stateAfter","middlewareWarning","skippedSynchronously","runningQuery","selectFromState","statePromise","refetch","running_1","buildInitiateMutation","returnValuePromise","running","getRunningQueryThunk","getRunningMutationThunk","_endpointName","fixedCacheKeyOrRequestId","getRunningQueriesThunk","getRunningMutationsThunk","getRunningOperationPromises","extract","queriesForStore","removalWarning","buildInitiate","getRunningOperationPromise","anyApi","isMutationDefinition","useStableQueryArgs","serialize","incoming","cache2","UNINITIALIZED_VALUE","useShallowStableValue","useRef2","useEffect2","useEffect3","defaultMutationStateSelector","noPendingQueryStateSelector","isFetching","reactHooksModuleName","createApi","rrBatch","rrUseDispatch","rrUseSelector","rrUseStore","unstable__sideEffectsInRender","moduleOptions","usePossiblyImmediateEffect","buildQueryHooks","useQuerySubscription","stableArg","stableSubscriptionOptions","lastRenderHadSubscription","useRef3","promiseRef","currentRenderHasSubscription","returnedValue","subscriptionRemoved","lastPromise","lastSubscriptionOptions","useMemo2","useLazyQuerySubscription","setArg","subscriptionOptionsRef","trigger","preferCacheValue","useQueryState","selectFromResult","lastValue","selectDefaultResult","queryStatePreSelector","querySelector","shallowEqual2","newLastValue","useLazyQuery","queryStateResults","lastArg","useQuery","querySubscriptionResults","buildMutationHook","setPromise","triggerMutation","mutationSelector","finalState","usePrefetch","stableDefaultOptions","hasData","currentData","buildHooks","useMutation","reactHooksModule","auth","refreshQuery","customFetchBase","_result$error","_result$meta","_result$meta$response","_result$meta$response2","refreshResult","accessToken","refreshToken","apiSlice","rootApiSlice","getBasket","providesTags","updateBasketItem","req","invalidatesTags","deleteBasketItem","lineNumber","getBasketAmount","submitBasket","basketAmount","getOrderConfirmation","useGetBasketQuery","useUpdateBasketItemMutation","useDeleteBasketItemMutation","useGetBasketAmountQuery","useSubmitBasketMutation","useGetOrderConfirmationQuery","_useGetBasketQuery","activePage","layout","account","handleLogout","cartImg","dotIcon","_useSelector","_useState2","isOpen","setIsOpen","toggleMenu","mobileX","accountImg","detailsImg","openOrders","addCart","viewCart","mobileMenu","mobileLogo","_Fragment","AuthenticatedNavLinks","GenericRenderingError","Navbar","Footer","ToastContainer","hideProgressBar","pauseOnFocusLoss","closeOnClick","pauseOnHover","theme","isMergeableObject","isNonNullObject","stringValue","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","arrayMerge","sourceIsArray","destination","mergeObject","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","isMasked","hashClear","hashDelete","hashGet","hashHas","hashSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","baseIsTypedArray","cloneSymbol","baseIsMap","baseIsSet","FormikContext","FormikProvider","FormikConsumer","useFormikContext","formik","isEmptyArray","isEmptyChildren","isPromise","getIn","setIn","resVal","pathArray","currentObj","nextPath","setNestedObjectValues","_Object$keys","emptyErrors","emptyTouched","useFormik","validateOnChange","_ref$validateOnChange","validateOnBlur","_ref$validateOnBlur","validateOnMount","_ref$validateOnMount","isInitialValid","enableReinitialize","_ref$enableReinitiali","onSubmit","initialValues","initialTouched","initialStatus","fieldRegistry","setIteration","stateRef","touched","isSubmitting","isValidating","submitCount","formikReducer","runValidateHandler","maybePromisedErrors","validate","actualException","runValidationSchema","validationSchema","schema","validateAt","sync","normalizedValues","prepareDataForValidation","abortEarly","validateYupSchema","yupError","inner","_isArray","yupToFormErrors","runSingleFieldLevelValidation","runFieldLevelValidations","fieldKeysWithValidation","fieldValidations","fieldErrorsList","curr","runAllValidations","fieldErrors","schemaErrors","validateErrors","validateFormWithHighPriority","useEventCallback","combinedErrors","resetForm","dispatchFn","maybePromisedOnReset","imperativeMethods","validateField","maybePromise","registerField","unregisterField","setTouched","shouldValidate","setErrors","setValues","resolvedValues","setFieldError","setFieldValue","executeChange","eventOrTextValue","maybePath","parsed","outerHTML","currentValue","valueProp","currentArrayOfValues","isValueInArray","getValueForCheckbox","getSelectedValues","handleChange","eventOrPath","setFieldTouched","executeBlur","_e$target","handleBlur","eventOrString","setFormikState","stateOrCb","setStatus","setSubmitting","submitForm","isInstanceOfError","promiseOrUndefined","executeSubmit","_errors","handleSubmit","validateForm","handleReset","getFieldMeta","initialError","getFieldHelpers","setError","getFieldProps","nameOrOptions","isAnObject","valueState","onChange","onBlur","dirty","Formik","formikbag","innerRef","shouldClone","Field","legacyBag","asElement","_innerRef","_rest","Form","_action","_useFormikContext","connect","Comp","componentDisplayName","WrappedComponent","insert","arrayLike","copyArrayLike","maxIndex","createAlterationHandler","alteration","defaultFunction","FieldArrayInner","updateArrayField","alterTouched","alterErrors","updateErrors","updateTouched","fieldError","fieldTouched","handlePush","swap","indexA","indexB","handleSwap","move","handleMove","handleInsert","handleReplace","handleUnshift","handleRemove","arrayHelpers","ErrorMessageImpl","touch","ErrorMessage","login","credentials","shouldRedirect","changePassword","passwordInformation","rt","useLoginMutation","useChangePasswordMutation","useLazyRefreshQuery","_get","receiver","errorToString","regExpToString","SYMBOL_REGEXP","printSimpleValue","quoteStrings","printNumber","printValue","strReg","ValidationError","errorOrErrors","_this$errors","captureStackTrace","label","mixed","defined","notNull","oneOf","notOneOf","notType","originalValue","castMsg","uuid","uppercase","lessThan","moreThan","positive","negative","integer","boolean","isValue","noUnknown","tuple","typeLen","spec","formatError","isSchema","__isYupSchema__","Condition","otherwise","check","_branch","prefixes","Reference","isContext","isSibling","__isYupRef","isAbsent","createValidation","panic","_ref2$path","skipAbsent","_options$abortEarly2","isRef","createError","overrides","handleResult","validOrError","handleError","shouldSkip","OPTIONS","lastPart","lastPartDebug","_part","isTuple","innerType","fields","ReferenceSet","_Set","_super2","describe","newItems","removeItems","_step3$value","_i2","_Object$entries","_Object$entries$_i","Schema","_this2","tests","conditions","_mutate","internalTests","_whitelist","_blacklist","exclusiveTests","_typeCheck","withMutation","typeError","strip","recursive","nullable","optional","coerce","nonNullable","combined","mergedSpec","prevSchema","_options$strict","_options$abortEarly","_options$recursive","resolvedSchema","allowOptionality","assert","_cast","formattedValue","formattedResult","rawValue","_this3","prevValue","getDefault","_value","_this4","_options$originalValu3","_options$strict2","initialTests","_i3","_Object$values","runTests","runOptions","fired","panicOnce","nextOnce","nestedErrors","_Object$assign","_this5","originalParent","testOptions","_validate","validated","validateSync","_getDefault","optionality","nullability","isExclusive","exclusive","fromOptions","enums","whiteList","valids","resolved","resolveAll","invalids","_next$spec","list","_i4","_getIn","_i5","_arr2","_i6","_arr3","returnsTrue","MixedSchema","_Schema","_super3","BooleanSchema","_Schema2","_super4","_this6","_raw","rEmail","rUrl","rUUID","isTrimmed","objStringTag","create$6","StringSchema","_Schema3","_super5","_this7","strValue","excludeEmptyString","_options$excludeEmpty","NumberSchema","_Schema4","_super6","_this8","isNaN$1","less","more","_method","avail","isoReg","create$4","DateSchema","_Schema5","_super7","_this9","timestamp","struct","numericKeys","minutesOffset","parseIsoDate","INVALID_DATE","cast","prepareParam","_err$path","sortByKeyOrder","parseJson","deepPartial","_i8","_Object$entries2","_Object$entries2$_i","fieldSchema","setFields","nextArray","defaultSort","create$3","ObjectSchema","_Schema6","_super8","_this10","_sortErrors","_nodes","_excludedEdges","shape","_options$stripUnknown","_this11","stripUnknown","intermediateValue","innerOptions","__validating","isChanged","exists","fieldValue","inputValue","fieldSpec","_this12","_options$from","_options$originalValu4","_options$recursive2","objectErrors","asNestedTest","_this13","nextFields","_i9","_Object$entries3","_Object$entries3$_i","schemaOrRef","_this14","dft","_innerOptions","excludedEdges","excludes","addNode","depPath","_loop2","_Object$keys2","_i7","sortFields","additions","_i10","_Object$entries4","_Object$entries4$_i","picked","fromGetter","deepHas","noAllow","unknownKeys","known","unknown","allow","_i11","_Object$keys3","transformKeys","_i12","_Object$entries5","_innerOptions2","_Object$entries5$_i","ArraySchema","_Schema7","_super9","_this15","_opts","_this16","castElement","_this17","arrayErrors","_options$originalValu2","_options$originalValu","innerTypeErrors","_this18","rejector","TupleSchema","_Schema8","_super10","schemas","_this19","_this20","itemTypes","tupleErrors","_step9","_iterator9","_step9$value","itemSchema","_useLoginMutation2","handleLogin","_yield$login$unwrap","_user","toast","LoginFormValidationSchema","yup","username","Login","title","icon","layoutSlice","setActivePage","handleDownload","open","downloadImg","useGetNotificationQuery","getNotification","_useGetNotificationQu","showNotification","notificationText","Tile","NotificationTile","InformationTile","OutOfStockTile","getCategories","searchProducts","addToBasket","getFavouriteProducts","addToFavourites","itemNumber","removeFromFavourites","getUsualProducts","getMultiBuyDiscounts","getDeliverySchedule","getItemImage","imageType","_responseHandler","blob","useGetCategoriesQuery","useLazySearchProductsQuery","useAddToBasketMutation","useLazyGetFavouriteProductsQuery","useAddToFavouritesMutation","useRemoveFromFavouritesMutation","useLazyGetUsualProductsQuery","useLazyGetMultiBuyDiscountsQuery","useLazyGetDeliveryScheduleQuery","useLazyGetItemImageQuery","searchProductsParams","primaryCategory","secondaryCategory","searchValue","isSearching","displayDefaultMessage","pagination","itemsPerPage","pageCount","currentPage","products","displayProducts","activeFilter","multiBuyModalOptions","discounts","deliveryScheduleModalOptions","schedule","productImageModalOptions","productImage","filterInfo","orderSlice","setPrimaryCategory","setSecondaryCategory","setSearchValue","setDisplayDefaultMessage","resetSpecificSearchFilter","_action$payload2","_action$payload3","resetSearchFilters","setIsLoading","setSearchProductsResults","setActiveFilter","setPagination","setProductIsFavourite","updatedResults","isFavourite","openMultiBuyModal","closeMultiBuyModal","openDeliveryScheduleModal","closeDeliveryScheduleModal","openProductImageModal","closeProductImageModal","setFilterInfo","_orderSlice$actions","categories","secondaryCategories","setSecondaryCategories","_useState4","userHasSelectedProductType","setUserHasSelectedProductType","_useLazySearchProduct2","_useLazySearchProduct3","cat","searchProcess","searchObject","handleSearch","product","desktopQtyInputRef","mobileQtyInputRef","currencySymbol","_state$auth$user","getImage","imageUrl","setImageUrl","_useAddToBasketMutati2","quantity","setQuantity","multiBuyDiscountsTrigger","deliveryScheduleTrigger","isDeliveryScheduleSelected","isMultiBuySelected","loadImage","createObjectURL","onClickDecrementQuantity","onClickIncrementQuantity","onChangeQuantity","handleClickAdd","stock","success","handleClickFavouriteIcon","removeFavouriteItem","addFavouriteItem","onClickMultiBuy","_ref6","onClickDeliverySchedule","onClickImage","_ref8","focusInputOnIncrementOrDecrement","inputRef","_inputRef$current","noImageIcon","favouriteIcon","starIcon","packQuantity","toLocaleString","quantityDue","hasMultiBuyDiscount","blueTruckIcon","truckIcon","shoppingModeBlue","shoppingMode","price","minimumFractionDigits","maximumFractionDigits","discountPrice","onKeyUp","_ref9","dueDate","_ref10","_callee10","_context10","titleIcon","hasCloseButton","onClose","modalClose","Modal","tagIcon","minimumQuantity","imageIcon","colSpan","spinner","ProductSearchResultsTableRow","MultiBuyModal","DeliveryScheduleModal","ProductImageModal","_useLazyGetFavouriteP2","_useLazyGetFavouriteP3","isSearchingProducts","isFetchingProducts","_useSelector2","isActive","handleClick","handleFilterInactive","_useLazyGetUsualProdu2","_useLazyGetUsualProdu3","activeUsualsIcon","usualsIcon","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","reset_cp","utf16beread","$cptable","_getchar","_getansi","DENSE","Base64_map","Base64_encode","c1","c2","c3","e1","e2","e3","e4","Base64_decode","has_buf","versions","Buffer_from","nbfs","buf","enc","new_raw_buf","alloc","new_unsafe_buf","s2a","s2ab","a2s","bconcat","bufs","maxlen","chr0","chr1","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","b2","dout","date1904","setDate","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","tt","outl","commaify","pct1","write_num_exp","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","rr","myn","myd","write_num_f1","carry","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","choose_fmt","in_str","SSF_split_fmt","lat","m1","m2","dateNF","table","flen","dt","lst","ssm","bt","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","SSF_load_table","tbl","make_ssf","SSF_init_table","dateNFregex","CRC32","T0","Int32Array","signed_crc_table","TT","subarray","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","bstr","seed","CFB","fs","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_extra_field","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","mt","get_fs","file","parse_zip","row","mboundary","boundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","line","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","header","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","chkd","buf_chain","modulus","addr","__readInt32LE","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","files","mini","minifat_store","sector","namelen","__utf16le","clsid","ct","read_date","get_sector_list","content","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","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","_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","Uint16Array","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","setHours","setMinutes","setSeconds","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","utils","cfb_gc","UCFullPaths","UCPaths","UCPath","read","readFileSync","read_file","write","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","encode","utf8write","IE_SaveFile","Blob","msSaveBlob","saveAs","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","parseDate","fixdate","cc2str","debomit","TextDecoder","decode","dup","fuzzynum","wt","lower_months","fuzzydate","getYear","zip_add_file","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","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","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","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","bs","av","write_double_le","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","_C","_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","run","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","auto","nTS","tint","rgb","VT_I2","VT_I4","VT_STRING","DocSummaryPIDDSI","SummaryPIDSI","rgbify","XLSIcv","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","metadata","styles","write_ct","type2ct","evert_arr","xsd","xsi","f1","bookType","f2","f3","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","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","dcterms","dcmitype","Props","CreatedDate","WTF","ModifiedDate","PseudoPropsPairs","write_ext_props","Application","vt","Worksheets","baseType","write_cust_props","pid","write_vt","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","write_TypedPropertyValue","write_FILETIME","XLSPSSkip","guess_property_type","write_PropertySet","RE","PIDSI","hdr","piao","pr","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","level","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","ft","vfp","l7","nrow","fpos","rlen","current_cp","codepage","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","sheet_to_dif","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","fuzzyfmla","datestr","timestr","dateNF_fix","cellText","cellNF","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","xmlns","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","DEF_MDW","MDW","px","char2width","coll","customWidth","PPI","pt","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","border","write_BrtBorder","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","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","csf_to_ods_formula","csf_to_ods_3D","browser_has_Map","get_sst_id","revarr","col_obj_w","outlineLevel","default_margins","margins","defs","right","bottom","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","ht","customHeight","write_ws_xml_data","write_ws_xml_protection","Names","Sheet","Ref","write_ws_xml_autofilter","merges","write_ws_xml_merges","margin","relc","tooltip","ignoreEC","numberStoredAsText","sqref","write_row_header","miyRw","ncolspan","lcs","caddr","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_BrtBeginMergeCells","write_COLINFOS","write_BrtColInfo","write_IGNOREECS","write_BrtCellIgnoreEC","write_HLINKS","locidx","write_BrtHLink","write_WSVIEWS2","write_BrtBeginWsView","write_SHEETPROTECT","write_BrtSheetProtection","write_ws_bin","write_BrtWsProp","cap","write_CELLTABLE","write_AUTOFILTER","write_BrtMargins","write_LEGACYDRAWING","WBPropsDef","badchars","check_ws_name","_good","check_wb","codes","check_wb_names","write_wb_xml","write_names","workbookPr","WBProps","Hidden","sheetId","Comment","localSheetId","write_BrtBundleSh","iTabID","strRelID","write_BOOKVIEWS","vistab","write_BrtBookView","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","write_BUNDLESHS","write_ws","write_cmnt","write_props_xlml","xlml_write_docprops","Custprops","BLACKLIST","xlml_write_custprops","write_name_xlml","write_ws_xlml_cell","attr","marr","_v","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","write_ws_xlml_table","objects","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","write_sty_xlml","write_names_xlml","html","PSCLSID","SI","DSI","UDI","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_Country","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","_t","Aelts","Aelti","parse_dom_table","get_computed_style","getComputedStyle","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","rdf","write_rdf","write_manifest","u8_to_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","parse_snappy_chunk","chunks","decompress_iwa_file","compress_iwa_file","frame","write_new_storage","dv","exp","mantissa","writeDecimal128LE","setFloat64","setUint32","write_old_storage","parse_TSP_Reference","write_tile_row","tri","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","setUint16","fix_opts_func","numbers","trunc","dependents","indices","packet2","x2","y2","indices_varint","ivi","mess","u8contains","docroot","packet","sheetrootref","cruidsref","oldbucket","cruids","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sstroot","sentry","sx","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","counter","header_cnt","skipHidden","blankrows","qreg","make_csv_row","rs","txt","forceQuotes","endregex","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","productsWithoutMultiBuy","downloadIcon","back","updatedPagination","forward","shouldShowResultDetails","parseSearchResultInfo","ProductSearchFilters","ClearSearchButton","FavouriteProductsFilter","UsualProductsFilter","DownloadSearchResultsButton","ProductSearchResultsTable","PaginationControls","confirmEdit","qtyInputRef","additionalCharge","_useUpdateBasketItemM2","isUpdating","_useDeleteBasketItemM2","isDeleting","editMode","setEditMode","_useState6","disableActionButtons","onClickRemoveBasketItem","onClickConfirmEdit","removedCommasFromStock","replaceAll","onClickCancelEdit","BasketQuantityInputGroup","totalLinePrice","tickIcon","crossIcon","editIcon","binIcon","discountPercentage","basketData","showBasketLines","basketLines","showCarriageLine","carriageLine","basketRow","BasketTableRow","isCarriage","totalBasketPrice","_amount$amount","_amount$totalVAT","_amount$totalAmount","amount","totalVAT","totalAmount","checkoutSlice","deliveryInformation","addressReference","purchaseOrder","address1","address2","city","county","country","contact","postcode","phoneNumber","activePages","confirmOrderModalOptions","cannotPlaceOrderModalOptions","setDeliveryInformation","setCheckoutActivePage","openConfirmOrderModal","closeConfirmOrderModal","openCannotPlaceOrderModal","closeCannotPlaceOrderModal","_checkoutSlice$action","checkout","BasketTable","OrderSummary","CannotPlaceOrderModal","customerNumber","currencyCode","addBasketHeader","postPaymentRequest","postInvoicePaymentRequest","getCountries","useAddBasketHeaderMutation","usePostPaymentRequestMutation","usePostInvoicePaymentRequestMutation","useGetCountriesQuery","_user$country","_user$country2","countries","selectedAddressRef","setSelectedAddressRef","newAddressValues","setNewAddressValues","selectedAddress","deliveryAddresses","address","handleNewAddressChange","PurchaseOrderValidationSchema","AddressValidationSchema","isNewAddress","_selectedAddress$name","_selectedAddress$addr","_selectedAddress$addr2","_selectedAddress$city","_selectedAddress$coun","_selectedAddress$coun2","_selectedAddress$post","_selectedAddress$phon","isProforma","CheckoutProgressBar","CustomerDetails","DeliveryDetails","selectedInvoices","invoices","totalRemainingAmount","viewSelectedInvoices","copyOrderModalOptions","paidInvoiceModalOptions","addSelectedInvoice","documentNumber","invoice","remainingAmount","removeSelectedInvoice","viewSelectedInvoice","openCopyOrderModal","closeCopyOrderModal","openPaidInvoiceModal","closePaidInvoiceModal","_slice$actions","_data$remainingAmount","_data$originalAmount","_data$originalAmount2","_data$remainingAmount2","isSelectedInvoice","handleClickPay","handleClickRemove","handleToggleSelected","handleClickView","checkbox_checked","checkbox_unchecked","documentType","originalAmount","postingDate","viewIcon","viewIconMobile","_data$totalRemainingA","hasInvoices","hasSelectedInvoices","InvoiceTableRow","notes","_useSearchParams2","urlQueryParams","setUrlQueryParams","submitPaymentRequest","selectedDocuments","onRedirectToPayment","documentString","documentNo","paymentMethod","account_code","currency","billing_address","first_name","last_name","line_1","post_code","payment_Checkout_Url","handleClickPayInvoices","PaidInvoiceModal","getInvoices","getInvoiceStatement","useGetInvoicesQuery","useGetInvoiceStatementMutation","_useGetInvoicesQuery","InvoiceTable","PayInvoicesTile","getOpenOrders","sortedOrders","orderNumber","localeCompare","datePartsA","orderedDate","datePartsB","getOrderTrackingInformation","copyOrder","cancelOrder","getOrderStatement","useGetOpenOrdersQuery","useLazyGetOrderTrackingInformationQuery","useCopyOrderMutation","useCancelOrderMutation","useGetOrderStatementMutation","filteredData","filterTotal","sorting","viewSelectedOrder","copyOrderEnquiryModalOptions","cancelOrderEnquiryModalOptions","orderTrackingModalOptions","trackingIds","filterOpenOrders","sortOpenOrders","sortDates","despatchDate","aParsed","moment","bParsed","setOpenOrders","_state$orders","filterValue","filtered","setFilteredOpenOrders","_state$orders2","_state$orders3","setSorting","_state$orders4","openCancelOrderModal","closeCancelOrderModal","openOrderTrackingModal","closeOrderTrackingModal","_useLazyGetOrderTrack2","handleClickTrackOrder","trackingInfo","trackingId","invoiceTotal","isTrackingAvailable","openOrder","newTab","handleTrack","_useGetOpenOrdersQuer","showOrders","handleSort","sortUp","sortDown","sortIcon","OpenOrdersTableRow","OrderTrackingModal","searchIcon","_useGetOrderConfirmat","paginationLowerIndex","OpenOrdersSearchFilter","OpenOrdersTable","ConfirmOrderModal","faxNumber","getStatement","statement","useLazyGetStatementQuery","_user$creditLimit","_user$balance","_user$statements","_useLazyGetStatementQ2","selectedStatement","setSelectedStatement","onStop","creditLimit","balance","statements","AccountDetailsTable","BalanceDetailsTable","_useChangePasswordMut2","handleChangePassword","ChangePasswordValidationSchema","oldPassword","newPassword","confirmPassword","ChangePassword","_viewInvoice$original","_viewInvoice$remainin","viewInvoice","_useGetInvoiceStateme2","fetchHtml","handleClickDownload","invoiceDetails","_state$account$viewSe","itemNo","lineDiscount","unitPrice","totalInvoiceAmount","_useCopyOrderMutation2","handleCopyOrder","cartIcon","onClickCopyOrder","TransactionDetails","TransactionTable","CopyOrderModal","_viewOrder$amount","_viewOrder$vatAmount","_viewOrder$invoiceTot","viewOrder","_useGetOrderStatement2","vatAmount","openOrderDetails","_state$openOrder$view","openOrderLine","quantityShipped","totalOrderAmount","copyOrderEnquiry","orderToCopy","_useCancelOrderMutati2","cancelOrderEnquiry","orderToCancel","handleCancelOrder","onClickCancelOrder","CopyOrderEnquiryModal","CancelOrderModal","OrderEnquiryDetails","OrderEnquiryTable","deliveryInfo","upIcon","downIcon","ReviewTableRow","ReviewTable","addBasketHeaderPost","_useSubmitBasketMutat2","handlePlaceOrder","onSubmitOrder","externalDocNo","deliveryCode","postCode","phoneNo","shipping_address","line_2","DeliveryInformationCollapsible","ReviewOrderCollapsible","TermsAndConditionsCollapsible","_window$location","UNSAFE_mapRouteProperties","createBrowserRouter","App","LoginPage","RedirectSSOPage","RequireAuth","HomePage","MyAccountPage","ViewTransactionPage","OpenOrdersPage","OpenOrderEnquiryPage","MyDetailsPage","ChangePasswordPage","MyBasket","DeliveryInformationPage","ReviewOrderPage","OrderProductsPage","KEY_PREFIX","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","autoMergeLevel1","inboundState","originalState","reducedState","debug","createPersistoid","whitelist","storageKey","keyPrefix","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","clearInterval","endState","subState","transformer","in","onWriteFail","passWhitelistBlacklist","setInterval","getStoredState","deserialize","defaultDeserialize","rawState","serial","warnIfRemoveError","_arrayWithoutHoles","_nonIterableSpread","registry","bootstrapped","persistorReducer","firstIndex","authPersistConfig","_combineReducers","accountReducer","baseReducer","stateReconciler","defaultGetStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","rehydrate","register","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","persistReducer","authReducer","layoutReducer","orderReducer","openOrderReducer","checkoutReducer","rootReducer","curriedGetDefaultMiddleware","devTools","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","compose2","trace","defaultEnhancers","storeEnhancers","configureStore","persistor","boostrappedCb","_pStore","rehydrateAction","purge","purgeResult","flushResult","pause","manualPersist","persistStore","PersistGate","_PureComponent","_getPrototypeOf2","_possibleConstructorReturn","onBeforeLift","finally","_unsubscribe","handlePersistorState","loading","ReactDOM","getElementById"],"sourceRoot":""}