{"version":3,"file":"static/js/main.039296f5.js","mappings":"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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,cAAejlB,EAAEw6F,GACpC,IAAe,CAAEv1E,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB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aACL,IAAK,UACL,IAAK,OACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,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,IA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L,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,E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","sources":["../node_modules/classnames/index.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/json2mq/index.js","../node_modules/lodash.debounce/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.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-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.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/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/void-elements/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","serviceWorkerRegistration.js","reportWebVitals.js","../node_modules/xlsx/xlsx.mjs","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","axiosConfig.js","pages/admin-panel.js","constants/countries.js","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","../node_modules/src/useInView.tsx","../node_modules/html-parse-stringify/src/parse.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/index.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","constants/speakers.js","constants/agenda.js","constants/welcome-guests.js","../node_modules/clsx/dist/clsx.m.js","constants/speakers2024.js","components/backgroundVideo.js","constants/agenda2024.js","constants/moderators.js","pages/home.js","pages/login.js","../node_modules/i18next/dist/esm/i18next.js","i18n.js","components/footer.js","components/navbar.js","pages/check-in.js","pages/home2023.js","pages/logistic-travel.js","components/layout.js","App.js","index.js"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @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;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = exports.extractObject = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","/**\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} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\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>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"eb134044\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"resortsdevelopment:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (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__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkresortsdevelopment\"] = self[\"webpackChunkresortsdevelopment\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\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*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if(!requestHeaders.getContentType(/^\\s*multipart\\/form-data/)){\n requestHeaders.setContentType('multipart/form-data'); // mobile/desktop app frameworks\n } else if(utils.isString(contentType = requestHeaders.getContentType())){\n // fix semicolon duplication issue for ReactNative FormData implementation\n requestHeaders.setContentType(contentType.replace(/^\\s*(multipart\\/form-data);+/, '$1'))\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n // regarding CVE-2023-45857 config.withCredentials condition was removed temporarily\n const xsrfValue = isURLSameOrigin(fullPath) && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from \"axios\";\r\n\r\nconst instance = axios.create();\r\n\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n if (error.response && error.response.status === 401) {\r\n window.location.href = \"/admin-login\";\r\n localStorage.setItem(\"token\", \"\");\r\n }\r\n\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { useEffect, useState } from \"react\";\r\nimport RefreshIcon from \"../assets/images/refresh.png\";\r\n\r\nimport Xls from \"../assets/images/xls.png\";\r\nimport * as XLSX from \"xlsx\";\r\nimport axios from \"../axiosConfig\";\r\n\r\nfunction AdminPanel() {\r\n const [tabledata, setTabledata] = useState([]);\r\n const resortsDevelopmentData = async () => {\r\n try {\r\n const token = localStorage.getItem(\"token\"); // Retrieve the token from localStorage or your storage mechanism\r\n\r\n const response = await axios.get(\"api/home/GetRegistrationInfo\", {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n\r\n if (response.status !== 200) {\r\n throw new Error(`Request failed with status ${response.status}`);\r\n }\r\n\r\n setTabledata(response.data);\r\n } catch (error) {\r\n console.error(\"Error:\", error);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n resortsDevelopmentData();\r\n }, []);\r\n\r\n const exportToExcel = () => {\r\n const table = document.getElementById(\"data-table\");\r\n const ws = XLSX.utils.table_to_sheet(table);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, \"Sheet1\");\r\n XLSX.writeFile(wb, \"info\" + \".xlsx\");\r\n };\r\n\r\n useEffect(() => {\r\n const token = localStorage.getItem(\"token\");\r\n if (token) {\r\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\r\n }\r\n }, []);\r\n\r\n const hasAttendedAmount = tabledata?.filter(\r\n (x) => x.hasAttended === true\r\n )?.length;\r\n\r\n return (\r\n \r\n \r\n \r\n Download{\" \"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tabledata?.map((x, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
#NameSurnameCountryOrganizationPositionMobileNumberEmailHas attended
{index + 1}{x.name}{x.surname}{x.country}{x.organization}{x.position}{x.mobileNumber}{x.email}{x.hasAttended ? \"Yes\" : \"No\"}
\r\n \r\n
\r\n
\r\n

Total Amount: {tabledata?.length}

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

\r\n Total Number of attendees: {hasAttendedAmount}\r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default AdminPanel;\r\n","export const countriesList = [\r\n {\r\n id: 1,\r\n nameEN: \"ANDORRA\",\r\n nameGE: \"ანდორა\",\r\n emoji: \"🇦🇩\",\r\n code: \"+376\",\r\n shortName: \"AD\",\r\n },\r\n {\r\n id: 2,\r\n nameEN: \"UNITED ARAB EMIRATES\",\r\n nameGE: \"არაბთა გაერთიანებული საამიროები\",\r\n emoji: \"🇦🇪\",\r\n code: \"+971\",\r\n shortName: \"AE\",\r\n },\r\n {\r\n id: 3,\r\n nameEN: \"AFGHANISTAN\",\r\n nameGE: \"ავღანეთი\",\r\n emoji: \"🇦🇫\",\r\n code: \"+93\",\r\n shortName: \"AF\",\r\n },\r\n {\r\n id: 4,\r\n nameEN: \"ANTIGUA AND BARBUDA\",\r\n nameGE: \"ანტიგუა-ბარბუდა\",\r\n emoji: \"🇦🇬\",\r\n code: \"+1268\",\r\n shortName: \"AG\",\r\n },\r\n {\r\n id: 5,\r\n nameEN: \"ANGUILLA\",\r\n nameGE: \"ანგილია\",\r\n emoji: \"🇦🇮\",\r\n code: \"+1264\",\r\n shortName: \"AI\",\r\n },\r\n {\r\n id: 6,\r\n nameEN: \"ALBANIA\",\r\n nameGE: \"ალბანეთი\",\r\n emoji: \"🇦🇱\",\r\n code: \"+355\",\r\n shortName: \"AL\",\r\n },\r\n {\r\n id: 7,\r\n nameEN: \"ARMENIA\",\r\n nameGE: \"სომხეთი\",\r\n emoji: \"🇦🇲\",\r\n code: \"+374\",\r\n shortName: \"AM\",\r\n },\r\n {\r\n id: 8,\r\n nameEN: \"NETHERLANDS ANTILLES\",\r\n nameGE: \"ნიდერლანდების ანტილიები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"AN\",\r\n },\r\n {\r\n id: 9,\r\n nameEN: \"ANGOLA\",\r\n nameGE: \"ანგოლა\",\r\n emoji: \"🇦🇴\",\r\n code: \"+244\",\r\n shortName: \"AO\",\r\n },\r\n {\r\n id: 10,\r\n nameEN: \"ANTARCTICA\",\r\n nameGE: \"ანტარქტიდა\",\r\n emoji: \"🇦🇶\",\r\n code: \"+672\",\r\n shortName: \"AQ\",\r\n },\r\n {\r\n id: 11,\r\n nameEN: \"ARGENTINA\",\r\n nameGE: \"არგენტინა\",\r\n emoji: \"🇦🇷\",\r\n code: \"+54\",\r\n shortName: \"AR\",\r\n },\r\n {\r\n id: 12,\r\n nameEN: \"AMERICAN SAMOA\",\r\n nameGE: \"ამერიკის სამოა\",\r\n emoji: \"🇦🇸\",\r\n code: \"+1684\",\r\n shortName: \"AS\",\r\n },\r\n {\r\n id: 13,\r\n nameEN: \"AUSTRIA\",\r\n nameGE: \"ავსტრია\",\r\n emoji: \"🇦🇹\",\r\n code: \"+43\",\r\n shortName: \"AT\",\r\n },\r\n {\r\n id: 14,\r\n nameEN: \"AUSTRALIA\",\r\n nameGE: \"ავსტრალია\",\r\n emoji: \"🇦🇺\",\r\n code: \"+61\",\r\n shortName: \"AU\",\r\n },\r\n {\r\n id: 15,\r\n nameEN: \"ARUBA\",\r\n nameGE: \"არუბა\",\r\n emoji: \"🇦🇼\",\r\n code: \"+297\",\r\n shortName: \"AW\",\r\n },\r\n {\r\n id: 16,\r\n nameEN: \"ALAND ISLANDS\",\r\n nameGE: \"ალანდის კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"AX\",\r\n },\r\n {\r\n id: 17,\r\n nameEN: \"AZERBAIJAN\",\r\n nameGE: \"აზერბაიჯანი\",\r\n emoji: \"🇦🇿\",\r\n code: \"+994\",\r\n shortName: \"AZ\",\r\n },\r\n {\r\n id: 18,\r\n nameEN: \"BOSNIA AND HERZEGOVINA\",\r\n nameGE: \"ბოსნია-ჰერცოგოვინა\",\r\n emoji: \"🇧🇦\",\r\n code: \"+387\",\r\n shortName: \"BA\",\r\n },\r\n {\r\n id: 19,\r\n nameEN: \"BARBADOS\",\r\n nameGE: \"ბარბადოსი\",\r\n emoji: \"🇧🇧\",\r\n code: \"+1\",\r\n shortName: \"BB\",\r\n },\r\n {\r\n id: 20,\r\n nameEN: \"BANGLADESH\",\r\n nameGE: \"ბანგლადეში\",\r\n emoji: \"🇧🇩\",\r\n code: \"+880\",\r\n shortName: \"BD\",\r\n },\r\n {\r\n id: 21,\r\n nameEN: \"BELGIUM\",\r\n nameGE: \"ბელგია\",\r\n emoji: \"🇧🇪\",\r\n code: \"+32\",\r\n shortName: \"BE\",\r\n },\r\n {\r\n id: 22,\r\n nameEN: \"BURKINA FASO\",\r\n nameGE: \"ბურკინა ფასო\",\r\n emoji: \"🇧🇫\",\r\n code: \"+226\",\r\n shortName: \"BF\",\r\n },\r\n {\r\n id: 23,\r\n nameEN: \"BULGARIA\",\r\n nameGE: \"ბულგარეთი\",\r\n emoji: \"🇧🇬\",\r\n code: \"+359\",\r\n shortName: \"BG\",\r\n },\r\n {\r\n id: 24,\r\n nameEN: \"BAHRAIN\",\r\n nameGE: \"ბაჰრეინი\",\r\n emoji: \"🇧🇭\",\r\n code: \"+973\",\r\n shortName: \"BH\",\r\n },\r\n {\r\n id: 25,\r\n nameEN: \"BURUNDI\",\r\n nameGE: \"ბურუნდი\",\r\n emoji: \"🇧🇮\",\r\n code: \"+257\",\r\n shortName: \"BI\",\r\n },\r\n {\r\n id: 26,\r\n nameEN: \"BENIN\",\r\n nameGE: \"ბენინი\",\r\n emoji: \"🇧🇯\",\r\n code: \"+229\",\r\n shortName: \"BJ\",\r\n },\r\n {\r\n id: 27,\r\n nameEN: \"SAINT BARTHიLEMY\",\r\n nameGE: \"სენ-ბართელმი\",\r\n emoji: \"🇧🇱\",\r\n code: \"+590\",\r\n shortName: \"BL\",\r\n },\r\n {\r\n id: 28,\r\n nameEN: \"BERMUDA\",\r\n nameGE: \"ბერმუდა\",\r\n emoji: \"🇧🇲\",\r\n code: \"+1\",\r\n shortName: \"BM\",\r\n },\r\n {\r\n id: 29,\r\n nameEN: \"BRUNEI DARUSSALAM\",\r\n nameGE: \"ბრუნეი დარუსალამი\",\r\n emoji: \"🇧🇳\",\r\n code: \"+673\",\r\n shortName: \"BN\",\r\n },\r\n {\r\n id: 30,\r\n nameEN: \"BOLIVIA\",\r\n nameGE: \"ბოლივია\",\r\n emoji: \"🇧🇴\",\r\n code: \"+591\",\r\n shortName: \"BO\",\r\n },\r\n {\r\n id: 31,\r\n nameEN: \"BONAIRE, ST. EUSTATIUS, AND SABA\",\r\n nameGE: \"ბონაირე, სინტ ეუსტატია და საბა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"BQ\",\r\n },\r\n {\r\n id: 32,\r\n nameEN: \"BRAZIL\",\r\n nameGE: \"ბრაზილია\",\r\n emoji: \"🇧🇷\",\r\n code: \"+55\",\r\n shortName: \"BR\",\r\n },\r\n {\r\n id: 33,\r\n nameEN: \"BAHAMAS\",\r\n nameGE: \"ბაჰამის კუნძულები\",\r\n emoji: \"🇧🇸\",\r\n code: \"+1\",\r\n shortName: \"BS\",\r\n },\r\n {\r\n id: 34,\r\n nameEN: \"BHUTAN\",\r\n nameGE: \"ბუტანი\",\r\n emoji: \"🇧🇹\",\r\n code: \"+975\",\r\n shortName: \"BT\",\r\n },\r\n {\r\n id: 35,\r\n nameEN: \"BOUVET ISLAND\",\r\n nameGE: \"ბუვეტის კუნძული\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"BV\",\r\n },\r\n {\r\n id: 36,\r\n nameEN: \"BOTSWANA\",\r\n nameGE: \"ბოტსვანა\",\r\n emoji: \"🇧🇼\",\r\n code: \"+267\",\r\n shortName: \"BW\",\r\n },\r\n {\r\n id: 37,\r\n nameEN: \"BELARUS\",\r\n nameGE: \"ბელარუსი\",\r\n emoji: \"🇧🇾\",\r\n code: \"+375\",\r\n shortName: \"BY\",\r\n },\r\n {\r\n id: 38,\r\n nameEN: \"BELIZE\",\r\n nameGE: \"ბელიზი\",\r\n emoji: \"🇧🇿\",\r\n code: \"+501\",\r\n shortName: \"BZ\",\r\n },\r\n {\r\n id: 39,\r\n nameEN: \"CANADA\",\r\n nameGE: \"კანადა\",\r\n emoji: \"🇨🇦\",\r\n code: \"+1\",\r\n shortName: \"CA\",\r\n },\r\n {\r\n id: 40,\r\n nameEN: \"COCOS (KEELING) ISLANDS\",\r\n nameGE: \"ქოქოსის (კილინგის) კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"CC\",\r\n },\r\n {\r\n id: 41,\r\n nameEN: \"CONGO, THE DEMOCRATIC REPUBLIC OF THE (formerly Zaire)\",\r\n nameGE: \"კონგოს დემოკრატიული რესპუბლიკა\",\r\n emoji: \"🇨🇩\",\r\n code: \"+243\",\r\n shortName: \"CD\",\r\n },\r\n {\r\n id: 42,\r\n nameEN: \"CENTRAL AFRICAN REPUBLIC\",\r\n nameGE: \"ცენტრალური აფრიკის რესპუბლიკა\",\r\n emoji: \"🇨🇫\",\r\n code: \"+236\",\r\n shortName: \"CF\",\r\n },\r\n {\r\n id: 43,\r\n nameEN: \"CONGO, REPUBLIC OF\",\r\n nameGE: \"კონგო\",\r\n emoji: \"🇨🇬\",\r\n code: \"+242\",\r\n shortName: \"CG\",\r\n },\r\n {\r\n id: 44,\r\n nameEN: \"SWITZERLAND (Confederation of Helvetia)\",\r\n nameGE: \"შვეიცარია\",\r\n emoji: \"🇨🇭\",\r\n code: \"+41\",\r\n shortName: \"CH\",\r\n },\r\n {\r\n id: 45,\r\n nameEN: \"CტTE D'IVOIRE (Ivory Coast)\",\r\n nameGE: \"კოტდივუარი\",\r\n emoji: \"🇨🇮\",\r\n code: \"+225\",\r\n shortName: \"CI\",\r\n },\r\n {\r\n id: 46,\r\n nameEN: \"COOK ISLANDS\",\r\n nameGE: \"კუკის კუნძულები\",\r\n emoji: \"🇨🇰\",\r\n code: \"+682\",\r\n shortName: \"CK\",\r\n },\r\n {\r\n id: 47,\r\n nameEN: \"CHILE\",\r\n nameGE: \"ჩილე\",\r\n emoji: \"🇨🇱\",\r\n code: \"+56\",\r\n shortName: \"CL\",\r\n },\r\n {\r\n id: 48,\r\n nameEN: \"CAMEROON\",\r\n nameGE: \"კამერუნი\",\r\n emoji: \"🇨🇲\",\r\n code: \"+237\",\r\n shortName: \"CM\",\r\n },\r\n {\r\n id: 49,\r\n nameEN: \"CHINA\",\r\n nameGE: \"ჩინეთი\",\r\n emoji: \"🇨🇳\",\r\n code: \"+86\",\r\n shortName: \"CN\",\r\n },\r\n {\r\n id: 50,\r\n nameEN: \"COLOMBIA\",\r\n nameGE: \"კოლუმბია\",\r\n emoji: \"🇨🇴\",\r\n code: \"+57\",\r\n shortName: \"CO\",\r\n },\r\n {\r\n id: 51,\r\n nameEN: \"COSTA RICA\",\r\n nameGE: \"კოსტა-რიკა\",\r\n emoji: \"🇨🇷\",\r\n code: \"+506\",\r\n shortName: \"CR\",\r\n },\r\n {\r\n id: 52,\r\n nameEN: \"CUBA\",\r\n nameGE: \"კუბა\",\r\n emoji: \"🇨🇺\",\r\n code: \"+53\",\r\n shortName: \"CU\",\r\n },\r\n {\r\n id: 53,\r\n nameEN: \"CAPE VERDE\",\r\n nameGE: \"კაბო ვერდე\",\r\n emoji: \"🇨🇻\",\r\n code: \"+238\",\r\n shortName: \"CV\",\r\n },\r\n {\r\n id: 54,\r\n nameEN: \"CURACAO\",\r\n nameGE: \"კურასაო\",\r\n emoji: \"🇨🇼\",\r\n code: \"+599\",\r\n shortName: \"CW\",\r\n },\r\n {\r\n id: 55,\r\n nameEN: \"CHRISTMAS ISLAND\",\r\n nameGE: \"შობის კუნძული\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"CX\",\r\n },\r\n {\r\n id: 56,\r\n nameEN: \"CYPRUS\",\r\n nameGE: \"კვიპროსი\",\r\n emoji: \"🇨🇾\",\r\n code: \"+357\",\r\n shortName: \"CY\",\r\n },\r\n {\r\n id: 57,\r\n nameEN: \"CZECH REPUBLIC\",\r\n nameGE: \"ჩეხეთის რესპუბლიკა\",\r\n emoji: \"🇨🇿\",\r\n code: \"+420\",\r\n shortName: \"CZ\",\r\n },\r\n {\r\n id: 58,\r\n nameEN: \"GERMANY (Deutschland)\",\r\n nameGE: \"გერმანია\",\r\n emoji: \"🇩🇪\",\r\n code: \"+49\",\r\n shortName: \"DE\",\r\n },\r\n {\r\n id: 59,\r\n nameEN: \"DJIBOUTI\",\r\n nameGE: \"ჯიბუტი\",\r\n emoji: \"🇩🇯\",\r\n code: \"+253\",\r\n shortName: \"DJ\",\r\n },\r\n {\r\n id: 60,\r\n nameEN: \"DENMARK\",\r\n nameGE: \"დანია\",\r\n emoji: \"🇩🇰\",\r\n code: \"+45\",\r\n shortName: \"DK\",\r\n },\r\n {\r\n id: 61,\r\n nameEN: \"DOMINICA\",\r\n nameGE: \"დომინიკა\",\r\n emoji: \"🇩🇲\",\r\n code: \"+1\",\r\n shortName: \"DM\",\r\n },\r\n {\r\n id: 62,\r\n nameEN: \"DOMINICAN REPUBLIC\",\r\n nameGE: \"დომინიკელთა რესპუბლიკა\",\r\n emoji: \"🇩🇴\",\r\n code: \"+1\",\r\n shortName: \"DO\",\r\n },\r\n {\r\n id: 63,\r\n nameEN: \"ALGERIA (El Djazaïr)\",\r\n nameGE: \"ალჟირი\",\r\n emoji: \"🇩🇿\",\r\n code: \"+213\",\r\n shortName: \"DZ\",\r\n },\r\n {\r\n id: 64,\r\n nameEN: \"ECUADOR\",\r\n nameGE: \"ეკვადორი\",\r\n emoji: \"🇪🇨\",\r\n code: \"+593\",\r\n shortName: \"EC\",\r\n },\r\n {\r\n id: 65,\r\n nameEN: \"ESTONIA\",\r\n nameGE: \"ესტონეთი\",\r\n emoji: \"🇪🇪\",\r\n code: \"+372\",\r\n shortName: \"EE\",\r\n },\r\n {\r\n id: 66,\r\n nameEN: \"EGYPT\",\r\n nameGE: \"ეგვიპტე\",\r\n emoji: \"🇪🇬\",\r\n code: \"+20\",\r\n shortName: \"EG\",\r\n },\r\n {\r\n id: 67,\r\n nameEN: \"WESTERN SAHARA (formerly Spanish Sahara)\",\r\n nameGE: \"დასავლეთი საჰარა\",\r\n emoji: \"🇪🇭\",\r\n code: \"+212\",\r\n shortName: \"EH\",\r\n },\r\n {\r\n id: 68,\r\n nameEN: \"ERITREA\",\r\n nameGE: \"ერიტრეა\",\r\n emoji: \"🇪🇷\",\r\n code: \"+291\",\r\n shortName: \"ER\",\r\n },\r\n {\r\n id: 69,\r\n nameEN: \"SPAIN (España)\",\r\n nameGE: \"ესპანეთი\",\r\n emoji: \"🇪🇸\",\r\n code: \"+34\",\r\n shortName: \"ES\",\r\n },\r\n {\r\n id: 70,\r\n nameEN: \"ETHIOPIA\",\r\n nameGE: \"ეთიოპია\",\r\n emoji: \"🇪🇹\",\r\n code: \"+251\",\r\n shortName: \"ET\",\r\n },\r\n {\r\n id: 71,\r\n nameEN: \"FINLAND\",\r\n nameGE: \"ფინეთი\",\r\n emoji: \"🇫🇮\",\r\n code: \"+358\",\r\n shortName: \"FI\",\r\n },\r\n {\r\n id: 72,\r\n nameEN: \"FIJI\",\r\n nameGE: \"ფიჯი\",\r\n emoji: \"🇫🇯\",\r\n code: \"+679\",\r\n shortName: \"FJ\",\r\n },\r\n {\r\n id: 73,\r\n nameEN: \"FALKLAND ISLANDS (MALVINAS)\",\r\n nameGE: \"ფოლკლენდის (მალვინის) კუნძულები\",\r\n emoji: \"🇫🇰\",\r\n code: \"+500\",\r\n shortName: \"FK\",\r\n },\r\n {\r\n id: 74,\r\n nameEN: \"MICRONESIA (Federated States of Micronesia)\",\r\n nameGE: \"მიკრონეზია (ფედერალური შტატები)\",\r\n emoji: \"🇫🇲\",\r\n code: \"+691\",\r\n shortName: \"FM\",\r\n },\r\n {\r\n id: 75,\r\n nameEN: \"FAEROE ISLANDS\",\r\n nameGE: \"ფარერის კუნძულები\",\r\n emoji: \"🇫🇴\",\r\n code: \"+298\",\r\n shortName: \"FO\",\r\n },\r\n {\r\n id: 76,\r\n nameEN: \"FRANCE\",\r\n nameGE: \"საფრანგეთი\",\r\n emoji: \"🇫🇷\",\r\n code: \"+33\",\r\n shortName: \"FR\",\r\n },\r\n {\r\n id: 77,\r\n nameEN: \"GABON\",\r\n nameGE: \"გაბონი\",\r\n emoji: \"🇬🇦\",\r\n code: \"+241\",\r\n shortName: \"GA\",\r\n },\r\n {\r\n id: 78,\r\n nameEN: \"GREAT BRITAIN (United Kingdom)\",\r\n nameGE: \"გაერთიანებული სამეფო\",\r\n emoji: \"🇬🇧\",\r\n code: \"+44\",\r\n shortName: \"GB\",\r\n },\r\n {\r\n id: 79,\r\n nameEN: \"GRENADA\",\r\n nameGE: \"გრენადა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"GD\",\r\n },\r\n {\r\n id: 80,\r\n nameEN: \"GEORGIA\",\r\n nameGE: \"საქართველო\",\r\n emoji: \"🇬🇪\",\r\n code: \"+995\",\r\n shortName: \"GE\",\r\n },\r\n {\r\n id: 81,\r\n nameEN: \"FRENCH GUIANA\",\r\n nameGE: \"საფრანგეთის გვიანა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"GF\",\r\n },\r\n {\r\n id: 82,\r\n nameEN: \"GUERNSEY\",\r\n nameGE: \"გერნსი\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"GG\",\r\n },\r\n {\r\n id: 83,\r\n nameEN: \"GHANA\",\r\n nameGE: \"განა\",\r\n emoji: \"🇬🇭\",\r\n code: \"+233\",\r\n shortName: \"GH\",\r\n },\r\n {\r\n id: 84,\r\n nameEN: \"GIBRALTAR\",\r\n nameGE: \"გიბრალტარი\",\r\n emoji: \"🇬🇮\",\r\n code: \"+350\",\r\n shortName: \"GI\",\r\n },\r\n {\r\n id: 85,\r\n nameEN: \"GREENLAND\",\r\n nameGE: \"გრენლანდია\",\r\n emoji: \"🇬🇱\",\r\n code: \"+299\",\r\n shortName: \"GL\",\r\n },\r\n {\r\n id: 86,\r\n nameEN: \"GAMBIA, THE\",\r\n nameGE: \"გამბია\",\r\n emoji: \"🇬🇲\",\r\n code: \"+220\",\r\n shortName: \"GM\",\r\n },\r\n {\r\n id: 87,\r\n nameEN: \"GUINEA\",\r\n nameGE: \"გვინეა\",\r\n emoji: \"🇬🇳\",\r\n code: \"+224\",\r\n shortName: \"GN\",\r\n },\r\n {\r\n id: 88,\r\n nameEN: \"GUADELOUPE\",\r\n nameGE: \"გვადელუპა\",\r\n emoji: \"🇬🇵\",\r\n code: \"+590\",\r\n shortName: \"GP\",\r\n },\r\n {\r\n id: 89,\r\n nameEN: \"EQUATORIAL GUINEA\",\r\n nameGE: \"ეკვატორული გვინეა\",\r\n emoji: \"🇬🇶\",\r\n code: \"+240\",\r\n shortName: \"GQ\",\r\n },\r\n {\r\n id: 90,\r\n nameEN: \"GREECE\",\r\n nameGE: \"საბერძნეთი\",\r\n emoji: \"🇬🇷\",\r\n code: \"+30\",\r\n shortName: \"GR\",\r\n },\r\n {\r\n id: 91,\r\n nameEN: \"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS\",\r\n nameGE: \"სამხრეთ ჯორჯია და სამხრეთ სენდვიჩის კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"GS\",\r\n },\r\n {\r\n id: 92,\r\n nameEN: \"GUATEMALA\",\r\n nameGE: \"გვატემალა\",\r\n emoji: \"🇬🇹\",\r\n code: \"+502\",\r\n shortName: \"GT\",\r\n },\r\n {\r\n id: 93,\r\n nameEN: \"GUAM\",\r\n nameGE: \"გუამი\",\r\n emoji: \"🇬🇺\",\r\n code: \"+1671\",\r\n shortName: \"GU\",\r\n },\r\n {\r\n id: 94,\r\n nameEN: \"GUINEA-BISSAU\",\r\n nameGE: \"გვინეა-ბისაუ\",\r\n emoji: \"🇬🇼\",\r\n code: \"+245\",\r\n shortName: \"GW\",\r\n },\r\n {\r\n id: 95,\r\n nameEN: \"GUYANA\",\r\n nameGE: \"გაიანა\",\r\n emoji: \"🇬🇾\",\r\n code: \"+592\",\r\n shortName: \"GY\",\r\n },\r\n {\r\n id: 96,\r\n nameEN: \"HONG KONG (Special Administrative Region of China)\",\r\n nameGE: \"ჰონკონგი\",\r\n emoji: \"🇭🇰\",\r\n code: \"+852\",\r\n shortName: \"HK\",\r\n },\r\n {\r\n id: 97,\r\n nameEN: \"HEARD ISLAND AND MCDONALD ISLANDS\",\r\n nameGE: \"ჰერდისა და მაკდონალდის კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"HM\",\r\n },\r\n {\r\n id: 98,\r\n nameEN: \"HONDURAS\",\r\n nameGE: \"ჰონდურასი\",\r\n emoji: \"🇭🇳\",\r\n code: \"+504\",\r\n shortName: \"HN\",\r\n },\r\n {\r\n id: 99,\r\n nameEN: \"CROATIA (Hrvatska)\",\r\n nameGE: \"ხორვატია\",\r\n emoji: \"🇭🇷\",\r\n code: \"+385\",\r\n shortName: \"HR\",\r\n },\r\n {\r\n id: 100,\r\n nameEN: \"HAITI\",\r\n nameGE: \"ჰაიტი\",\r\n emoji: \"🇭🇹\",\r\n code: \"+509\",\r\n shortName: \"HT\",\r\n },\r\n {\r\n id: 101,\r\n nameEN: \"HUNGARY\",\r\n nameGE: \"უნგრეთი\",\r\n emoji: \"🇭🇺\",\r\n code: \"+36\",\r\n shortName: \"HU\",\r\n },\r\n {\r\n id: 102,\r\n nameEN: \"INDONESIA\",\r\n nameGE: \"ინდონეზია\",\r\n emoji: \"🇮🇩\",\r\n code: \"+62\",\r\n shortName: \"ID\",\r\n },\r\n {\r\n id: 103,\r\n nameEN: \"IRELAND\",\r\n nameGE: \"ირლანდია\",\r\n emoji: \"🇮🇪\",\r\n code: \"+353\",\r\n shortName: \"IE\",\r\n },\r\n {\r\n id: 104,\r\n nameEN: \"ISRAEL\",\r\n nameGE: \"ისრაელი\",\r\n emoji: \"🇮🇱\",\r\n code: \"+972\",\r\n shortName: \"IL\",\r\n },\r\n {\r\n id: 105,\r\n nameEN: \"ISLE OF MAN\",\r\n nameGE: \"მენის კუნძულები\",\r\n emoji: \"🇮🇲\",\r\n code: \"+44\",\r\n shortName: \"IM\",\r\n },\r\n {\r\n id: 106,\r\n nameEN: \"INDIA\",\r\n nameGE: \"ინდოეთი\",\r\n emoji: \"🇮🇳\",\r\n code: \"+91\",\r\n shortName: \"IN\",\r\n },\r\n {\r\n id: 107,\r\n nameEN: \"BRITISH INDIAN OCEAN TERRITORY\",\r\n nameGE: \"ბრიტანეთის ტერიტორია ინდოეთის ოკეანეში\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"IO\",\r\n },\r\n {\r\n id: 108,\r\n nameEN: \"IRAQ\",\r\n nameGE: \"ერაყი\",\r\n emoji: \"🇮🇶\",\r\n code: \"+964\",\r\n shortName: \"IQ\",\r\n },\r\n {\r\n id: 109,\r\n nameEN: \"IRAN (Islamic Republic of Iran)\",\r\n nameGE: \"ირანი (ისლამური რესპუბლიკა)\",\r\n emoji: \"🇮🇷\",\r\n code: \"+98\",\r\n shortName: \"IR\",\r\n },\r\n {\r\n id: 110,\r\n nameEN: \"ICELAND\",\r\n nameGE: \"ისლანდია\",\r\n emoji: \"🇮🇸\",\r\n code: \"+354\",\r\n shortName: \"IS\",\r\n },\r\n {\r\n id: 111,\r\n nameEN: \"ITALY\",\r\n nameGE: \"იტალია\",\r\n emoji: \"🇮🇹\",\r\n code: \"+39\",\r\n shortName: \"IT\",\r\n },\r\n {\r\n id: 112,\r\n nameEN: \"JERSEY\",\r\n nameGE: \"ჯერსი\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"JE\",\r\n },\r\n {\r\n id: 113,\r\n nameEN: \"JAMAICA\",\r\n nameGE: \"იამაიკა\",\r\n emoji: \"🇯🇲\",\r\n code: \"+1\",\r\n shortName: \"JM\",\r\n },\r\n {\r\n id: 114,\r\n nameEN: \"JORDAN (Hashemite Kingdom of Jordan)\",\r\n nameGE: \"იორდანია\",\r\n emoji: \"🇯🇴\",\r\n code: \"+962\",\r\n shortName: \"JO\",\r\n },\r\n {\r\n id: 115,\r\n nameEN: \"JAPAN\",\r\n nameGE: \"იაპონია\",\r\n emoji: \"🇯🇵\",\r\n code: \"+81\",\r\n shortName: \"JP\",\r\n },\r\n {\r\n id: 116,\r\n nameEN: \"KENYA\",\r\n nameGE: \"კენია\",\r\n emoji: \"🇰🇪\",\r\n code: \"+254\",\r\n shortName: \"KE\",\r\n },\r\n {\r\n id: 117,\r\n nameEN: \"KYRGYZSTAN\",\r\n nameGE: \"ყირგიზეთი\",\r\n emoji: \"🇰🇬\",\r\n code: \"+996\",\r\n shortName: \"KG\",\r\n },\r\n {\r\n id: 118,\r\n nameEN: \"CAMBODIA\",\r\n nameGE: \"კამბოჯა\",\r\n emoji: \"🇰🇭\",\r\n code: \"+855\",\r\n shortName: \"KH\",\r\n },\r\n {\r\n id: 119,\r\n nameEN: \"KIRIBATI\",\r\n nameGE: \"კირიბატი\",\r\n emoji: \"🇰🇮\",\r\n code: \"+686\",\r\n shortName: \"KI\",\r\n },\r\n {\r\n id: 120,\r\n nameEN: \"COMOROS\",\r\n nameGE: \"კომორები\",\r\n emoji: \"🇰🇲\",\r\n code: \"+269\",\r\n shortName: \"KM\",\r\n },\r\n {\r\n id: 121,\r\n nameEN: \"SAINT KITTS AND NEVIS\",\r\n nameGE: \"სენტ-კიტსი და ნევისი\",\r\n emoji: \"🇰🇳\",\r\n code: \"+1\",\r\n shortName: \"KN\",\r\n },\r\n {\r\n id: 122,\r\n nameEN: \"KOREA (Democratic Peoples Republic of [North] Korea)\",\r\n nameGE: \"კორეის სახალხო დემოკრატიული რესპუბლიკა\",\r\n emoji: \"🇰🇵\",\r\n code: \"+850\",\r\n shortName: \"KP\",\r\n },\r\n {\r\n id: 123,\r\n nameEN: \"KOREA (Republic of [South] Korea)\",\r\n nameGE: \"კორეის რესპუბლიკა\",\r\n emoji: \"🇰🇷\",\r\n code: \"+82\",\r\n shortName: \"KR\",\r\n },\r\n {\r\n id: 124,\r\n nameEN: \"KUWAIT\",\r\n nameGE: \"ქუვეითი\",\r\n emoji: \"🇰🇼\",\r\n code: \"+965\",\r\n shortName: \"KW\",\r\n },\r\n {\r\n id: 125,\r\n nameEN: \"CAYMAN ISLANDS\",\r\n nameGE: \"კაიმანის კუნძულები\",\r\n emoji: \"🇰🇾\",\r\n code: \"+1-345\",\r\n shortName: \"KY\",\r\n },\r\n {\r\n id: 126,\r\n nameEN: \"KAZAKHSTAN\",\r\n nameGE: \"ყაზახეთი\",\r\n emoji: \"🇰🇿\",\r\n code: \"+7\",\r\n shortName: \"KZ\",\r\n },\r\n {\r\n id: 127,\r\n nameEN: \"LAO PEOPLE'S DEMOCRATIC REPUBLIC\",\r\n nameGE: \"ლაოსის სახალხო დემოკრატიული რესპუბლიკა\",\r\n emoji: \"🇱🇦\",\r\n code: \"+856\",\r\n shortName: \"LA\",\r\n },\r\n {\r\n id: 128,\r\n nameEN: \"LEBANON\",\r\n nameGE: \"ლიბანი\",\r\n emoji: \"🇱🇧\",\r\n code: \"+961\",\r\n shortName: \"LB\",\r\n },\r\n {\r\n id: 129,\r\n nameEN: \"SAINT LUCIA\",\r\n nameGE: \"სენტ-ლუსია\",\r\n emoji: \"🇱🇨\",\r\n code: \"+1\",\r\n shortName: \"LC\",\r\n },\r\n {\r\n id: 130,\r\n nameEN: \"LIECHTENSTEIN (Fürstentum Liechtenstein)\",\r\n nameGE: \"ლიხტენშტეინი\",\r\n emoji: \"🇱🇮\",\r\n code: \"+423\",\r\n shortName: \"LI\",\r\n },\r\n {\r\n id: 131,\r\n nameEN: \"SRI LANKA (formerly Ceylon)\",\r\n nameGE: \"შრი-ლანკა\",\r\n emoji: \"🇱🇰\",\r\n code: \"+94\",\r\n shortName: \"LK\",\r\n },\r\n {\r\n id: 132,\r\n nameEN: \"LIBERIA\",\r\n nameGE: \"ლიბერია\",\r\n emoji: \"🇱🇷\",\r\n code: \"+231\",\r\n shortName: \"LR\",\r\n },\r\n {\r\n id: 133,\r\n nameEN: \"LESOTHO\",\r\n nameGE: \"ლესოტო\",\r\n emoji: \"🇱🇸\",\r\n code: \"+266\",\r\n shortName: \"LS\",\r\n },\r\n {\r\n id: 134,\r\n nameEN: \"LITHUANIA\",\r\n nameGE: \"ლიტვა\",\r\n emoji: \"🇱🇹\",\r\n code: \"+370\",\r\n shortName: \"LT\",\r\n },\r\n {\r\n id: 135,\r\n nameEN: \"LUXEMBOURG\",\r\n nameGE: \"ლუქსემბურგი\",\r\n emoji: \"🇱🇺\",\r\n code: \"+352\",\r\n shortName: \"LU\",\r\n },\r\n {\r\n id: 136,\r\n nameEN: \"LATVIA\",\r\n nameGE: \"ლატვია\",\r\n emoji: \"🇱🇻\",\r\n code: \"+371\",\r\n shortName: \"LV\",\r\n },\r\n {\r\n id: 137,\r\n nameEN: \"LIBYA (Libyan Arab Jamahirya)\",\r\n nameGE: \"ლიბია\",\r\n emoji: \"🇱🇾\",\r\n code: \"+218\",\r\n shortName: \"LY\",\r\n },\r\n {\r\n id: 138,\r\n nameEN: \"MOROCCO\",\r\n nameGE: \"მაროკო\",\r\n emoji: \"🇲🇦\",\r\n code: \"+212\",\r\n shortName: \"MA\",\r\n },\r\n {\r\n id: 139,\r\n nameEN: \"MONACO\",\r\n nameGE: \"მონაკო\",\r\n emoji: \"🇲🇨\",\r\n code: \"+377\",\r\n shortName: \"MC\",\r\n },\r\n {\r\n id: 140,\r\n nameEN: \"MOLDOVA\",\r\n nameGE: \"მოლდოვა\",\r\n emoji: \"🇲🇩\",\r\n code: \"+373\",\r\n shortName: \"MD\",\r\n },\r\n {\r\n id: 141,\r\n nameEN: \"MONTENEGRO\",\r\n nameGE: \"მონტენეგრო\",\r\n emoji: \"🇲🇪\",\r\n code: \"+382\",\r\n shortName: \"ME\",\r\n },\r\n {\r\n id: 142,\r\n nameEN: \"SAINT MARTIN (French portion)\",\r\n nameGE: \"სენ-მარტენი (საფრანგეთის ნაწილი)\",\r\n emoji: \"🇲🇫\",\r\n code: \"+1599\",\r\n shortName: \"MF\",\r\n },\r\n {\r\n id: 143,\r\n nameEN: \"MADAGASCAR\",\r\n nameGE: \"მადაგასკარი\",\r\n emoji: \"🇲🇬\",\r\n code: \"+261\",\r\n shortName: \"MG\",\r\n },\r\n {\r\n id: 144,\r\n nameEN: \"MARSHALL ISLANDS\",\r\n nameGE: \"მარშალის კუნძულები\",\r\n emoji: \"🇲🇭\",\r\n code: \"+692\",\r\n shortName: \"MH\",\r\n },\r\n {\r\n id: 145,\r\n nameEN: \"MACEDONIA (Former Yugoslav Republic of Macedonia)\",\r\n nameGE: \"მაკედონია\",\r\n emoji: \"🇲🇰\",\r\n code: \"+389\",\r\n shortName: \"MK\",\r\n },\r\n {\r\n id: 146,\r\n nameEN: \"MALI\",\r\n nameGE: \"მალი\",\r\n emoji: \"🇲🇱\",\r\n code: \"+223\",\r\n shortName: \"ML\",\r\n },\r\n {\r\n id: 147,\r\n nameEN: \"MYANMAR (formerly Burma)\",\r\n nameGE: \"მიანმა\",\r\n emoji: \"🇲🇲\",\r\n code: \"+95\",\r\n shortName: \"MM\",\r\n },\r\n {\r\n id: 148,\r\n nameEN: \"MONGOLIA\",\r\n nameGE: \"მონღოლეთი\",\r\n emoji: \"🇲🇳\",\r\n code: \"+976\",\r\n shortName: \"MN\",\r\n },\r\n {\r\n id: 149,\r\n nameEN: \"MACAO (Special Administrative Region of China)\",\r\n nameGE: \"მაკაო\",\r\n emoji: \"🇲🇴\",\r\n code: \"+853\",\r\n shortName: \"MO\",\r\n },\r\n {\r\n id: 150,\r\n nameEN: \"NORTHERN MARIANA ISLANDS\",\r\n nameGE: \"ჩრდილოეთ მარიანის კუნძულები\",\r\n emoji: \"🇲🇵\",\r\n code: \"+1670\",\r\n shortName: \"MP\",\r\n },\r\n {\r\n id: 151,\r\n nameEN: \"MARTINIQUE\",\r\n nameGE: \"მარტინიკა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"MQ\",\r\n },\r\n {\r\n id: 152,\r\n nameEN: \"MAURITANIA\",\r\n nameGE: \"მავრიტანია\",\r\n emoji: \"🇲🇷\",\r\n code: \"+222\",\r\n shortName: \"MR\",\r\n },\r\n {\r\n id: 153,\r\n nameEN: \"MONTSERRAT\",\r\n nameGE: \"მონტსერატი\",\r\n emoji: \"🇲🇸\",\r\n code: \"+1664\",\r\n shortName: \"MS\",\r\n },\r\n {\r\n id: 154,\r\n nameEN: \"MALTA\",\r\n nameGE: \"მალტა\",\r\n emoji: \"🇲🇹\",\r\n code: \"+356\",\r\n shortName: \"MT\",\r\n },\r\n {\r\n id: 155,\r\n nameEN: \"MAURITIUS\",\r\n nameGE: \"მავრიკი\",\r\n emoji: \"🇲🇺\",\r\n code: \"+230\",\r\n shortName: \"MU\",\r\n },\r\n {\r\n id: 156,\r\n nameEN: \"MALDIVES\",\r\n nameGE: \"მალდივები\",\r\n emoji: \"🇲🇻\",\r\n code: \"+960\",\r\n shortName: \"MV\",\r\n },\r\n {\r\n id: 157,\r\n nameEN: \"MALAWI\",\r\n nameGE: \"მალავი\",\r\n emoji: \"🇲🇼\",\r\n code: \"+265\",\r\n shortName: \"MW\",\r\n },\r\n {\r\n id: 158,\r\n nameEN: \"MEXICO\",\r\n nameGE: \"მექსიკა\",\r\n emoji: \"🇲🇽\",\r\n code: \"+52\",\r\n shortName: \"MX\",\r\n },\r\n {\r\n id: 159,\r\n nameEN: \"MALAYSIA\",\r\n nameGE: \"მალაიზია\",\r\n emoji: \"🇲🇾\",\r\n code: \"+60\",\r\n shortName: \"MY\",\r\n },\r\n {\r\n id: 160,\r\n nameEN: \"MOZAMBIQUE (Moçambique)\",\r\n nameGE: \"მოზამბიკი\",\r\n emoji: \"🇲🇿\",\r\n code: \"+258\",\r\n shortName: \"MZ\",\r\n },\r\n {\r\n id: 161,\r\n nameEN: \"NAMIBIA\",\r\n nameGE: \"ნამიბია\",\r\n emoji: \"🇳🇦\",\r\n code: \"+264\",\r\n shortName: \"NA\",\r\n },\r\n {\r\n id: 162,\r\n nameEN: \"NEW CALEDONIA\",\r\n nameGE: \"ახალი კალედონია\",\r\n emoji: \"🇳🇨\",\r\n code: \"+687\",\r\n shortName: \"NC\",\r\n },\r\n {\r\n id: 163,\r\n nameEN: \"NIGER\",\r\n nameGE: \"ნიგერი\",\r\n emoji: \"🇳🇪\",\r\n code: \"+227\",\r\n shortName: \"NE\",\r\n },\r\n {\r\n id: 164,\r\n nameEN: \"NORFOLK ISLAND\",\r\n nameGE: \"ნორფოლკის კუნძული\",\r\n emoji: \"🇳🇫\",\r\n code: \"+672\",\r\n shortName: \"NF\",\r\n },\r\n {\r\n id: 165,\r\n nameEN: \"NIGERIA\",\r\n nameGE: \"ნიგერია\",\r\n emoji: \"🇳🇬\",\r\n code: \"+234\",\r\n shortName: \"NG\",\r\n },\r\n {\r\n id: 166,\r\n nameEN: \"NICARAGUA\",\r\n nameGE: \"ნიკარაგუა\",\r\n emoji: \"🇳🇮\",\r\n code: \"+505\",\r\n shortName: \"NI\",\r\n },\r\n {\r\n id: 167,\r\n nameEN: \"NETHERLANDS\",\r\n nameGE: \"ნიდერლანდები\",\r\n emoji: \"🇳🇱\",\r\n code: \"+31\",\r\n shortName: \"NL\",\r\n },\r\n {\r\n id: 168,\r\n nameEN: \"NORWAY\",\r\n nameGE: \"ნორვეგია\",\r\n emoji: \"🇳🇴\",\r\n code: \"+47\",\r\n shortName: \"NO\",\r\n },\r\n {\r\n id: 169,\r\n nameEN: \"NEPAL\",\r\n nameGE: \"ნეპალი\",\r\n emoji: \"🇳🇵\",\r\n code: \"+977\",\r\n shortName: \"NP\",\r\n },\r\n {\r\n id: 170,\r\n nameEN: \"NAURU\",\r\n nameGE: \"ნაურუ\",\r\n emoji: \"🇳🇷\",\r\n code: \"+674\",\r\n shortName: \"NR\",\r\n },\r\n {\r\n id: 171,\r\n nameEN: \"NIUE\",\r\n nameGE: \"ნიუე\",\r\n emoji: \"🇳🇺\",\r\n code: \"+683\",\r\n shortName: \"NU\",\r\n },\r\n {\r\n id: 172,\r\n nameEN: \"NEW ZEALAND\",\r\n nameGE: \"ახალი ზელანდია\",\r\n emoji: \"🇳🇿\",\r\n code: \"+64\",\r\n shortName: \"NZ\",\r\n },\r\n {\r\n id: 173,\r\n nameEN: \"OMAN\",\r\n nameGE: \"ომანი\",\r\n emoji: \"🇴🇲\",\r\n code: \"+968\",\r\n shortName: \"OM\",\r\n },\r\n {\r\n id: 174,\r\n nameEN: \"PANAMA\",\r\n nameGE: \"პანამა\",\r\n emoji: \"🇵🇦\",\r\n code: \"+507\",\r\n shortName: \"PA\",\r\n },\r\n {\r\n id: 175,\r\n nameEN: \"PERU\",\r\n nameGE: \"პერუ\",\r\n emoji: \"🇵🇪\",\r\n code: \"+51\",\r\n shortName: \"PE\",\r\n },\r\n {\r\n id: 176,\r\n nameEN: \"FRENCH POLYNESIA\",\r\n nameGE: \"საფრანგეთის პოლინეზია\",\r\n emoji: \"🇵🇫\",\r\n code: \"+689\",\r\n shortName: \"PF\",\r\n },\r\n {\r\n id: 177,\r\n nameEN: \"PAPUA NEW GUINEA\",\r\n nameGE: \"პაპუა - ახალი გვინეა\",\r\n emoji: \"🇵🇬\",\r\n code: \"+675\",\r\n shortName: \"PG\",\r\n },\r\n {\r\n id: 178,\r\n nameEN: \"PHILIPPINES\",\r\n nameGE: \"ფილიპინები\",\r\n emoji: \"🇵🇭\",\r\n code: \"+63\",\r\n shortName: \"PH\",\r\n },\r\n {\r\n id: 179,\r\n nameEN: \"PAKISTAN\",\r\n nameGE: \"პაკისტანი\",\r\n emoji: \"🇵🇰\",\r\n code: \"+92\",\r\n shortName: \"PK\",\r\n },\r\n {\r\n id: 180,\r\n nameEN: \"POLAND\",\r\n nameGE: \"პოლონეთი\",\r\n emoji: \"🇵🇱\",\r\n code: \"+48\",\r\n shortName: \"PL\",\r\n },\r\n {\r\n id: 181,\r\n nameEN: \"SAINT PIERRE AND MIQUELON\",\r\n nameGE: \"სენტ-პიერი და მიქელონი\",\r\n emoji: \"🇵🇲\",\r\n code: \"+508\",\r\n shortName: \"PM\",\r\n },\r\n {\r\n id: 182,\r\n nameEN: \"PITCAIRN\",\r\n nameGE: \"პიტკერნი\",\r\n emoji: \"🇵🇳\",\r\n code: \"+870\",\r\n shortName: \"PN\",\r\n },\r\n {\r\n id: 183,\r\n nameEN: \"PUERTO RICO\",\r\n nameGE: \"პუერტო-რიკო\",\r\n emoji: \"🇵🇷\",\r\n code: \"+1\",\r\n shortName: \"PR\",\r\n },\r\n {\r\n id: 184,\r\n nameEN: \"PALESTINIAN TERRITORIES\",\r\n nameGE: \"პალესტინის სახელმწიფო\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"PS\",\r\n },\r\n {\r\n id: 185,\r\n nameEN: \"PORTUGAL\",\r\n nameGE: \"პორტუგალია\",\r\n emoji: \"🇵🇹\",\r\n code: \"+351\",\r\n shortName: \"PT\",\r\n },\r\n {\r\n id: 186,\r\n nameEN: \"PALAU\",\r\n nameGE: \"პალაუ\",\r\n emoji: \"🇵🇼\",\r\n code: \"+680\",\r\n shortName: \"PW\",\r\n },\r\n {\r\n id: 187,\r\n nameEN: \"PARAGUAY\",\r\n nameGE: \"პარაგვაი\",\r\n emoji: \"🇵🇾\",\r\n code: \"+595\",\r\n shortName: \"PY\",\r\n },\r\n {\r\n id: 188,\r\n nameEN: \"QATAR\",\r\n nameGE: \"ყატარი\",\r\n emoji: \"🇶🇦\",\r\n code: \"+974\",\r\n shortName: \"QA\",\r\n },\r\n {\r\n id: 189,\r\n nameEN: \"RიUNION\",\r\n nameGE: \"რეიუნიონი\",\r\n emoji: \"🇷🇪\",\r\n code: \"+262\",\r\n shortName: \"RE\",\r\n },\r\n {\r\n id: 190,\r\n nameEN: \"ROMANIA\",\r\n nameGE: \"რუმინეთი\",\r\n emoji: \"🇷🇴\",\r\n code: \"+40\",\r\n shortName: \"RO\",\r\n },\r\n {\r\n id: 191,\r\n nameEN: \"SERBIA (Republic of Serbia)\",\r\n nameGE: \"სერბეთი\",\r\n emoji: \"🇷🇸\",\r\n code: \"+381\",\r\n shortName: \"RS\",\r\n },\r\n {\r\n id: 192,\r\n nameEN: \"RUSSIAN FEDERATION\",\r\n nameGE: \"რუსეთის ფედერაცია\",\r\n emoji: \"🇷🇺\",\r\n code: \"+7\",\r\n shortName: \"RU\",\r\n },\r\n {\r\n id: 193,\r\n nameEN: \"RWANDA\",\r\n nameGE: \"რუანდა\",\r\n emoji: \"🇷🇼\",\r\n code: \"+250\",\r\n shortName: \"RW\",\r\n },\r\n {\r\n id: 194,\r\n nameEN: \"SAUDI ARABIA (Kingdom of Saudi Arabia)\",\r\n nameGE: \"საუდის არაბეთი\",\r\n emoji: \"🇸🇦\",\r\n code: \"+966\",\r\n shortName: \"SA\",\r\n },\r\n {\r\n id: 195,\r\n nameEN: \"SOLOMON ISLANDS\",\r\n nameGE: \"სოლომონის კუნძულები\",\r\n emoji: \"🇸🇧\",\r\n code: \"+677\",\r\n shortName: \"SB\",\r\n },\r\n {\r\n id: 196,\r\n nameEN: \"SEYCHELLES\",\r\n nameGE: \"სეიშელები\",\r\n emoji: \"🇸🇨\",\r\n code: \"+248\",\r\n shortName: \"SC\",\r\n },\r\n {\r\n id: 197,\r\n nameEN: \"SUDAN\",\r\n nameGE: \"სუდანი\",\r\n emoji: \"🇸🇩\",\r\n code: \"+249\",\r\n shortName: \"SD\",\r\n },\r\n {\r\n id: 198,\r\n nameEN: \"SWEDEN\",\r\n nameGE: \"შვედეთი\",\r\n emoji: \"🇸🇪\",\r\n code: \"+46\",\r\n shortName: \"SE\",\r\n },\r\n {\r\n id: 199,\r\n nameEN: \"SINGAPORE\",\r\n nameGE: \"სინგაპური\",\r\n emoji: \"🇸🇬\",\r\n code: \"+65\",\r\n shortName: \"SG\",\r\n },\r\n {\r\n id: 200,\r\n nameEN: \"SAINT HELENA\",\r\n nameGE: \"სენტელენა\",\r\n emoji: \"🇸🇭\",\r\n code: \"+290\",\r\n shortName: \"SH\",\r\n },\r\n {\r\n id: 201,\r\n nameEN: \"SLOVENIA\",\r\n nameGE: \"სლოვენია\",\r\n emoji: \"🇸🇮\",\r\n code: \"+386\",\r\n shortName: \"SI\",\r\n },\r\n {\r\n id: 202,\r\n nameEN: \"SVALBARD AND JAN MAYEN\",\r\n nameGE: \"სვალბარდი-იან-მაიენი\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"SJ\",\r\n },\r\n {\r\n id: 203,\r\n nameEN: \"SLOVAKIA (Slovak Republic)\",\r\n nameGE: \"სლოვაკეთი\",\r\n emoji: \"🇸🇰\",\r\n code: \"+421\",\r\n shortName: \"SK\",\r\n },\r\n {\r\n id: 204,\r\n nameEN: \"SIERRA LEONE\",\r\n nameGE: \"სიერა-ლეონე\",\r\n emoji: \"🇸🇱\",\r\n code: \"+232\",\r\n shortName: \"SL\",\r\n },\r\n {\r\n id: 205,\r\n nameEN: \"SAN MARINO (Republic of)\",\r\n nameGE: \"სან-მარინო\",\r\n emoji: \"🇸🇲\",\r\n code: \"+378\",\r\n shortName: \"SM\",\r\n },\r\n {\r\n id: 206,\r\n nameEN: \"SENEGAL\",\r\n nameGE: \"სენეგალი\",\r\n emoji: \"🇸🇳\",\r\n code: \"+221\",\r\n shortName: \"SN\",\r\n },\r\n {\r\n id: 207,\r\n nameEN: \"SOMALIA\",\r\n nameGE: \"სომალი\",\r\n emoji: \"🇸🇴\",\r\n code: \"+252\",\r\n shortName: \"SO\",\r\n },\r\n {\r\n id: 208,\r\n nameEN: \"SURINAME\",\r\n nameGE: \"სურინამი\",\r\n emoji: \"🇸🇷\",\r\n code: \"+597\",\r\n shortName: \"SR\",\r\n },\r\n {\r\n id: 209,\r\n nameEN: \"SOUTH SUDAN\",\r\n nameGE: \"სამხრეთ სუდანი\",\r\n emoji: \"🇸🇸\",\r\n code: \"+211\",\r\n shortName: \"SS\",\r\n },\r\n {\r\n id: 210,\r\n nameEN: \"SAO TOME AND PRINCIPE\",\r\n nameGE: \"საუტომა-პრენსიპა\",\r\n emoji: \"🇸🇹\",\r\n code: \"+239\",\r\n shortName: \"ST\",\r\n },\r\n {\r\n id: 211,\r\n nameEN: \"EL SALVADOR\",\r\n nameGE: \"სალვადორი\",\r\n emoji: \"🇸🇻\",\r\n code: \"+503\",\r\n shortName: \"SV\",\r\n },\r\n {\r\n id: 212,\r\n nameEN: \"SINT MAARTEN\",\r\n nameGE: \"სინტ-მარტენი (ნიდერლანდების ნაწილი)\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"SX\",\r\n },\r\n {\r\n id: 213,\r\n nameEN: \"SYRIAN ARAB REPUBLIC\",\r\n nameGE: \"სირიის არაბთა რესპუბლიკა\",\r\n emoji: \"🇸🇾\",\r\n code: \"+963\",\r\n shortName: \"SY\",\r\n },\r\n {\r\n id: 214,\r\n nameEN: \"SWAZILAND\",\r\n nameGE: \"სვაზილენდი\",\r\n emoji: \"🇸🇿\",\r\n code: \"+268\",\r\n shortName: \"SZ\",\r\n },\r\n {\r\n id: 215,\r\n nameEN: \"TURKS AND CAICOS ISLANDS\",\r\n nameGE: \"ტერკს-კაიკოსის კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"TC\",\r\n },\r\n {\r\n id: 216,\r\n nameEN: \"CHAD (Tchad)\",\r\n nameGE: \"ჩადი\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"TD\",\r\n },\r\n {\r\n id: 217,\r\n nameEN: \"FRENCH SOUTHERN TERRITORIES\",\r\n nameGE: \"საფრანგეთის სამხრეთ ტერიტორიები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"TF\",\r\n },\r\n {\r\n id: 218,\r\n nameEN: \"TOGO\",\r\n nameGE: \"ტოგო\",\r\n emoji: \"🇹🇬\",\r\n code: \"+228\",\r\n shortName: \"TG\",\r\n },\r\n {\r\n id: 219,\r\n nameEN: \"THAILAND\",\r\n nameGE: \"ტაილანდი\",\r\n emoji: \"🇹🇭\",\r\n code: \"+66\",\r\n shortName: \"TH\",\r\n },\r\n {\r\n id: 220,\r\n nameEN: \"TAJIKISTAN\",\r\n nameGE: \"ტაჯიკეთი\",\r\n emoji: \"🇹🇯\",\r\n code: \"+992\",\r\n shortName: \"TJ\",\r\n },\r\n {\r\n id: 221,\r\n nameEN: \"TOKELAU\",\r\n nameGE: \"ტოკელაუ\",\r\n emoji: \"🇹🇰\",\r\n code: \"+690\",\r\n shortName: \"TK\",\r\n },\r\n {\r\n id: 222,\r\n nameEN: \"TIMOR-LESTE (formerly East Timor)\",\r\n nameGE: \"ტიმორ-ლესტე\",\r\n emoji: \"🇹🇱\",\r\n code: \"+670\",\r\n shortName: \"TL\",\r\n },\r\n {\r\n id: 223,\r\n nameEN: \"TURKMENISTAN\",\r\n nameGE: \"თურქმენეთი\",\r\n emoji: \"🇹🇲\",\r\n code: \"+993\",\r\n shortName: \"TM\",\r\n },\r\n {\r\n id: 224,\r\n nameEN: \"TUNISIA\",\r\n nameGE: \"ტუნისი\",\r\n emoji: \"🇹🇳\",\r\n code: \"+216\",\r\n shortName: \"TN\",\r\n },\r\n {\r\n id: 225,\r\n nameEN: \"TONGA\",\r\n nameGE: \"ტონგა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"TO\",\r\n },\r\n {\r\n id: 226,\r\n nameEN: \"TURKEY\",\r\n nameGE: \"თურქეთი\",\r\n emoji: \"🇹🇷\",\r\n code: \"+90\",\r\n shortName: \"TR\",\r\n },\r\n {\r\n id: 227,\r\n nameEN: \"TRINIDAD AND TOBAGO\",\r\n nameGE: \"ტრინიდად-ტობაგო\",\r\n emoji: \"🇹🇹\",\r\n code: \"+1\",\r\n shortName: \"TT\",\r\n },\r\n {\r\n id: 228,\r\n nameEN: \"TUVALU\",\r\n nameGE: \"ტუვალუ\",\r\n emoji: \"🇹🇻\",\r\n code: \"+688\",\r\n shortName: \"TV\",\r\n },\r\n {\r\n id: 229,\r\n nameEN: 'TAIWAN (\"Chinese Taipei\" for IOC)',\r\n nameGE: \"ტაივანი, ჩინეთის პროვინცია\",\r\n emoji: \"🇹🇼\",\r\n code: \"+886\",\r\n shortName: \"TW\",\r\n },\r\n {\r\n id: 230,\r\n nameEN: \"TANZANIA\",\r\n nameGE: \"ტანზანიის გაერთიანებული რესპუბლიკა\",\r\n emoji: \"🇹🇿\",\r\n code: \"+255\",\r\n shortName: \"TZ\",\r\n },\r\n {\r\n id: 231,\r\n nameEN: \"UKRAINE\",\r\n nameGE: \"უკრაინა\",\r\n emoji: \"🇺🇦\",\r\n code: \"+380\",\r\n shortName: \"UA\",\r\n },\r\n {\r\n id: 232,\r\n nameEN: \"UGANDA\",\r\n nameGE: \"უგანდა\",\r\n emoji: \"🇺🇬\",\r\n code: \"+256\",\r\n shortName: \"UG\",\r\n },\r\n {\r\n id: 233,\r\n nameEN: \"UNITED STATES MINOR OUTLYING ISLANDS\",\r\n nameGE: \"შეერთებული შტატების შორსმდებარე მცირე კუნძულები\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"UM\",\r\n },\r\n {\r\n id: 234,\r\n nameEN: \"UNITED STATES\",\r\n nameGE: \"აშშ\",\r\n emoji: \"🇺🇸\",\r\n code: \"+1\",\r\n shortName: \"US\",\r\n },\r\n {\r\n id: 235,\r\n nameEN: \"URUGUAY\",\r\n nameGE: \"ურუგვაი\",\r\n emoji: \"🇺🇾\",\r\n code: \"+598\",\r\n shortName: \"UY\",\r\n },\r\n {\r\n id: 236,\r\n nameEN: \"UZBEKISTAN\",\r\n nameGE: \"უზბეკეთი\",\r\n emoji: \"🇺🇿\",\r\n code: \"+998\",\r\n shortName: \"UZ\",\r\n },\r\n {\r\n id: 237,\r\n nameEN: \"VATICAN CITY (Holy See)\",\r\n nameGE: \"ვატიკანი, ქალაქი-სახელმწიფო\",\r\n emoji: \"🇻🇦\",\r\n code: \"+39\",\r\n shortName: \"VA\",\r\n },\r\n {\r\n id: 238,\r\n nameEN: \"SAINT VINCENT AND THE GRENADINES\",\r\n nameGE: \"სენტ-ვინსენტ-გრენადინები\",\r\n emoji: \"🇻🇨\",\r\n code: \"+1\",\r\n shortName: \"VC\",\r\n },\r\n {\r\n id: 239,\r\n nameEN: \"VENEZUELA\",\r\n nameGE: \"ვენესუელა\",\r\n emoji: \"🇻🇪\",\r\n code: \"+58\",\r\n shortName: \"VE\",\r\n },\r\n {\r\n id: 240,\r\n nameEN: \"VIRGIN ISLANDS, BRITISH\",\r\n nameGE: \"ვირჯინიის კუნძულები (ბრიტ.)\",\r\n emoji: \"🇻🇬\",\r\n code: \"+1284\",\r\n shortName: \"VG\",\r\n },\r\n {\r\n id: 241,\r\n nameEN: \"VIRGIN ISLANDS, U.S.\",\r\n nameGE: \"ვირჯინიის კუნძულები (აშშ)\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"VI\",\r\n },\r\n {\r\n id: 242,\r\n nameEN: \"VIET NAM\",\r\n nameGE: \"ვიეტნამი\",\r\n emoji: \"🇻🇳\",\r\n code: \"+84\",\r\n shortName: \"VN\",\r\n },\r\n {\r\n id: 243,\r\n nameEN: \"VANUATU\",\r\n nameGE: \"ვანუატუ\",\r\n emoji: \"🇻🇺\",\r\n code: \"+678\",\r\n shortName: \"VU\",\r\n },\r\n {\r\n id: 244,\r\n nameEN: \"WALLIS AND FUTUNA\",\r\n nameGE: \"უოლის-ფუტუნა\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"WF\",\r\n },\r\n {\r\n id: 245,\r\n nameEN: \"SAMOA (formerly Western Samoa)\",\r\n nameGE: \"სამოა\",\r\n emoji: \"🇼🇸\",\r\n code: \"+685\",\r\n shortName: \"WS\",\r\n },\r\n {\r\n id: 246,\r\n nameEN: \"YEMEN (Yemen Arab Republic)\",\r\n nameGE: \"იემენი\",\r\n emoji: \"🇾🇪\",\r\n code: \"+967\",\r\n shortName: \"YE\",\r\n },\r\n {\r\n id: 247,\r\n nameEN: \"MAYOTTE\",\r\n nameGE: \"მეიოტი\",\r\n emoji: null,\r\n code: null,\r\n shortName: \"YT\",\r\n },\r\n {\r\n id: 248,\r\n nameEN: \"SOUTH AFRICA (Zuid Afrika)\",\r\n nameGE: \"სამხრეთ აფრიკა\",\r\n emoji: \"🇿🇦\",\r\n code: \"+27\",\r\n shortName: \"ZA\",\r\n },\r\n {\r\n id: 249,\r\n nameEN: \"ZAMBIA (formerly Northern Rhodesia)\",\r\n nameGE: \"ზამბია\",\r\n emoji: \"🇿🇲\",\r\n code: \"+260\",\r\n shortName: \"ZM\",\r\n },\r\n {\r\n id: 250,\r\n nameEN: \"ZIMBABWE\",\r\n nameGE: \"ზიმბაბვე\",\r\n emoji: \"🇿🇼\",\r\n code: \"+263\",\r\n shortName: \"ZW\",\r\n },\r\n];\r\n","import type { ObserverInstanceCallback } from './index';\n\nconst observerMap = new Map<\n string,\n {\n id: string;\n observer: IntersectionObserver;\n elements: Map>;\n }\n>();\n\nconst RootIds: WeakMap = new WeakMap();\nlet rootId = 0;\n\nlet unsupportedValue: boolean | undefined = undefined;\n\n/**\n * What should be the default behavior if the IntersectionObserver is unsupported?\n * Ideally the polyfill has been loaded, you can have the following happen:\n * - `undefined`: Throw an error\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\n * **/\nexport function defaultFallbackInView(inView: boolean | undefined) {\n unsupportedValue = inView;\n}\n\n/**\n * Generate a unique ID for the root element\n * @param root\n */\nfunction getRootId(root: IntersectionObserverInit['root']) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n\n/**\n * Convert the options to a string Id, based on the values.\n * Ensures we can reuse the same observer when observing elements with the same options.\n * @param options\n */\nexport function optionsToId(options: IntersectionObserverInit) {\n return Object.keys(options)\n .sort()\n .filter(\n (key) => options[key as keyof IntersectionObserverInit] !== undefined,\n )\n .map((key) => {\n return `${key}_${\n key === 'root'\n ? getRootId(options.root)\n : options[key as keyof IntersectionObserverInit]\n }`;\n })\n .toString();\n}\n\nfunction createObserver(options: IntersectionObserverInit) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map>();\n let thresholds: number[] | readonly number[];\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView =\n entry.isIntersecting &&\n thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n // @ts-ignore support IntersectionObserver v2\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n elements.get(entry.target)?.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n\n // Ensure we have a valid thresholds array. If not, use the threshold from the options\n thresholds =\n observer.thresholds ||\n (Array.isArray(options.threshold)\n ? options.threshold\n : [options.threshold || 0]);\n\n instance = {\n id,\n observer,\n elements,\n };\n\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n\n/**\n * @param element - DOM Element to observe\n * @param callback - Callback function to trigger when intersection status changes\n * @param options - Intersection Observer options\n * @param fallbackInView - Fallback inView value.\n * @return Function - Cleanup function that should be triggered to unregister the observer\n */\nexport function observe(\n element: Element,\n callback: ObserverInstanceCallback,\n options: IntersectionObserverInit = {},\n fallbackInView = unsupportedValue,\n) {\n if (\n typeof window.IntersectionObserver === 'undefined' &&\n fallbackInView !== undefined\n ) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio:\n typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds,\n });\n return () => {\n // Nothing to cleanup\n };\n }\n // An observer with the same options can be reused, so lets use this fact\n const { id, observer, elements } = createObserver(options);\n\n // Register the callback listener for this element\n let callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n","import * as React from 'react';\nimport type { IntersectionObserverProps, PlainChildrenProps } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nfunction isPlainChildren(\n props: IntersectionObserverProps | PlainChildrenProps,\n): props is PlainChildrenProps {\n return typeof props.children !== 'function';\n}\n\n/**\n ## Render props\n\n To use the `` component, you pass it a function. It will be called\n whenever the state changes, with the new value of `inView`. In addition to the\n `inView` prop, children also receive a `ref` that should be set on the\n containing DOM element. This is the element that the IntersectionObserver will\n monitor.\n\n If you need it, you can also access the\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\n on `entry`, giving you access to all the details about the current intersection\n state.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n \n {({ inView, ref, entry }) => (\n
\n

{`Header inside viewport ${inView}.`}

\n
\n )}\n
\n );\n\n export default Component;\n ```\n\n ## Plain children\n\n You can pass any element to the ``, and it will handle creating the\n wrapping DOM element. Add a handler to the `onChange` method, and control the\n state in your own component. Any extra props you add to `` will be\n passed to the HTML element, allowing you set the `className`, `style`, etc.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n console.log('Inview:', inView)}>\n

Plain children are always rendered. Use onChange to monitor state.

\n
\n );\n\n export default Component;\n ```\n */\nexport class InView extends React.Component<\n IntersectionObserverProps | PlainChildrenProps,\n State\n> {\n constructor(props: IntersectionObserverProps | PlainChildrenProps) {\n super(props);\n this.state = {\n inView: !!props.initialInView,\n entry: undefined,\n };\n }\n\n componentDidUpdate(prevProps: IntersectionObserverProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (\n prevProps.rootMargin !== this.props.rootMargin ||\n prevProps.root !== this.props.root ||\n prevProps.threshold !== this.props.threshold ||\n prevProps.skip !== this.props.skip ||\n prevProps.trackVisibility !== this.props.trackVisibility ||\n prevProps.delay !== this.props.delay\n ) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n node: Element | null = null;\n _unobserveCb: (() => void) | null = null;\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView,\n } = this.props;\n\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n\n handleNode = (node?: Element | null) => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({ inView: !!this.props.initialInView, entry: undefined });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n handleChange = (inView: boolean, entry: IntersectionObserverEntry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n render() {\n const { children } = this.props;\n if (typeof children === 'function') {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props as PlainChildrenProps;\n\n return React.createElement(\n as || 'div',\n { ref: this.handleNode, ...props },\n children,\n );\n }\n}\n","import * as React from 'react';\nimport type { InViewHookResponse, IntersectionOptions } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\n/**\n * React Hooks make it easy to monitor the `inView` state of your components. Call\n * the `useInView` hook with the (optional) [options](#options) you need. It will\n * return an array containing a `ref`, the `inView` status and the current\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\n * report the status.\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { useInView } from 'react-intersection-observer';\n *\n * const Component = () => {\n * const { ref, inView, entry } = useInView({\n * threshold: 0,\n * });\n *\n * return (\n *
\n *

{`Header inside viewport ${inView}.`}

\n *
\n * );\n * };\n * ```\n */\nexport function useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange,\n}: IntersectionOptions = {}): InViewHookResponse {\n const [ref, setRef] = React.useState(null);\n const callback = React.useRef();\n const [state, setState] = React.useState({\n inView: !!initialInView,\n entry: undefined,\n });\n\n // Store the onChange callback in a `ref`, so we can access the latest instance\n // inside the `useEffect`, but without triggering a rerender.\n callback.current = onChange;\n\n React.useEffect(\n () => {\n // Ensure we have node ref, and that we shouldn't skip observing\n if (skip || !ref) return;\n\n let unobserve: (() => void) | undefined;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry,\n });\n if (callback.current) callback.current(inView, entry);\n\n if (entry.isIntersecting && triggerOnce && unobserve) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve();\n unobserve = undefined;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay,\n ],\n );\n\n const entryTarget = state.entry?.target;\n const previousEntryTarget = React.useRef();\n if (\n !ref &&\n entryTarget &&\n !triggerOnce &&\n !skip &&\n previousEntryTarget.current !== entryTarget\n ) {\n // If we don't have a node ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: undefined,\n });\n }\n\n const result = [setRef, state.inView, state.entry] as InViewHookResponse;\n\n // Support object destructuring, by adding the specific values.\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n\n return result;\n}\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('