2016-12-31 08:11:36 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
2017-05-17 04:27:55 +00:00
( function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) { JSZip = e ( ) ; define ( [ ] , e ) } else { var f ; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof $ && $ . global ? f = $ . global : "undefined" != typeof self && ( f = self ) , f . JSZip = e ( ) } } ) ( function ( ) { var define , module , exports ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; throw new Error ( "Cannot find module '" + o + "'" ) } var f = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( f . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , f , f . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( _dereq _ , module , exports ) { "use strict" ; var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; exports . encode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 , enc1 , enc2 , enc3 , enc4 ; var i = 0 ; while ( i < input . length ) { chr1 = input . charCodeAt ( i ++ ) ; chr2 = input . charCodeAt ( i ++ ) ; chr3 = input . charCodeAt ( i ++ ) ; enc1 = chr1 >> 2 ; enc2 = ( chr1 & 3 ) << 4 | chr2 >> 4 ; enc3 = ( chr2 & 15 ) << 2 | chr3 >> 6 ; enc4 = chr3 & 63 ; if ( isNaN ( chr2 ) ) { enc3 = enc4 = 64 } else if ( isNaN ( chr3 ) ) { enc4 = 64 } output = output + _keyStr . charAt ( enc1 ) + _keyStr . charAt ( enc2 ) + _keyStr . charAt ( enc3 ) + _keyStr . charAt ( enc4 ) } return output } ; exports . decode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 ; var enc1 , enc2 , enc3 , enc4 ; var i = 0 ; input = input . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; while ( i < input . length ) { enc1 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc2 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc3 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc4 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; chr1 = enc1 << 2 | enc2 >> 4 ; chr2 = ( enc2 & 15 ) << 4 | enc3 >> 2 ; chr3 = ( enc3 & 3 ) << 6 | enc4 ; output = output + String . fromCharCode ( chr1 ) ; if ( enc3 != 64 ) { output = output + String . fromCharCode ( chr2 ) } if ( enc4 != 64 ) { output = output + String . fromCharCode ( chr3 ) } } return output } } , { } ] , 2 : [ function ( _dereq _ , module , exports ) { "use strict" ; function CompressedObject ( ) { this . compressedSize = 0 ; this . uncompressedSize = 0 ; this . crc32 = 0 ; this . compressionMethod = null ; this . compressedContent = null } CompressedObject . prototype = { getContent : function ( ) { return null } , getCompressedContent : function ( ) { return null } } ; module . exports = CompressedObject } , { } ] , 3 : [ function ( _dereq _ , module , exports ) { "use strict" ; exports . STORE = { magic : "\0\0" , compress : function ( content ) { return content } , uncompress : function ( content ) { return content } , compressInputType : null , uncompressInputType : null } ; exports . DEFLATE = _dereq _ ( "./flate" ) } , { "./flate" : 8 } ] , 4 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "./utils" ) ; var table = [ 0 , 1996959894 , 3993919788 , 2567524794 , 124634137 , 1886057615 , 3915621685 , 2657392035 , 249268274 , 2044508324 , 3772115230 , 2547177864 , 162941995 , 2125561021 , 3887607047 , 2428444049 , 498536548 , 1789927666 , 4089016648 , 2227061214 , 450548861 , 1843258603 , 4107580753 , 2211677639 , 325883990 , 1684777152 , 4251122042 , 2321926636 , 335633487 , 1661365465 , 4195302755 , 2366115317 , 997073096 , 1281953886 , 3579855332 , 2724688242 , 1006888145 , 1258607687 , 3524101629 , 2768942443 , 901097722 , 1119000684 , 3686517206 , 2898065728 , 853044451 , 1172266101 , 3705015759 , 2882616665 , 651767980 , 1373503546 , 3369554304 , 3218104598 , 565507253 , 1454621731 , 3485111705 , 3099436303 , 671266974 , 1594198024 , 3322730930 , 2970347812 , 795835527 , 1483230225 , 3244367275 , 3060149565 , 1994146192 , 31158534 , 2563907772 , 4023717930 , 1907459465 , 112637215 , 2680153253 , 3904427059 , 2013776290 , 251722036 , 2517215374 , 3775830040 , 2137656763 , 141376813 , 2439277719 , 3865271297 , 1802195444 , 476864866 , 2238001368 , 4066508878 , 1812370925 , 453092731 , 2181625025 , 4111451223 , 1706088902 , 314042704 , 2344532202 , 4240017532 , 1658658271 , 366619977 , 2362670323 , 4224994405 , 1303535960 , 984961486 , 2747007092 , 3569037538 , 1256170817 , 1037604311 , 2765210733 , 3554079995 , 1131014506 , 879679996 , 2909243462 , 3663771856 , 1141124467 , 855842277 , 2852801631 , 3708648649 , 1342533948 , 654459306 , 3188396048 , 3373015174 , 1466479909 , 544179635 , 3110523913 , 3462522015 , 1591671054 , 702138776 , 2966460450 , 3352799412 , 1504918807 , 783551873 , 3082640443 , 3233442989 , 3988292384 , 2596254646 , 62317068 , 1957810842 , 3939845945 , 2647816111 , 81470997 , 1943803523 , 3814918930 , 2489596804 ,
2017-03-28 22:07:46 +00:00
} return res } ; exports . findCompression = function ( compressionMethod ) { for ( var method in compressions ) { if ( ! compressions . hasOwnProperty ( method ) ) { continue } if ( compressions [ method ] . magic === compressionMethod ) { return compressions [ method ] } } return null } ; exports . isRegExp = function ( object ) { return Object . prototype . toString . call ( object ) === "[object RegExp]" } } , { "./compressions" : 3 , "./nodeBuffer" : 11 , "./support" : 17 } ] , 22 : [ function ( _dereq _ , module , exports ) { "use strict" ; var StringReader = _dereq _ ( "./stringReader" ) ; var NodeBufferReader = _dereq _ ( "./nodeBufferReader" ) ; var Uint8ArrayReader = _dereq _ ( "./uint8ArrayReader" ) ; var utils = _dereq _ ( "./utils" ) ; var sig = _dereq _ ( "./signature" ) ; var ZipEntry = _dereq _ ( "./zipEntry" ) ; var support = _dereq _ ( "./support" ) ; var jszipProto = _dereq _ ( "./object" ) ; function ZipEntries ( data , loadOptions ) { this . files = [ ] ; this . loadOptions = loadOptions ; if ( data ) { this . load ( data ) } } ZipEntries . prototype = { checkSignature : function ( expectedSignature ) { var signature = this . reader . readString ( 4 ) ; if ( signature !== expectedSignature ) { throw new Error ( "Corrupted zip or bug : unexpected signature " + "(" + utils . pretty ( signature ) + ", expected " + utils . pretty ( expectedSignature ) + ")" ) } } , readBlockEndOfCentral : function ( ) { this . diskNumber = this . reader . readInt ( 2 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 2 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 2 ) ; this . centralDirRecords = this . reader . readInt ( 2 ) ; this . centralDirSize = this . reader . readInt ( 4 ) ; this . centralDirOffset = this . reader . readInt ( 4 ) ; this . zipCommentLength = this . reader . readInt ( 2 ) ; this . zipComment = this . reader . readString ( this . zipCommentLength ) ; this . zipComment = jszipProto . utf8decode ( this . zipComment ) } , readBlockZip64EndOfCentral : function ( ) { this . zip64EndOfCentralSize = this . reader . readInt ( 8 ) ; this . versionMadeBy = this . reader . readString ( 2 ) ; this . versionNeeded = this . reader . readInt ( 2 ) ; this . diskNumber = this . reader . readInt ( 4 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 4 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 8 ) ; this . centralDirRecords = this . reader . readInt ( 8 ) ; this . centralDirSize = this . reader . readInt ( 8 ) ; this . centralDirOffset = this . reader . readInt ( 8 ) ; this . zip64ExtensibleData = { } ; var extraDataSize = this . zip64EndOfCentralSize - 44 , index = 0 , extraFieldId , extraFieldLength , extraFieldValue ; while ( index < extraDataSize ) { extraFieldId = this . reader . readInt ( 2 ) ; extraFieldLength = this . reader . readInt ( 4 ) ; extraFieldValue = this . reader . readString ( extraFieldLength ) ; this . zip64ExtensibleData [ extraFieldId ] = { id : extraFieldId , length : extraFieldLength , value : extraFieldValue } } } , readBlockZip64EndOfCentralLocator : function ( ) { this . diskWithZip64CentralDirStart = this . reader . readInt ( 4 ) ; this . relativeOffsetEndOfZip64CentralDir = this . reader . readInt ( 8 ) ; this . disksCount = this . reader . readInt ( 4 ) ; if ( this . disksCount > 1 ) { throw new Error ( "Multi-volumes zip are not supported" ) } } , readLocalFiles : function ( ) { var i , file ; for ( i = 0 ; i < this . files . length ; i ++ ) { file = this . files [ i ] ; this . reader . setIndex ( file . localHeaderOffset ) ; this . checkSignature ( sig . LOCAL _FILE _HEADER ) ; file . readLocalPart ( this . reader ) ; file . handleUTF8 ( ) } } , readCentralDir : function ( ) { var file ; this . reader . setIndex ( this . centralDirOffset ) ; while ( this . reader . readString ( 4 ) === sig . CENTRAL _FILE _HEADER ) { file = new ZipEntry ( { zip64 : this . zip64 } , this . loadOptions ) ; file . readCentralPart ( this . reader ) ; this . files . push ( file ) } } , readEndOfCentral : function ( ) { var offset = this . reader . lastIndexOfSignature ( sig . CENTRAL _DIRECTORY _END ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find end of central directory" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . CENTRAL _DIRECTORY _END ) ; this . readBlockEndOfCentral ( ) ; if ( this . diskNumber === utils . MAX _VALUE _16BITS || this . diskWithCentralDirStart === utils . MAX _VALUE _16BITS || this . centralDirRecordsOnThisDisk === utils . MAX _VALUE _16BITS || this . centralDirRecords === utils . MAX _VALUE _16BITS || this . centralDirSize === utils . MAX _VALUE _32BITS || this . centralDirOffset === utils . MAX _VALUE _32BITS ) { this . zip64 = true ; offset = this . reader . lastIndexOfSignature ( sig . ZIP64 _CENTRAL _DIRECTORY _LOCATOR ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find the ZIP64 end of central directory locator" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . ZIP64 _CENTRAL _D
2017-05-17 04:27:55 +00:00
var bflush ; for ( ; ; ) { if ( s . lookahead === 0 ) { fill _window ( s ) ; if ( s . lookahead === 0 ) { if ( flush === Z _NO _FLUSH ) { return BS _NEED _MORE } break } } s . match _length = 0 ; bflush = trees . _tr _tally ( s , 0 , s . window [ s . strstart ] ) ; s . lookahead -- ; s . strstart ++ ; if ( bflush ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } } s . insert = 0 ; if ( flush === Z _FINISH ) { flush _block _only ( s , true ) ; if ( s . strm . avail _out === 0 ) { return BS _FINISH _STARTED } return BS _FINISH _DONE } if ( s . last _lit ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } return BS _BLOCK _DONE } var Config = function ( good _length , max _lazy , nice _length , max _chain , func ) { this . good _length = good _length ; this . max _lazy = max _lazy ; this . nice _length = nice _length ; this . max _chain = max _chain ; this . func = func } ; var configuration _table ; configuration _table = [ new Config ( 0 , 0 , 0 , 0 , deflate _stored ) , new Config ( 4 , 4 , 8 , 4 , deflate _fast ) , new Config ( 4 , 5 , 16 , 8 , deflate _fast ) , new Config ( 4 , 6 , 32 , 32 , deflate _fast ) , new Config ( 4 , 4 , 16 , 16 , deflate _slow ) , new Config ( 8 , 16 , 32 , 32 , deflate _slow ) , new Config ( 8 , 16 , 128 , 128 , deflate _slow ) , new Config ( 8 , 32 , 128 , 256 , deflate _slow ) , new Config ( 32 , 128 , 258 , 1024 , deflate _slow ) , new Config ( 32 , 258 , 258 , 4096 , deflate _slow ) ] ; function lm _init ( s ) { s . window _size = 2 * s . w _size ; zero ( s . head ) ; s . max _lazy _match = configuration _table [ s . level ] . max _lazy ; s . good _match = configuration _table [ s . level ] . good _length ; s . nice _match = configuration _table [ s . level ] . nice _length ; s . max _chain _length = configuration _table [ s . level ] . max _chain ; s . strstart = 0 ; s . block _start = 0 ; s . lookahead = 0 ; s . insert = 0 ; s . match _length = s . prev _length = MIN _MATCH - 1 ; s . match _available = 0 ; s . ins _h = 0 } function DeflateState ( ) { this . strm = null ; this . status = 0 ; this . pending _buf = null ; this . pending _buf _size = 0 ; this . pending _out = 0 ; this . pending = 0 ; this . wrap = 0 ; this . gzhead = null ; this . gzindex = 0 ; this . method = Z _DEFLATED ; this . last _flush = - 1 ; this . w _size = 0 ; this . w _bits = 0 ; this . w _mask = 0 ; this . window = null ; this . window _size = 0 ; this . prev = null ; this . head = null ; this . ins _h = 0 ; this . hash _size = 0 ; this . hash _bits = 0 ; this . hash _mask = 0 ; this . hash _shift = 0 ; this . block _start = 0 ; this . match _length = 0 ; this . prev _match = 0 ; this . match _available = 0 ; this . strstart = 0 ; this . match _start = 0 ; this . lookahead = 0 ; this . prev _length = 0 ; this . max _chain _length = 0 ; this . max _lazy _match = 0 ; this . level = 0 ; this . strategy = 0 ; this . good _match = 0 ; this . nice _match = 0 ; this . dyn _ltree = new utils . Buf16 ( HEAP _SIZE * 2 ) ; this . dyn _dtree = new utils . Buf16 ( ( 2 * D _CODES + 1 ) * 2 ) ; this . bl _tree = new utils . Buf16 ( ( 2 * BL _CODES + 1 ) * 2 ) ; zero ( this . dyn _ltree ) ; zero ( this . dyn _dtree ) ; zero ( this . bl _tree ) ; this . l _desc = null ; this . d _desc = null ; this . bl _desc = null ; this . bl _count = new utils . Buf16 ( MAX _BITS + 1 ) ; this . heap = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . heap ) ; this . heap _len = 0 ; this . heap _max = 0 ; this . depth = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . depth ) ; this . l _buf = 0 ; this . lit _bufsize = 0 ; this . last _lit = 0 ; this . d _buf = 0 ; this . opt _len = 0 ; this . static _len = 0 ; this . matches = 0 ; this . insert = 0 ; this . bi _buf = 0 ; this . bi _valid = 0 } function deflateResetKeep ( strm ) { var s ; if ( ! strm || ! strm . state ) { return err ( strm , Z _STREAM _ERROR ) } strm . total _in = strm . total _out = 0 ; strm . data _type = Z _UNKNOWN ; s = strm . state ; s . pending = 0 ; s . pending _out = 0 ; if ( s . wrap < 0 ) { s . wrap = - s . wrap } s . status = s . wrap ? INIT _STATE : BUSY _STATE ; strm . adler = s . wrap === 2 ? 0 : 1 ; s . last _flush = Z _NO _FLUSH ; trees . _tr _init ( s ) ; return Z _OK } function deflateReset ( strm ) { var ret = deflateResetKeep ( strm ) ; if ( ret === Z _OK ) { lm _init ( strm . state ) } return ret } function deflateSetHeader ( strm , head ) { if ( ! strm || ! strm . state ) { return Z _STREAM _ERROR } if ( strm . state . wrap !== 2 ) { return Z _STREAM _ERROR } strm . state . gzhead = head ; return Z _OK } function deflateInit2 ( strm , level , method , windowBits , memLevel , strategy ) { if ( ! strm ) { return Z _STREAM _ERROR } var wrap = 1 ; if ( level === Z _DEFAULT _COMPRESSION ) { level = 6 } if ( windowBits < 0 ) { wrap = 0 ; windowBits = - windowBits } else if ( windowBits > 15 ) { wrap = 2 ; windowBits -= 16 } if ( memLevel < 1 || memLevel > MAX _MEM _LEVEL || method !== Z _DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z _FIXED ) { return err ( strm , Z _STREAM _ERROR ) } if ( windowBits === 8 ) { windowBits = 9 } var s = new DeflateState ; strm . state = s ; s . strm = strm ; s . wrap = wrap ; s . gzhead = null ; s . w _bits = windowBits ; s . w _size = 1 << s . w _bits ; s . w _mask = s . w _size - 1 ; s . hash _bits = memLevel + 7 ; s . hash _size = 1 << s . hash _bits ; s . hash _mask = s . hash _size - 1 ; s . hash _shift = ~ ~ ( ( s . hash _b
exports . inflateInfo = "pako inflate (from Nodeca project)" } , { "../utils/common" : 27 , "./adler32" : 29 , "./crc32" : 31 , "./inffast" : 34 , "./inftrees" : 36 } ] , 36 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var MAXBITS = 15 ; var ENOUGH _LENS = 852 ; var ENOUGH _DISTS = 592 ; var CODES = 0 ; var LENS = 1 ; var DISTS = 2 ; var lbase = [ 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 , 0 , 0 ] ; var lext = [ 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 18 , 18 , 18 , 18 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 16 , 72 , 78 ] ; var dbase = [ 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 , 0 , 0 ] ; var dext = [ 16 , 16 , 16 , 16 , 17 , 17 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , 27 , 27 , 28 , 28 , 29 , 29 , 64 , 64 ] ; module . exports = function inflate _table ( type , lens , lens _index , codes , table , table _index , work , opts ) { var bits = opts . bits ; var len = 0 ; var sym = 0 ; var min = 0 , max = 0 ; var root = 0 ; var curr = 0 ; var drop = 0 ; var left = 0 ; var used = 0 ; var huff = 0 ; var incr ; var fill ; var low ; var mask ; var next ; var base = null ; var base _index = 0 ; var end ; var count = new utils . Buf16 ( MAXBITS + 1 ) ; var offs = new utils . Buf16 ( MAXBITS + 1 ) ; var extra = null ; var extra _index = 0 ; var here _bits , here _op , here _val ; for ( len = 0 ; len <= MAXBITS ; len ++ ) { count [ len ] = 0 } for ( sym = 0 ; sym < codes ; sym ++ ) { count [ lens [ lens _index + sym ] ] ++ } root = bits ; for ( max = MAXBITS ; max >= 1 ; max -- ) { if ( count [ max ] !== 0 ) { break } } if ( root > max ) { root = max } if ( max === 0 ) { table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; opts . bits = 1 ; return 0 } for ( min = 1 ; min < max ; min ++ ) { if ( count [ min ] !== 0 ) { break } } if ( root < min ) { root = min } left = 1 ; for ( len = 1 ; len <= MAXBITS ; len ++ ) { left <<= 1 ; left -= count [ len ] ; if ( left < 0 ) { return - 1 } } if ( left > 0 && ( type === CODES || max !== 1 ) ) { return - 1 } offs [ 1 ] = 0 ; for ( len = 1 ; len < MAXBITS ; len ++ ) { offs [ len + 1 ] = offs [ len ] + count [ len ] } for ( sym = 0 ; sym < codes ; sym ++ ) { if ( lens [ lens _index + sym ] !== 0 ) { work [ offs [ lens [ lens _index + sym ] ] ++ ] = sym } } if ( type === CODES ) { base = extra = work ; end = 19 } else if ( type === LENS ) { base = lbase ; base _index -= 257 ; extra = lext ; extra _index -= 257 ; end = 256 } else { base = dbase ; extra = dext ; end = - 1 } huff = 0 ; sym = 0 ; len = min ; next = table _index ; curr = root ; drop = 0 ; low = - 1 ; used = 1 << root ; mask = used - 1 ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } var i = 0 ; for ( ; ; ) { i ++ ; here _bits = len - drop ; if ( work [ sym ] < end ) { here _op = 0 ; here _val = work [ sym ] } else if ( work [ sym ] > end ) { here _op = extra [ extra _index + work [ sym ] ] ; here _val = base [ base _index + work [ sym ] ] } else { here _op = 32 + 64 ; here _val = 0 } incr = 1 << len - drop ; fill = 1 << curr ; min = fill ; do { fill -= incr ; table [ next + ( huff >> drop ) + fill ] = here _bits << 24 | here _op << 16 | here _val | 0 } while ( fill !== 0 ) ; incr = 1 << len - 1 ; while ( huff & incr ) { incr >>= 1 } if ( incr !== 0 ) { huff &= incr - 1 ; huff += incr } else { huff = 0 } sym ++ ; if ( -- count [ len ] === 0 ) { if ( len === max ) { break } len = lens [ lens _index + work [ sym ] ] } if ( len > root && ( huff & mask ) !== low ) { if ( drop === 0 ) { drop = root } next += min ; curr = len - drop ; left = 1 << curr ; while ( curr + drop < max ) { left -= count [ curr + drop ] ; if ( left <= 0 ) { break } curr ++ ; left <<= 1 } used += 1 << curr ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } low = huff & mask ; table [ low ] = root << 24 | curr << 16 | next - table _index | 0 } } if ( huff !== 0 ) { table [ next + huff ] = len - drop << 24 | 64 << 16 | 0 } opts . bits = root ; return 0 } } , { "../utils/common" : 27 } ] , 37 : [ function ( _dereq _ , module , exports ) { "use strict" ; module . exports = { 2 : "need dictionary" , 1 : "stream end" , 0 : "" , "-1" : "file error" , "-2" : "stream error" , "-3" : "data error" , "-4" : "insufficient memory" , "-5" : "buffer error" , "-6" : "incompatible version" } } , { } ] , 38 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var Z _FIXED = 4 ; var Z _BINARY = 0 ; var Z _TEXT = 1 ; var Z _UNKNOWN = 2 ; function zero ( buf ) { var len = buf . length ; while ( -- len >= 0 ) { buf [ len ] = 0 } } var STORED _BLOCK = 0 ; var STATIC _TREES = 1 ; var DYN _TREES = 2 ; var MIN _MATCH = 3 ; var MAX _MATCH = 258 ; var LENGTH _CODES = 29 ; var LITERALS = 256 ; var L _CODES = LITERALS + 1 + LENGTH _CODES ; var D _CODES = 30 ; var BL _CODES = 19 ; var HEAP _SIZE = 2 * L _CODES + 1 ; var MAX _BITS = 15 ; var Buf _size = 16 ; var MAX _BL _BITS = 7 ; var END _BLOCK = 256 ; var REP _3 _6 = 16 ; var REPZ _3 _10 = 17 ; var REPZ _11 _138 = 18 ; var extra _lbits = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 0 ] ; var extra _dbits = [ 0 , 0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 , 11 , 12 , 12 , 13 , 13 ] ; var extra _blbits = [ 0 , 0 , 0
if ( fmt . indexOf ( "%" ) !== - 1 ) return write _num _pct2 ( type , fmt , val ) ; if ( fmt . indexOf ( "E" ) !== - 1 ) return write _num _exp2 ( fmt , val ) ; if ( fmt . charCodeAt ( 0 ) === 36 ) return "$" + write _num _int ( type , fmt . substr ( fmt . charAt ( 1 ) == " " ? 2 : 1 ) , val ) ; var o ; var r , ri , ff , aval = Math . abs ( val ) , sign = val < 0 ? "-" : "" ; if ( fmt . match ( /^00+$/ ) ) return sign + pad0 ( aval , fmt . length ) ; if ( fmt . match ( /^[#?]+$/ ) ) { o = "" + val ; if ( val === 0 ) o = "" ; return o . length > fmt . length ? o : hashq ( fmt . substr ( 0 , fmt . length - o . length ) ) + o } if ( r = fmt . match ( frac1 ) ) return write _num _f2 ( r , aval , sign ) ; if ( fmt . match ( /^#+0+$/ ) ) return sign + pad0 ( aval , fmt . length - fmt . indexOf ( "0" ) ) ; if ( r = fmt . match ( dec1 ) ) { o = ( "" + val ) . replace ( /^([^\.]+)$/ , "$1." + r [ 1 ] ) . replace ( /\.$/ , "." + r [ 1 ] ) ; o = o . replace ( /\.(\d*)$/ , function ( $$ , $1 ) { return "." + $1 + fill ( "0" , r [ 1 ] . length - $1 . length ) } ) ; return fmt . indexOf ( "0." ) !== - 1 ? o : o . replace ( /^0\./ , "." ) } fmt = fmt . replace ( /^#+([0.])/ , "$1" ) ; if ( r = fmt . match ( /^(0*)\.(#*)$/ ) ) { return sign + ( "" + aval ) . replace ( /\.(\d*[1-9])0*$/ , ".$1" ) . replace ( /^(-?\d*)$/ , "$1." ) . replace ( /^0\./ , r [ 1 ] . length ? "0." : "." ) } if ( r = fmt . match ( /^#{1,3},##0(\.?)$/ ) ) return sign + commaify ( "" + aval ) ; if ( r = fmt . match ( /^#,##0\.([#0]*0)$/ ) ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) + "." + fill ( "0" , r [ 1 ] . length ) } if ( r = fmt . match ( /^#,#*,#0/ ) ) return write _num _int ( type , fmt . replace ( /^#,#*,/ , "" ) , val ) ; if ( r = fmt . match ( /^([0#]+)(\\?-([0#]+))+$/ ) ) { o = _strrev ( write _num _int ( type , fmt . replace ( /[\\-]/g , "" ) , val ) ) ; ri = 0 ; return _strrev ( _strrev ( fmt . replace ( /\\/g , "" ) ) . replace ( /[0#]/g , function ( x ) { return ri < o . length ? o . charAt ( ri ++ ) : x === "0" ? "0" : "" } ) ) } if ( fmt . match ( phone ) ) { o = write _num _int ( type , "##########" , val ) ; return "(" + o . substr ( 0 , 3 ) + ") " + o . substr ( 3 , 3 ) + "-" + o . substr ( 6 ) } var oa = "" ; if ( r = fmt . match ( /^([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) { ri = Math . min ( r [ 4 ] . length , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , false ) ; o = "" + sign ; oa = write _num ( "n" , r [ 1 ] , ff [ 1 ] ) ; if ( oa . charAt ( oa . length - 1 ) == " " ) oa = oa . substr ( 0 , oa . length - 1 ) + "0" ; o += oa + r [ 2 ] + "/" + r [ 3 ] ; oa = rpad _ ( ff [ 2 ] , ri ) ; if ( oa . length < r [ 4 ] . length ) oa = hashq ( r [ 4 ] . substr ( r [ 4 ] . length - oa . length ) ) + oa ; o += oa ; return o } if ( r = fmt . match ( /^# ([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) { ri = Math . min ( Math . max ( r [ 1 ] . length , r [ 4 ] . length ) , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , true ) ; return sign + ( ff [ 0 ] || ( ff [ 1 ] ? "" : "0" ) ) + " " + ( ff [ 1 ] ? pad _ ( ff [ 1 ] , ri ) + r [ 2 ] + "/" + r [ 3 ] + rpad _ ( ff [ 2 ] , ri ) : fill ( " " , 2 * ri + 1 + r [ 2 ] . length + r [ 3 ] . length ) ) } if ( r = fmt . match ( /^[#0?]+$/ ) ) { o = "" + val ; if ( fmt . length <= o . length ) return o ; return hashq ( fmt . substr ( 0 , fmt . length - o . length ) ) + o } if ( r = fmt . match ( /^([#0]+)\.([#0]+)$/ ) ) { o = "" + val . toFixed ( Math . min ( r [ 2 ] . length , 10 ) ) . replace ( /([^0])0+$/ , "$1" ) ; ri = o . indexOf ( "." ) ; var lres = fmt . indexOf ( "." ) - ri , rres = fmt . length - o . length - lres ; return hashq ( fmt . substr ( 0 , lres ) + o + fmt . substr ( fmt . length - rres ) ) } if ( r = fmt . match ( /^00,000\.([#0]*0)$/ ) ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) . replace ( /^\d,\d{3}$/ , "0$&" ) . replace ( /^\d*$/ , function ( $$ ) { return "00," + ( $$ . length < 3 ? pad0 ( 0 , 3 - $$ . length ) : "" ) + $$ } ) + "." + pad0 ( 0 , r [ 1 ] . length ) } switch ( fmt ) { case "###,###" : ; case "##,###" : ; case "#,###" : var x = commaify ( "" + aval ) ; return x !== "0" ? sign + x : "" ; default : if ( fmt . match ( /\.[0#?]*$/ ) ) return write _num _int ( type , fmt . slice ( 0 , fmt . lastIndexOf ( "." ) ) , val ) + hashq ( fmt . slice ( fmt . lastIndexOf ( "." ) ) ) ; } throw new Error ( "unsupported format |" + fmt + "|" ) } return function write _num ( type , fmt , val ) { return ( val | 0 ) === val ? write _num _int ( type , fmt , val ) : write _num _flt ( type , fmt , val ) } } ( ) ; function split _fmt ( fmt ) { var out = [ ] ; var in _str = false ; for ( var i = 0 , j = 0 ; i < fmt . length ; ++ i ) switch ( fmt . charCodeAt ( i ) ) { case 34 : in _str = ! in _str ; break ; case 95 : ; case 42 : ; case 92 : ++ i ; break ; case 59 : out [ out . length ] = fmt . substr ( j , i - j ) ; j = i + 1 ; } out [ out . length ] = fmt . substr ( j ) ; if ( in _str === true ) throw new Error ( "Format |" + fmt + "| unterminated string " ) ; return out } SSF . _split = split _fmt ; var abstime = /\[[HhMmSs]*\]/ ; function fmt _is _date ( fmt ) { var i = 0 , c = "" , o = "" ; while ( i < fmt . length ) { switch ( c = fmt . charAt ( i ) ) { case "G" : if ( isgeneral ( fmt , i ) ) i += 6 ; i ++ ; break ; case '"' : for ( ; fmt . charCodeAt ( ++ i ) !== 34 && i < fmt . length ; ) ++ i ; ++ i ; break ; case "\\" : i += 2 ; break ; case "_" : i += 2 ; break ; case "@" : ++ i ; break ; case "B" : ; case "b" : if ( fmt . charAt ( i + 1 ) === "1" || fmt . charAt ( i + 1 ) === "2" ) return true ; case "M" : ; case "D" : ; case "Y" : ; case "H" : ; case "S" : ; case "E" : ; case "m" : ; case "d" : ; case "y" : ; case "h" : ; case "s" : ; case "e" : ; case "g" : return tr
vt : "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" , xsi : "http://www.w3.org/2001/XMLSchema-instance" , xsd : "http://www.w3.org/2001/XMLSchema" } ; XMLNS . main = [ "http://schemas.openxmlformats.org/spreadsheetml/2006/main" , "http://purl.oclc.org/ooxml/spreadsheetml/main" , "http://schemas.microsoft.com/office/excel/2006/main" , "http://schemas.microsoft.com/office/excel/2006/2" ] ; var XLMLNS = { o : "urn:schemas-microsoft-com:office:office" , x : "urn:schemas-microsoft-com:office:excel" , ss : "urn:schemas-microsoft-com:office:spreadsheet" , dt : "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" , mv : "http://macVmlSchemaUri" , v : "urn:schemas-microsoft-com:vml" , html : "http://www.w3.org/TR/REC-html40" } ; function read _double _le ( b , idx ) { var s = 1 - 2 * ( b [ idx + 7 ] >>> 7 ) ; var e = ( ( b [ idx + 7 ] & 127 ) << 4 ) + ( b [ idx + 6 ] >>> 4 & 15 ) ; var m = b [ idx + 6 ] & 15 ; for ( var i = 5 ; i >= 0 ; -- i ) m = m * 256 + b [ idx + i ] ; if ( e == 2047 ) return m == 0 ? s * Infinity : NaN ; if ( e == 0 ) e = - 1022 ; else { e -= 1023 ; m += Math . pow ( 2 , 52 ) } return s * Math . pow ( 2 , e - 52 ) * m } function write _double _le ( b , v , idx ) { var bs = ( v < 0 || 1 / v == - Infinity ? 1 : 0 ) << 7 , e = 0 , m = 0 ; var av = bs ? - v : v ; if ( ! isFinite ( av ) ) { e = 2047 ; m = isNaN ( v ) ? 26985 : 0 } else { e = Math . floor ( Math . log ( av ) * Math . LOG2E ) ; m = v * Math . pow ( 2 , 52 - e ) ; if ( e <= - 1023 && ( ! isFinite ( m ) || m < Math . pow ( 2 , 52 ) ) ) { e = - 1022 } else { m -= Math . pow ( 2 , 52 ) ; e += 1023 } } for ( var i = 0 ; i <= 5 ; ++ i , m /= 256 ) b [ idx + i ] = m & 255 ; b [ idx + 6 ] = ( e & 15 ) << 4 | m & 15 ; b [ idx + 7 ] = e >> 4 | bs } var _ _toBuffer , _ _ _toBuffer ; _ _toBuffer = _ _ _toBuffer = function toBuffer _ ( bufs ) { var x = [ ] ; for ( var i = 0 ; i < bufs [ 0 ] . length ; ++ i ) { x . push . apply ( x , bufs [ 0 ] [ i ] ) } return x } ; var _ _utf16le , _ _ _utf16le ; _ _utf16le = _ _ _utf16le = function utf16le _ ( b , s , e ) { var ss = [ ] ; for ( var i = s ; i < e ; i += 2 ) ss . push ( String . fromCharCode ( _ _readUInt16LE ( b , i ) ) ) ; return ss . join ( "" ) } ; var _ _hexlify , _ _ _hexlify ; _ _hexlify = _ _ _hexlify = function hexlify _ ( b , s , l ) { return b . slice ( s , s + l ) . map ( function ( x ) { return ( x < 16 ? "0" : "" ) + x . toString ( 16 ) } ) . join ( "" ) } ; var _ _utf8 , _ _ _utf8 ; _ _utf8 = _ _ _utf8 = function ( b , s , e ) { var ss = [ ] ; for ( var i = s ; i < e ; i ++ ) ss . push ( String . fromCharCode ( _ _readUInt8 ( b , i ) ) ) ; return ss . join ( "" ) } ; var _ _lpstr , _ _ _lpstr ; _ _lpstr = _ _ _lpstr = function lpstr _ ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len - 1 ) : "" } ; var _ _lpwstr , _ _ _lpwstr ; _ _lpwstr = _ _ _lpwstr = function lpwstr _ ( b , i ) { var len = 2 * _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len - 1 ) : "" } ; var _ _lpp4 , _ _ _lpp4 ; _ _lpp4 = _ _ _lpp4 = function lpp4 _ ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf16le ( b , i + 4 , i + 4 + len ) : "" } ; var _ _8lpp4 , _ _ _8lpp4 ; _ _8lpp4 = _ _ _8lpp4 = function lpp4 _8 ( b , i ) { var len = _ _readUInt32LE ( b , i ) ; return len > 0 ? _ _utf8 ( b , i + 4 , i + 4 + len ) : "" } ; var _ _double , _ _ _double ; _ _double = _ _ _double = function ( b , idx ) { return read _double _le ( b , idx ) } ; var is _buf = function is _buf _a ( a ) { return Array . isArray ( a ) } ; if ( has _buf ) { _ _utf16le = function utf16le _b ( b , s , e ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _utf16le ( b , s , e ) ; return b . toString ( "utf16le" , s , e ) } ; _ _hexlify = function ( b , s , l ) { return Buffer . isBuffer ( b ) ? b . toString ( "hex" , s , s + l ) : _ _ _hexlify ( b , s , l ) } ; _ _lpstr = function lpstr _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpstr ( b , i ) ; var len = b . readUInt32LE ( i ) ; return len > 0 ? b . toString ( "utf8" , i + 4 , i + 4 + len - 1 ) : "" } ; _ _lpwstr = function lpwstr _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpwstr ( b , i ) ; var len = 2 * b . readUInt32LE ( i ) ; return b . toString ( "utf16le" , i + 4 , i + 4 + len - 1 ) } ; _ _lpp4 = function lpp4 _b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _lpp4 ( b , i ) ; var len = b . readUInt32LE ( i ) ; return b . toString ( "utf16le" , i + 4 , i + 4 + len ) } ; _ _8lpp4 = function lpp4 _8b ( b , i ) { if ( ! Buffer . isBuffer ( b ) ) return _ _ _8lpp4 ( b , i ) ; var len = b . readUInt32LE ( i ) ; return b . toString ( "utf8" , i + 4 , i + 4 + len ) } ; _ _utf8 = function utf8 _b ( b , s , e ) { return b . toString ( "utf8" , s , e ) } ; _ _toBuffer = function ( bufs ) { return bufs [ 0 ] . length > 0 && Buffer . isBuffer ( bufs [ 0 ] [ 0 ] ) ? Buffer . concat ( bufs [ 0 ] ) : _ _ _toBuffer ( bufs ) } ; bconcat = function ( bufs ) { return Buffer . isBuffer ( bufs [ 0 ] ) ? Buffer . concat ( bufs ) : [ ] . concat . apply ( [ ] , bufs ) } ; _ _double = function double _ ( b , i ) { if ( Buffer . isBuffer ( b ) ) return b . readDoubleLE ( i ) ; return _ _ _double ( b , i ) } ; is _buf = function is _buf _b ( a ) { return Buffer . isBuffer ( a ) || Array . isArray ( a ) } } if ( typeof cptable !== "undefined" ) { _ _utf16le = function ( b , s , e ) { return cptable . utils . decode ( 1200 , b . slice ( s , e ) ) } ; _ _utf8 = function ( b , s , e ) { return cptable . utils . decode ( 65001 , b . slice ( s , e ) ) } ; _ _lpstr = function ( b , i ) { var len = _ _readUInt32
( ct [ t ] || [ ] ) . forEach ( function ( v ) { o [ o . length ] = writextag ( "Override" , null , { PartName : ( v [ 0 ] == "/" ? "" : "/" ) + v , ContentType : type2ct [ t ] [ 0 ] } ) } ) } ; f1 ( "workbooks" ) ; f2 ( "sheets" ) ; f2 ( "charts" ) ; f3 ( "themes" ) ; [ "strs" , "styles" ] . forEach ( f1 ) ; [ "coreprops" , "extprops" , "custprops" ] . forEach ( f3 ) ; f3 ( "vba" ) ; f3 ( "comments" ) ; f3 ( "drawings" ) ; if ( o . length > 2 ) { o [ o . length ] = "</Types>" ; o [ 1 ] = o [ 1 ] . replace ( "/>" , ">" ) } return o . join ( "" ) } var RELS = { WB : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" , SHEET : "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" , HLINK : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" , VML : "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" , VBA : "http://schemas.microsoft.com/office/2006/relationships/vbaProject" } ; function get _rels _path ( file ) { var n = file . lastIndexOf ( "/" ) ; return file . substr ( 0 , n + 1 ) + "_rels/" + file . substr ( n + 1 ) + ".rels" } function parse _rels ( data , currentFilePath ) { if ( ! data ) return data ; if ( currentFilePath . charAt ( 0 ) !== "/" ) { currentFilePath = "/" + currentFilePath } var rels = { } ; var hash = { } ; ( data . match ( tagregex ) || [ ] ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; if ( y [ 0 ] === "<Relationship" ) { var rel = { } ; rel . Type = y . Type ; rel . Target = y . Target ; rel . Id = y . Id ; rel . TargetMode = y . TargetMode ; var canonictarget = y . TargetMode === "External" ? y . Target : resolve _path ( y . Target , currentFilePath ) ; rels [ canonictarget ] = rel ; hash [ y . Id ] = rel } } ) ; rels [ "!id" ] = hash ; return rels } XMLNS . RELS = "http://schemas.openxmlformats.org/package/2006/relationships" ; var RELS _ROOT = writextag ( "Relationships" , null , { xmlns : XMLNS . RELS } ) ; function write _rels ( rels ) { var o = [ XML _HEADER , RELS _ROOT ] ; keys ( rels [ "!id" ] ) . forEach ( function ( rid ) { o [ o . length ] = writextag ( "Relationship" , null , rels [ "!id" ] [ rid ] ) } ) ; if ( o . length > 2 ) { o [ o . length ] = "</Relationships>" ; o [ 1 ] = o [ 1 ] . replace ( "/>" , ">" ) } return o . join ( "" ) } function add _rels ( rels , rId , f , type , relobj ) { if ( ! relobj ) relobj = { } ; if ( ! rels [ "!id" ] ) rels [ "!id" ] = { } ; if ( rId < 0 ) for ( rId = 1 ; rels [ "!id" ] [ "rId" + rId ] ; ++ rId ) { } relobj . Id = "rId" + rId ; relobj . Type = type ; relobj . Target = f ; if ( relobj . Type == RELS . HLINK ) relobj . TargetMode = "External" ; if ( rels [ "!id" ] [ relobj . Id ] ) throw new Error ( "Cannot rewrite rId " + rId ) ; rels [ "!id" ] [ relobj . Id ] = relobj ; rels [ ( "/" + relobj . Target ) . replace ( "//" , "/" ) ] = relobj ; return rId } var CT _ODS = "application/vnd.oasis.opendocument.spreadsheet" ; function parse _manifest ( d , opts ) { var str = xlml _normalize ( d ) ; var Rn ; var FEtag ; while ( Rn = xlmlregex . exec ( str ) ) switch ( Rn [ 3 ] ) { case "manifest" : break ; case "file-entry" : FEtag = parsexmltag ( Rn [ 0 ] , false ) ; if ( FEtag . path == "/" && FEtag . type !== CT _ODS ) throw new Error ( "This OpenDocument is not a spreadsheet" ) ; break ; case "encryption-data" : ; case "algorithm" : ; case "start-key-generation" : ; case "key-derivation" : throw new Error ( "Unsupported ODS Encryption" ) ; default : if ( opts && opts . WTF ) throw Rn ; } } function write _manifest ( manifest , opts ) { var o = [ XML _HEADER ] ; o . push ( '<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">\n' ) ; o . push ( ' <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>\n' ) ; for ( var i = 0 ; i < manifest . length ; ++ i ) o . push ( ' <manifest:file-entry manifest:full-path="' + manifest [ i ] [ 0 ] + '" manifest:media-type="' + manifest [ i ] [ 1 ] + '"/>\n' ) ; o . push ( "</manifest:manifest>" ) ; return o . join ( "" ) } function write _rdf _type ( file , res , tag ) { return [ ' <rdf:Description rdf:about="' + file + '">\n' , ' <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/' + ( tag || "odf" ) + "#" + res + '"/>\n' , " </rdf:Description>\n" ] . join ( "" ) } function write _rdf _has ( base , file ) { return [ ' <rdf:Description rdf:about="' + base + '">\n' , ' <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="' + file + '"/>\n' , " </rdf:Description>\n" ] . join ( "" ) } function write _rdf ( rdf , opts ) { var o = [ XML _HEADER ] ; o . push ( '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n' ) ; for ( var i = 0 ; i != rdf . length ; ++ i ) { o . push ( write _rdf _type ( rdf [ i ] [ 0 ] , rdf [ i ] [ 1 ] ) ) ; o . push ( write _rdf _has ( "" , rdf [ i ] [ 0 ] ) ) } o . push ( write _rdf _type ( "" , "Document" , "pkg" ) ) ; o . push ( "</rdf:RDF>" ) ; return o . join ( "" ) } var write _
return parse _CellStyleXF ( blob , length , 1 , opts ) } function parse _XF ( blob , length , opts ) { var o = { } ; o . ifnt = blob . read _shift ( 2 ) ; o . ifmt = blob . read _shift ( 2 ) ; o . flags = blob . read _shift ( 2 ) ; o . fStyle = o . flags >> 2 & 1 ; length -= 6 ; o . data = parse _CellStyleXF ( blob , length , o . fStyle , opts ) ; return o } function parse _Guts ( blob , length ) { blob . l += 4 ; var out = [ blob . read _shift ( 2 ) , blob . read _shift ( 2 ) ] ; if ( out [ 0 ] !== 0 ) out [ 0 ] -- ; if ( out [ 1 ] !== 0 ) out [ 1 ] -- ; if ( out [ 0 ] > 7 || out [ 1 ] > 7 ) throw new Error ( "Bad Gutters: " + out . join ( "|" ) ) ; return out } function parse _BoolErr ( blob , length , opts ) { var cell = parse _XLSCell ( blob , 6 ) ; if ( opts . biff == 2 ) ++ blob . l ; var val = parse _Bes ( blob , 2 ) ; cell . val = val ; cell . t = val === true || val === false ? "b" : "e" ; return cell } function parse _Number ( blob , length ) { var cell = parse _XLSCell ( blob , 6 ) ; var xnum = parse _Xnum ( blob , 8 ) ; cell . val = xnum ; return cell } var parse _XLHeaderFooter = parse _OptXLUnicodeString ; function parse _SupBook ( blob , length , opts ) { var end = blob . l + length ; var ctab = blob . read _shift ( 2 ) ; var cch = blob . read _shift ( 2 ) ; var virtPath ; if ( cch >= 1 && cch <= 255 ) virtPath = parse _XLUnicodeStringNoCch ( blob , cch ) ; var rgst = blob . read _shift ( end - blob . l ) ; opts . sbcch = cch ; return [ cch , ctab , virtPath , rgst ] } function parse _ExternName ( blob , length , opts ) { var flags = blob . read _shift ( 2 ) ; var body ; var o = { fBuiltIn : flags & 1 , fWantAdvise : flags >>> 1 & 1 , fWantPict : flags >>> 2 & 1 , fOle : flags >>> 3 & 1 , fOleLink : flags >>> 4 & 1 , cf : flags >>> 5 & 1023 , fIcon : flags >>> 15 & 1 } ; if ( opts . sbcch === 14849 ) body = parse _AddinUdf ( blob , length - 2 , opts ) ; o . body = body || blob . read _shift ( length - 2 ) ; if ( typeof body === "string" ) o . Name = body ; return o } function parse _Lbl ( blob , length , opts ) { var target = blob . l + length ; var flags = blob . read _shift ( 2 ) ; var chKey = blob . read _shift ( 1 ) ; var cch = blob . read _shift ( 1 ) ; var cce = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; var itab = 0 ; if ( ! opts || opts . biff >= 5 ) { blob . l += 2 ; itab = blob . read _shift ( 2 ) ; blob . l += 4 } var name = parse _XLUnicodeStringNoCch ( blob , cch , opts ) ; var npflen = target - blob . l ; if ( opts && opts . biff == 2 ) -- npflen ; var rgce = target == blob . l || cce == 0 ? [ ] : parse _NameParsedFormula ( blob , npflen , opts , cce ) ; return { chKey : chKey , Name : name , itab : itab , rgce : rgce } } function parse _ExternSheet ( blob , length , opts ) { if ( opts . biff < 8 ) return parse _ShortXLUnicodeString ( blob , length , opts ) ; var o = [ ] , target = blob . l + length , len = blob . read _shift ( 2 ) ; while ( len -- !== 0 ) o . push ( parse _XTI ( blob , 6 ) ) ; var oo = [ ] ; return o } function parse _NameCmt ( blob , length , opts ) { if ( opts . biff < 8 ) { blob . l += length ; return } var cchName = blob . read _shift ( 2 ) ; var cchComment = blob . read _shift ( 2 ) ; var name = parse _XLUnicodeStringNoCch ( blob , cchName , opts ) ; var comment = parse _XLUnicodeStringNoCch ( blob , cchComment , opts ) ; return [ name , comment ] } function parse _ShrFmla ( blob , length , opts ) { var ref = parse _RefU ( blob , 6 ) ; blob . l ++ ; var cUse = blob . read _shift ( 1 ) ; length -= 8 ; return [ parse _SharedParsedFormula ( blob , length , opts ) , cUse ] } function parse _Array ( blob , length , opts ) { var ref = parse _Ref ( blob , 6 ) ; switch ( opts . biff ) { case 2 : blob . l ++ ; length -= 7 ; break ; case 3 : ; case 4 : blob . l += 2 ; length -= 8 ; break ; default : blob . l += 6 ; length -= 12 ; } return [ ref , parse _ArrayParsedFormula ( blob , length , opts , ref ) ] } function parse _MTRSettings ( blob , length ) { var fMTREnabled = blob . read _shift ( 4 ) !== 0 ; var fUserSetThreadCount = blob . read _shift ( 4 ) !== 0 ; var cUserThreadCount = blob . read _shift ( 4 ) ; return [ fMTREnabled , fUserSetThreadCount , cUserThreadCount ] } function parse _NoteSh ( blob , length , opts ) { if ( opts . biff < 8 ) return ; var row = blob . read _shift ( 2 ) , col = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) , idObj = blob . read _shift ( 2 ) ; var stAuthor = parse _XLUnicodeString2 ( blob , 0 , opts ) ; if ( opts . biff < 8 ) blob . read _shift ( 1 ) ; return [ { r : row , c : col } , stAuthor , idObj , flags ] } function parse _Note ( blob , length , opts ) { return parse _NoteSh ( blob , length , opts ) } function parse _MergeCells ( blob , length ) { var merges = [ ] ; var cmcs = blob . read _shift ( 2 ) ; while ( cmcs -- ) merges . push ( parse _Ref8U ( blob , length ) ) ; return merges } function parse _Obj ( blob , length , opts ) { if ( opts && opts . biff < 8 ) return parse _BIFF5Obj ( blob , length , opts ) ; var cmo = parse _FtCmo ( blob , 22 ) ; var fts = parse _FtArray ( blob , length - 22 , cmo [ 1 ] ) ; return { cmo : cmo , ft : fts } } var parse _BIFF5OT = [ ] ; parse _BIFF5OT [ 8 ] = function ( blob , length , opts ) { var tgt = blob . l + length ; blob . l += 10 ; var cf = blob . read _shift ( 2 ) ; blob . l += 4 ; var cbPictFmla = blob . read _shift ( 2 ) ; blob . l += 2 ; var grbit = blob . read _shift ( 2 ) ; blob . l += 4 ; var cchName = blob . r
var o = opts || { } , OLD _WTF = ! ! o . WTF ; o . WTF = true ; try { var out = SYLK . to _workbook ( d , o ) ; o . WTF = OLD _WTF ; return out } catch ( e ) { o . WTF = OLD _WTF ; if ( ! e . message . match ( /SYLK bad record ID/ ) && OLD _WTF ) throw e ; return PRN . to _workbook ( d , opts ) } } var WK _ = function ( ) { function lotushopper ( data , cb , opts ) { if ( ! data ) return ; prep _blob ( data , data . l || 0 ) ; var Enum = opts . Enum || WK1Enum ; while ( data . l < data . length ) { var RT = data . read _shift ( 2 ) ; var R = Enum [ RT ] || Enum [ 255 ] ; var length = data . read _shift ( 2 ) ; var tgt = data . l + length ; var d = R . f ( data , length , opts ) ; data . l = tgt ; if ( cb ( d , R . n , RT ) ) return } } function lotus _to _workbook ( d , opts ) { switch ( opts . type ) { case "base64" : return lotus _to _workbook _buf ( s2a ( Base64 . decode ( d ) ) , opts ) ; case "binary" : return lotus _to _workbook _buf ( s2a ( d ) , opts ) ; case "buffer" : ; case "array" : return lotus _to _workbook _buf ( d , opts ) ; } throw "Unsupported type " + opts . type } function lotus _to _workbook _buf ( d , opts ) { if ( ! d ) return d ; var o = opts || { } ; if ( DENSE != null && o . dense == null ) o . dense = DENSE ; var s = o . dense ? [ ] : { } , n = "Sheet1" , sidx = 0 ; var sheets = { } , snames = [ n ] ; var refguess = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; if ( d [ 2 ] == 2 ) o . Enum = WK1Enum ; else if ( d [ 2 ] == 26 ) o . Enum = WK3Enum ; else if ( d [ 2 ] == 14 ) { o . Enum = WK3Enum ; o . qpro = true ; d . l = 0 } else throw new Error ( "Unrecognized LOTUS BOF " + d [ 2 ] ) ; lotushopper ( d , function ( val , Rn , RT ) { if ( d [ 2 ] == 2 ) switch ( RT ) { case 0 : o . vers = val ; if ( val >= 4096 ) o . qpro = true ; break ; case 6 : refguess = val ; break ; case 15 : if ( ! o . qpro ) val [ 1 ] . v = val [ 1 ] . v . substr ( 1 ) ; case 13 : ; case 14 : ; case 16 : ; case 51 : if ( RT == 14 && ( val [ 2 ] & 112 ) == 112 && ( val [ 2 ] & 15 ) > 1 && ( val [ 2 ] & 15 ) < 15 ) { val [ 1 ] . z = o . dateNF || SSF . _table [ 14 ] ; if ( o . cellDates ) { val [ 1 ] . t = "d" ; val [ 1 ] . v = numdate ( val [ 1 ] . v ) } } if ( o . dense ) { if ( ! s [ val [ 0 ] . r ] ) s [ val [ 0 ] . r ] = [ ] ; s [ val [ 0 ] . r ] [ val [ 0 ] . c ] = val [ 1 ] } else s [ encode _cell ( val [ 0 ] ) ] = val [ 1 ] ; break ; } else switch ( RT ) { case 22 : val [ 1 ] . v = val [ 1 ] . v . substr ( 1 ) ; case 23 : ; case 24 : ; case 25 : ; case 37 : ; case 39 : ; case 40 : if ( val [ 3 ] > sidx ) { s [ "!ref" ] = encode _range ( refguess ) ; sheets [ n ] = s ; s = o . dense ? [ ] : { } ; refguess = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; sidx = val [ 3 ] ; n = "Sheet" + ( sidx + 1 ) ; snames . push ( n ) } s [ encode _cell ( val [ 0 ] ) ] = val [ 1 ] ; if ( refguess . e . c < val [ 0 ] . c ) refguess . e . c = val [ 0 ] . c ; if ( refguess . e . r < val [ 0 ] . r ) refguess . e . r = val [ 0 ] . r ; break ; default : break ; } } , o ) ; s [ "!ref" ] = encode _range ( refguess ) ; sheets [ n ] = s ; return { SheetNames : snames , Sheets : sheets } } function parse _RANGE ( blob , length ) { var o = { s : { c : 0 , r : 0 } , e : { c : 0 , r : 0 } } ; o . s . c = blob . read _shift ( 2 ) ; o . s . r = blob . read _shift ( 2 ) ; o . e . c = blob . read _shift ( 2 ) ; o . e . r = blob . read _shift ( 2 ) ; if ( o . s . c == 65535 ) o . s . c = o . e . c = o . s . r = o . e . r = 0 ; return o } function parse _cell ( blob , length , opts ) { var o = [ { c : 0 , r : 0 } , { t : "n" , v : 0 } , 0 ] ; if ( opts . qpro && opts . vers != 20768 ) { o [ 0 ] . c = blob . read _shift ( 1 ) ; blob . l ++ ; o [ 0 ] . r = blob . read _shift ( 2 ) ; blob . l += 2 } else { o [ 2 ] = blob . read _shift ( 1 ) ; o [ 0 ] . c = blob . read _shift ( 2 ) ; o [ 0 ] . r = blob . read _shift ( 2 ) } return o } function parse _LABEL ( blob , length , opts ) { var tgt = blob . l + length ; var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . t = "s" ; if ( opts . vers == 20768 ) { blob . l ++ ; var len = blob . read _shift ( 1 ) ; o [ 1 ] . v = blob . read _shift ( len , "utf8" ) ; return o } if ( opts . qpro ) blob . l ++ ; o [ 1 ] . v = blob . read _shift ( tgt - blob . l , "cstr" ) ; return o } function parse _INTEGER ( blob , length , opts ) { var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 2 , "i" ) ; return o } function parse _NUMBER ( blob , length , opts ) { var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 8 , "f" ) ; return o } function parse _FORMULA ( blob , length , opts ) { var tgt = blob . l + length ; var o = parse _cell ( blob , length , opts ) ; o [ 1 ] . v = blob . read _shift ( 8 , "f" ) ; if ( opts . qpro ) blob . l = tgt ; else { var flen = blob . read _shift ( 2 ) ; blob . l += flen } return o } function parse _cell _3 ( blob , length ) { var o = [ { c : 0 , r : 0 } , { t : "n" , v : 0 } , 0 ] ; o [ 0 ] . r = blob . read _shift ( 2 ) ; o [ 3 ] = blob [ blob . l ++ ] ; o [ 0 ] . c = blob [ blob . l ++ ] ; return o } function parse _LABEL _16 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; o [ 1 ] . t = "s" ; o [ 1 ] . v = blob . read _shift ( length - 4 , "cstr" ) ; return o } function parse _NUMBER _18 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; o [ 1 ] . v = blob . read _shift ( 2 ) ; var v = o [ 1 ] . v >> 1 ; if ( o [ 1 ] . v & 1 ) { switch ( v & 7 ) { case 1 : v = ( v >> 3 ) * 500 ; break ; case 2 : v = ( v >> 3 ) / 20 ; break ; case 4 : v = ( v >> 3 ) / 2e3 ; break ; case 6 : v = ( v >> 3 ) / 16 ; break ; case 7 : v = ( v >> 3 ) / 64 ; break ; default : throw "unknown NUMBER_18 encoding " + ( v & 7 ) ; } } o [ 1 ] . v = v ; return o } function parse _NUMBER _17 ( blob , length ) { var o = parse _cell _3 ( blob , length ) ; var v1 = blob . read _shift ( 4 ) ; var v2 = blob . read _shift ( 4 ) ; var e = b
o [ o . length ] = '<dxfs count="0"/>' ; o [ o . length ] = '<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4"/>' ; if ( o . length > 2 ) { o [ o . length ] = "</styleSheet>" ; o [ 1 ] = o [ 1 ] . replace ( "/>" , ">" ) } return o . join ( "" ) } function parse _BrtFmt ( data , length ) { var ifmt = data . read _shift ( 2 ) ; var stFmtCode = parse _XLWideString ( data , length - 2 ) ; return [ ifmt , stFmtCode ] } function write _BrtFmt ( i , f , o ) { if ( ! o ) o = new _buf ( 6 + 4 * f . length ) ; o . write _shift ( 2 , i ) ; write _XLWideString ( f , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _BrtFont ( data , length , opts ) { var out = { } ; out . sz = data . read _shift ( 2 ) / 20 ; var grbit = parse _FontFlags ( data , 2 , opts ) ; if ( grbit . fCondense ) out . condense = 1 ; if ( grbit . fExtend ) out . extend = 1 ; if ( grbit . fShadow ) out . shadow = 1 ; if ( grbit . fOutline ) out . outline = 1 ; if ( grbit . fStrikeout ) out . strike = 1 ; if ( grbit . fItalic ) out . italic = 1 ; var bls = data . read _shift ( 2 ) ; if ( bls === 700 ) out . bold = 1 ; switch ( data . read _shift ( 2 ) ) { case 1 : out . vertAlign = "superscript" ; break ; case 2 : out . vertAlign = "subscript" ; break ; } var underline = data . read _shift ( 1 ) ; if ( underline != 0 ) out . underline = underline ; var family = data . read _shift ( 1 ) ; if ( family > 0 ) out . family = family ; var bCharSet = data . read _shift ( 1 ) ; if ( bCharSet > 0 ) out . charset = bCharSet ; data . l ++ ; out . color = parse _BrtColor ( data , 8 ) ; switch ( data . read _shift ( 1 ) ) { case 1 : out . scheme = "major" ; break ; case 2 : out . scheme = "minor" ; break ; } out . name = parse _XLWideString ( data , length - 21 ) ; return out } function write _BrtFont ( font , o ) { if ( ! o ) o = new _buf ( 25 + 4 * 32 ) ; o . write _shift ( 2 , font . sz * 20 ) ; write _FontFlags ( font , o ) ; o . write _shift ( 2 , font . bold ? 700 : 400 ) ; var sss = 0 ; if ( font . vertAlign == "superscript" ) sss = 1 ; else if ( font . vertAlign == "subscript" ) sss = 2 ; o . write _shift ( 2 , sss ) ; o . write _shift ( 1 , font . underline || 0 ) ; o . write _shift ( 1 , font . family || 0 ) ; o . write _shift ( 1 , font . charset || 0 ) ; o . write _shift ( 1 , 0 ) ; write _BrtColor ( font . color , o ) ; var scheme = 0 ; if ( font . scheme == "major" ) scheme = 1 ; if ( font . scheme == "minor" ) scheme = 2 ; o . write _shift ( 1 , scheme ) ; write _XLWideString ( font . name , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } var XLSBFillPTNames = [ "none" , "solid" , "mediumGray" , "darkGray" , "lightGray" , "darkHorizontal" , "darkVertical" , "darkDown" , "darkUp" , "darkGrid" , "darkTrellis" , "lightHorizontal" , "lightVertical" , "lightDown" , "lightUp" , "lightGrid" , "lightTrellis" , "gray125" , "gray0625" ] ; var rev _XLSBFillPTNames = evert ( XLSBFillPTNames ) ; function write _BrtFill ( fill , o ) { if ( ! o ) o = new _buf ( 4 * 3 + 8 * 7 + 16 * 1 ) ; var fls = rev _XLSBFillPTNames [ fill . patternType ] ; if ( fls == null ) fls = 40 ; o . write _shift ( 4 , fls ) ; var j = 0 ; if ( fls != 40 ) { write _BrtColor ( { auto : 1 } , o ) ; write _BrtColor ( { auto : 1 } , o ) ; for ( ; j < 12 ; ++ j ) o . write _shift ( 4 , 0 ) } else { for ( ; j < 4 ; ++ j ) o . write _shift ( 4 , 0 ) ; for ( ; j < 12 ; ++ j ) o . write _shift ( 4 , 0 ) } return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _BrtXF ( data , length ) { var ixfeParent = data . read _shift ( 2 ) ; var ifmt = data . read _shift ( 2 ) ; parsenoop ( data , length - 4 ) ; return { ixfe : ixfeParent , ifmt : ifmt } } function write _BrtXF ( data , ixfeP , o ) { if ( ! o ) o = new _buf ( 16 ) ; o . write _shift ( 2 , ixfeP || 0 ) ; o . write _shift ( 2 , data . numFmtId || 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 2 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; return o } function write _Blxf ( data , o ) { if ( ! o ) o = new _buf ( 10 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 4 , 0 ) ; o . write _shift ( 4 , 0 ) ; return o } function write _BrtBorder ( border , o ) { if ( ! o ) o = new _buf ( 51 ) ; o . write _shift ( 1 , 0 ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; write _Blxf ( null , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BrtStyle ( style , o ) { if ( ! o ) o = new _buf ( 12 + 4 * 10 ) ; o . write _shift ( 4 , style . xfId ) ; o . write _shift ( 2 , 1 ) ; o . write _shift ( 1 , + style . builtinId ) ; o . write _shift ( 1 , 0 ) ; write _XLNullableWideString ( style . name || "" , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BrtBeginTableStyles ( cnt , defTableStyle , defPivotStyle ) { var o = new _buf ( 4 + 256 * 2 * 4 ) ; o . write _shift ( 4 , cnt ) ; write _XLNullableWideString ( defTableStyle , o ) ; write _XLNullableWideString ( defPivotStyle , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _sty _bin ( data , themes , opts ) { var styles = { } ; styles . NumberFmt = [ ] ; for ( var y in SSF . _table ) styles . NumberFmt [ y ] = SSF . _table [ y ] ; styles . CellXf = [ ] ; styles . Fonts = [ ] ; var state = [ ] ; var pass = false ; recordhopper ( data , function ho
var r = blob . read _shift ( opts && opts . biff == 12 ? 4 : 2 ) ; var c = parse _ColRelU ( blob , 2 ) ; return { r : r , c : c [ 0 ] , cRel : c [ 1 ] , rRel : c [ 2 ] } } function parse _RgceLoc _BIFF2 ( blob , length , opts ) { var r = parse _ColRelU ( blob , 2 ) ; var c = blob . read _shift ( 1 ) ; return { r : r [ 0 ] , c : c , cRel : r [ 1 ] , rRel : r [ 2 ] } } function parse _RgceLocRel ( blob , length , opts ) { var biff = opts && opts . biff ? opts . biff : 8 ; if ( biff >= 2 && biff <= 5 ) return parse _RgceLocRel _BIFF2 ( blob , length , opts ) ; var r = blob . read _shift ( biff >= 12 ? 4 : 2 ) ; var cl = blob . read _shift ( 2 ) ; var cRel = ( cl & 32768 ) >> 15 , rRel = ( cl & 16384 ) >> 14 ; cl &= 16383 ; if ( rRel == 1 ) while ( r > 524287 ) r -= 1048576 ; if ( cRel == 1 ) while ( cl > 8191 ) cl = cl - 16384 ; return { r : r , c : cl , cRel : cRel , rRel : rRel } } function parse _RgceLocRel _BIFF2 ( blob , length ) { var rl = blob . read _shift ( 2 ) ; var c = blob . read _shift ( 1 ) ; var rRel = ( rl & 32768 ) >> 15 , cRel = ( rl & 16384 ) >> 14 ; rl &= 16383 ; if ( rRel == 1 && rl >= 8192 ) rl = rl - 16384 ; if ( cRel == 1 && c >= 128 ) c = c - 256 ; return { r : rl , c : c , cRel : cRel , rRel : rRel } } function parse _PtgArea ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var area = parse _RgceArea ( blob , opts . biff >= 2 && opts . biff <= 5 ? 6 : 8 , opts ) ; return [ type , area ] } function parse _PtgArea3d ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var ixti = blob . read _shift ( 2 , "i" ) ; var w = 8 ; if ( opts ) switch ( opts . biff ) { case 5 : blob . l += 12 ; w = 6 ; break ; case 12 : w = 12 ; break ; } var area = parse _RgceArea ( blob , w , opts ) ; return [ type , ixti , area ] } function parse _PtgAreaErr ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; blob . l += opts && opts . biff > 8 ? 12 : 8 ; return [ type ] } function parse _PtgAreaErr3d ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var ixti = blob . read _shift ( 2 ) ; var w = 8 ; if ( opts ) switch ( opts . biff ) { case 5 : blob . l += 12 ; w = 6 ; break ; case 12 : w = 12 ; break ; } blob . l += w ; return [ type , ixti ] } function parse _PtgAreaN ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; var area = parse _RgceAreaRel ( blob , opts && opts . biff > 8 ? 12 : 8 , opts ) ; return [ type , area ] } function parse _PtgArray ( blob , length , opts ) { var type = ( blob [ blob . l ++ ] & 96 ) >> 5 ; blob . l += opts . biff == 2 ? 6 : opts . biff == 12 ? 14 : 7 ; return [ type ] } function parse _PtgAttrBaxcel ( blob , length ) { var bitSemi = blob [ blob . l + 1 ] & 1 ; var bitBaxcel = 1 ; blob . l += 4 ; return [ bitSemi , bitBaxcel ] } function parse _PtgAttrChoose ( blob , length , opts ) { blob . l += 2 ; var offset = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; var o = [ ] ; for ( var i = 0 ; i <= offset ; ++ i ) o . push ( blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ) ; return o } function parse _PtgAttrGoto ( blob , length , opts ) { var bitGoto = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitGoto , blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ] } function parse _PtgAttrIf ( blob , length , opts ) { var bitIf = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitIf , blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ] } function parse _PtgAttrIfError ( blob , length ) { var bitIf = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += 2 ; return [ bitIf , blob . read _shift ( 2 ) ] } function parse _PtgAttrSemi ( blob , length , opts ) { var bitSemi = blob [ blob . l + 1 ] & 255 ? 1 : 0 ; blob . l += opts && opts . biff == 2 ? 3 : 4 ; return [ bitSemi ] } function parse _PtgAttrSpaceType ( blob , length ) { var type = blob . read _shift ( 1 ) , cch = blob . read _shift ( 1 ) ; return [ type , cch ] } function parse _PtgAttrSpace ( blob , length ) { blob . read _shift ( 2 ) ; return parse _PtgAttrSpaceType ( blob , 2 ) } function parse _PtgAttrSpaceSemi ( blob , length ) { blob . read _shift ( 2 ) ; return parse _PtgAttrSpaceType ( blob , 2 ) } function parse _PtgRef ( blob , length , opts ) { var ptg = blob [ blob . l ] & 31 ; var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var loc = parse _RgceLoc ( blob , 0 , opts ) ; return [ type , loc ] } function parse _PtgRefN ( blob , length , opts ) { var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var loc = parse _RgceLocRel ( blob , 0 , opts ) ; return [ type , loc ] } function parse _PtgRef3d ( blob , length , opts ) { var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var ixti = blob . read _shift ( 2 ) ; var loc = parse _RgceLoc ( blob , 0 , opts ) ; return [ type , ixti , loc ] } function parse _PtgFunc ( blob , length , opts ) { var ptg = blob [ blob . l ] & 31 ; var type = ( blob [ blob . l ] & 96 ) >> 5 ; blob . l += 1 ; var iftab = blob . read _shift ( opts && opts . biff <= 3 ? 1 : 2 ) ; return [ FtabArgc [ iftab ] , Ftab [ iftab ] , type ] } function parse _PtgFuncVar ( blob , length , opts ) { blob . l ++ ; var cparams = blob . read _shift ( 1 ) , tab = opts && opts . biff <= 3 ? [ 0 , blob . read _shift ( 1 ) ] : parsetab ( blob ) ; return [ cparams , ( tab [ 0 ] === 0 ? Ftab : Cetab ) [ tab [ 1 ] ] ] } function parsetab ( blob , length ) { return [ blob [ blob . l + 1 ] >> 7 , blob . read _shift ( 2 ) & 32767 ] } function parse _PtgAttrSum ( blob , length , opts ) { blob . l += opts && opts . biff == 2 ? 3 : 4 ; return } var parse _PtgCo
419 : "GESTEP" , 420 : "ISEVEN" , 421 : "ISODD" , 422 : "MROUND" , 423 : "ERF" , 424 : "ERFC" , 425 : "BESSELJ" , 426 : "BESSELK" , 427 : "BESSELY" , 428 : "BESSELI" , 429 : "XIRR" , 430 : "XNPV" , 431 : "PRICEMAT" , 432 : "YIELDMAT" , 433 : "INTRATE" , 434 : "RECEIVED" , 435 : "DISC" , 436 : "PRICEDISC" , 437 : "YIELDDISC" , 438 : "TBILLEQ" , 439 : "TBILLPRICE" , 440 : "TBILLYIELD" , 441 : "PRICE" , 442 : "YIELD" , 443 : "DOLLARDE" , 444 : "DOLLARFR" , 445 : "NOMINAL" , 446 : "EFFECT" , 447 : "CUMPRINC" , 448 : "CUMIPMT" , 449 : "EDATE" , 450 : "EOMONTH" , 451 : "YEARFRAC" , 452 : "COUPDAYBS" , 453 : "COUPDAYS" , 454 : "COUPDAYSNC" , 455 : "COUPNCD" , 456 : "COUPNUM" , 457 : "COUPPCD" , 458 : "DURATION" , 459 : "MDURATION" , 460 : "ODDLPRICE" , 461 : "ODDLYIELD" , 462 : "ODDFPRICE" , 463 : "ODDFYIELD" , 464 : "RANDBETWEEN" , 465 : "WEEKNUM" , 466 : "AMORDEGRC" , 467 : "AMORLINC" , 468 : "CONVERT" , 724 : "SHEETJS" , 469 : "ACCRINT" , 470 : "ACCRINTM" , 471 : "WORKDAY" , 472 : "NETWORKDAYS" , 473 : "GCD" , 474 : "MULTINOMIAL" , 475 : "LCM" , 476 : "FVSCHEDULE" , 477 : "CUBEKPIMEMBER" , 478 : "CUBESET" , 479 : "CUBESETCOUNT" , 480 : "IFERROR" , 481 : "COUNTIFS" , 482 : "SUMIFS" , 483 : "AVERAGEIF" , 484 : "AVERAGEIFS" } ; var FtabArgc = { 2 : 1 , 3 : 1 , 15 : 1 , 16 : 1 , 17 : 1 , 18 : 1 , 19 : 0 , 20 : 1 , 21 : 1 , 22 : 1 , 23 : 1 , 24 : 1 , 25 : 1 , 26 : 1 , 27 : 2 , 30 : 2 , 31 : 3 , 32 : 1 , 33 : 1 , 38 : 1 , 39 : 2 , 40 : 3 , 41 : 3 , 42 : 3 , 43 : 3 , 44 : 3 , 45 : 3 , 47 : 3 , 48 : 2 , 53 : 1 , 61 : 3 , 65 : 3 , 66 : 3 , 67 : 1 , 68 : 1 , 69 : 1 , 70 : 1 , 71 : 1 , 72 : 1 , 73 : 1 , 75 : 1 , 76 : 1 , 77 : 1 , 79 : 2 , 80 : 2 , 83 : 1 , 85 : 0 , 86 : 1 , 90 : 1 , 97 : 2 , 98 : 1 , 99 : 1 , 101 : 3 , 102 : 3 , 105 : 1 , 111 : 1 , 112 : 1 , 113 : 1 , 114 : 1 , 117 : 2 , 118 : 1 , 119 : 4 , 121 : 1 , 126 : 1 , 127 : 1 , 128 : 1 , 129 : 1 , 130 : 1 , 131 : 1 , 133 : 1 , 134 : 1 , 135 : 1 , 136 : 2 , 137 : 2 , 138 : 2 , 140 : 1 , 141 : 1 , 142 : 3 , 143 : 4 , 144 : 4 , 162 : 1 , 163 : 1 , 164 : 1 , 165 : 2 , 172 : 1 , 175 : 2 , 176 : 2 , 177 : 3 , 178 : 2 , 179 : 1 , 184 : 1 , 189 : 3 , 190 : 1 , 195 : 3 , 196 : 3 , 197 : 1 , 198 : 1 , 199 : 3 , 201 : 1 , 207 : 4 , 210 : 3 , 211 : 1 , 212 : 2 , 213 : 2 , 214 : 1 , 215 : 1 , 229 : 1 , 230 : 1 , 231 : 1 , 232 : 1 , 233 : 1 , 234 : 1 , 235 : 3 , 244 : 1 , 247 : 4 , 252 : 2 , 257 : 1 , 261 : 1 , 271 : 1 , 273 : 4 , 274 : 2 , 275 : 2 , 276 : 2 , 277 : 3 , 278 : 3 , 279 : 1 , 280 : 3 , 281 : 3 , 282 : 3 , 283 : 1 , 284 : 1 , 285 : 2 , 286 : 4 , 287 : 3 , 288 : 2 , 289 : 4 , 290 : 3 , 291 : 3 , 292 : 3 , 293 : 4 , 294 : 1 , 295 : 3 , 296 : 1 , 297 : 3 , 298 : 1 , 299 : 2 , 300 : 3 , 301 : 3 , 302 : 4 , 303 : 2 , 304 : 2 , 305 : 2 , 306 : 2 , 307 : 2 , 308 : 2 , 309 : 3 , 310 : 2 , 311 : 2 , 312 : 2 , 313 : 2 , 314 : 2 , 315 : 2 , 316 : 4 , 325 : 2 , 326 : 2 , 327 : 2 , 328 : 2 , 331 : 2 , 332 : 2 , 337 : 2 , 342 : 1 , 343 : 1 , 346 : 2 , 347 : 1 , 350 : 4 , 351 : 3 , 352 : 1 , 353 : 2 , 360 : 1 , 368 : 1 , 369 : 1 , 370 : 1 , 371 : 1 , 372 : 1 , 373 : 1 , 374 : 1 , 375 : 1 , 376 : 1 , 377 : 1 , 378 : 1 , 382 : 3 , 385 : 1 , 392 : 1 , 393 : 1 , 396 : 2 , 397 : 2 , 398 : 2 , 399 : 1 , 400 : 1 , 401 : 1 , 402 : 1 , 403 : 1 , 404 : 1 , 405 : 1 , 406 : 1 , 407 : 1 , 408 : 1 , 409 : 1 , 410 : 1 , 414 : 4 , 415 : 1 , 416 : 1 , 417 : 2 , 420 : 1 , 421 : 1 , 422 : 2 , 424 : 1 , 425 : 2 , 426 : 2 , 427 : 2 , 428 : 2 , 430 : 3 , 438 : 3 , 439 : 3 , 440 : 3 , 443 : 2 , 444 : 2 , 445 : 2 , 446 : 2 , 447 : 6 , 448 : 6 , 449 : 2 , 450 : 2 , 464 : 2 , 468 : 3 , 476 : 2 , 479 : 1 , 480 : 2 , 65535 : 0 } ; var XLSXFutureFunctions = { "_xlfn.ACOT" : "ACOT" , "_xlfn.ACOTH" : "ACOTH" , "_xlfn.AGGREGATE" : "AGGREGATE" , "_xlfn.ARABIC" : "ARABIC" , "_xlfn.AVERAGEIF" : "AVERAGEIF" , "_xlfn.AVERAGEIFS" : "AVERAGEIFS" , "_xlfn.BASE" : "BASE" , "_xlfn.BETA.DIST" : "BETA.DIST" , "_xlfn.BETA.INV" : "BETA.INV" , "_xlfn.BINOM.DIST" : "BINOM.DIST" , "_xlfn.BINOM.DIST.RANGE" : "BINOM.DIST.RANGE" , "_xlfn.BINOM.INV" : "BINOM.INV" , "_xlfn.BITAND" : "BITAND" , "_xlfn.BITLSHIFT" : "BITLSHIFT" , "_xlfn.BITOR" : "BITOR" , "_xlfn.BITRSHIFT" : "BITRSHIFT" , "_xlfn.BITXOR" : "BITXOR" , "_xlfn.CEILING.MATH" : "CEILING.MATH" , "_xlfn.CEILING.PRECISE" : "CEILING.PRECISE" , "_xlfn.CHISQ.DIST" : "CHISQ.DIST" , "_xlfn.CHISQ.DIST.RT" : "CHISQ.DIST.RT" , "_xlfn.CHISQ.INV" : "CHISQ.INV" , "_xlfn.CHISQ.INV.RT" : "CHISQ.INV.RT" , "_xlfn.CHISQ.TEST" : "CHISQ.TEST" , "_xlfn.COMBINA" : "COMBINA" , "_xlfn.CONFIDENCE.NORM" : "CONFIDENCE.NORM" , "_xlfn.CONFIDENCE.T" : "CONFIDENCE.T" , "_xlfn.COT" : "COT" , "_xlfn.COTH" : "COTH" , "_xlfn.COUNTIFS" : "COUNTIFS" , "_xlfn.COVARIANCE.P" : "COVARIANCE.P" , "_xlfn.COVARIANCE.S" : "COVARIANCE.S" , "_xlfn.CSC" : "CSC" , "_xlfn.CSCH" : "CSCH" , "_xlfn.DAYS" : "DAYS" , "_xlfn.DECIMAL" : "DECIMAL" , "_xlfn.ECMA.CEILING" : "ECMA.CEILING" , "_xlfn.ERF.PRECISE" : "ERF.PRECISE" , "_xlfn.ERFC.PRECISE" : "ERFC.PRECISE" , "_xlfn.EXPON.DIST" : "EXPON.DIST" , "_xlfn.F.DIST" : "F.DIST" , "_xlfn.F.DIST.RT" : "F.DIST.RT" , "_xlfn.F.INV" : "F.INV" , "_xlfn.F.INV.RT" : "F.INV.RT" , "_xlfn.F.TEST" : "F.TEST" , "_xlfn.FILTERXML" : "FILTERXML" , "_xlfn.FLOOR.MATH" : "FLOOR.MATH" , "_xlfn.FLOOR.PRECISE" : "FLOOR.PRECISE" , "_xlfn.FORMULATEXT" : "FORMULATEXT" , "_xlfn.GAMMA" : "GAMMA" , "_xlfn.GAMMA.DIST" : "GAMMA.DIST" , "_xlfn.GAMMA.INV" : "GAMMA.INV" , "_xlfn.GAMMALN.PRECISE" : "GAMMALN.PRECISE" , "_xlfn.GAUSS" : "GAUSS" , "_xlfn.HYPGEOM.DIST" : "HYPGEOM.DIST" , "_xlfn.IFNA" : "IFNA" , "_xlfn.IFERROR" : "IFERROR" , "_xlfn.IMCOSH" : "IMCOSH" , " _x
if ( ! s [ R ] ) s [ R ] = [ ] ; s [ R ] [ C ] = p } else s [ encode _col ( C ) + rr ] = p ; if ( refguess . s . r > row . r ) refguess . s . r = row . r ; if ( refguess . s . c > C ) refguess . s . c = C ; if ( refguess . e . r < row . r ) refguess . e . r = row . r ; if ( refguess . e . c < C ) refguess . e . c = C ; break ; case 176 : mergecells . push ( val ) ; break ; case 494 : var rel = rels [ "!id" ] [ val . relId ] ; if ( rel ) { val . Target = rel . Target ; if ( val . loc ) val . Target += "#" + val . loc ; val . Rel = rel } for ( R = val . rfx . s . r ; R <= val . rfx . e . r ; ++ R ) for ( C = val . rfx . s . c ; C <= val . rfx . e . c ; ++ C ) { if ( opts . dense ) { if ( ! s [ R ] ) s [ R ] = [ ] ; if ( ! s [ R ] [ C ] ) s [ R ] [ C ] = { t : "z" , v : undefined } ; s [ R ] [ C ] . l = val } else { addr = encode _cell ( { c : C , r : R } ) ; if ( ! s [ addr ] ) s [ addr ] = { t : "z" , v : undefined } ; s [ addr ] . l = val } } break ; case 426 : if ( ! opts . cellFormula ) break ; array _formulae . push ( val ) ; cell = opts . dense ? s [ R ] [ C ] : s [ encode _col ( C ) + rr ] ; cell . f = stringify _formula ( val [ 1 ] , refguess , { r : row . r , c : C } , supbooks , opts ) ; cell . F = encode _range ( val [ 0 ] ) ; break ; case 427 : if ( ! opts . cellFormula ) break ; shared _formulae [ encode _cell ( val [ 0 ] . s ) ] = val [ 1 ] ; cell = opts . dense ? s [ R ] [ C ] : s [ encode _col ( C ) + rr ] ; cell . f = stringify _formula ( val [ 1 ] , refguess , { r : row . r , c : C } , supbooks , opts ) ; break ; case 60 : if ( ! opts . cellStyles ) break ; while ( val . e >= val . s ) { colinfo [ val . e -- ] = { width : val . w / 256 , hidden : ! ! ( val . flags & 1 ) } ; if ( ! seencol ) { seencol = true ; find _mdw _colw ( val . w / 256 ) } process _col ( colinfo [ val . e + 1 ] ) } break ; case 161 : s [ "!autofilter" ] = { ref : encode _range ( val ) } ; break ; case 476 : s [ "!margins" ] = val ; break ; case 175 : ; case 644 : ; case 625 : ; case 562 : ; case 396 : ; case 1112 : ; case 1146 : ; case 471 : ; case 1050 : ; case 649 : ; case 1105 : ; case 49 : ; case 589 : ; case 607 : ; case 564 : ; case 1055 : ; case 168 : ; case 174 : ; case 1180 : ; case 499 : ; case 64 : ; case 1053 : ; case 550 : ; case 171 : ; case 167 : ; case 1177 : ; case 169 : ; case 1181 : ; case 551 : ; case 552 : ; case 661 : ; case 639 : ; case 478 : ; case 151 : ; case 537 : ; case 477 : ; case 536 : ; case 1103 : ; case 680 : ; case 1104 : ; case 1024 : ; case 152 : ; case 663 : ; case 535 : ; case 678 : ; case 504 : ; case 1043 : ; case 428 : ; case 170 : ; case 50 : ; case 2070 : ; case 485 : ; case 1045 : ; case 147 : break ; case 35 : pass = true ; break ; case 36 : pass = false ; break ; case 37 : break ; case 38 : break ; default : if ( ( R _n || "" ) . indexOf ( "Begin" ) > 0 ) { } else if ( ( R _n || "" ) . indexOf ( "End" ) > 0 ) { } else if ( ! pass || opts . WTF ) throw new Error ( "Unexpected record " + RT + " " + R _n ) ; } } , opts ) ; delete opts . supbooks ; delete opts [ "!row" ] ; if ( ! s [ "!ref" ] && ( refguess . s . r < 2e6 || ref && ( ref . e . r > 0 || ref . e . c > 0 || ref . s . r > 0 || ref . s . c > 0 ) ) ) s [ "!ref" ] = encode _range ( ref || refguess ) ; if ( opts . sheetRows && s [ "!ref" ] ) { var tmpref = safe _decode _range ( s [ "!ref" ] ) ; if ( opts . sheetRows < + tmpref . e . r ) { tmpref . e . r = opts . sheetRows - 1 ; if ( tmpref . e . r > refguess . e . r ) tmpref . e . r = refguess . e . r ; if ( tmpref . e . r < tmpref . s . r ) tmpref . s . r = tmpref . e . r ; if ( tmpref . e . c > refguess . e . c ) tmpref . e . c = refguess . e . c ; if ( tmpref . e . c < tmpref . s . c ) tmpref . s . c = tmpref . e . c ; s [ "!fullref" ] = s [ "!ref" ] ; s [ "!ref" ] = encode _range ( tmpref ) } } if ( mergecells . length > 0 ) s [ "!merges" ] = mergecells ; if ( colinfo . length > 0 ) s [ "!cols" ] = colinfo ; if ( rowinfo . length > 0 ) s [ "!rows" ] = rowinfo ; return s } function write _ws _bin _cell ( ba , cell , R , C , opts , ws ) { if ( cell . v === undefined ) return "" ; var vv = "" ; var olddate = null ; switch ( cell . t ) { case "b" : vv = cell . v ? "1" : "0" ; break ; case "d" : cell . z = cell . z || SSF . _table [ 14 ] ; olddate = cell . v ; cell . v = datenum ( cell . v ) ; cell . t = "n" ; break ; case "n" : ; case "e" : vv = "" + cell . v ; break ; default : vv = cell . v ; break ; } var o = { r : R , c : C } ; o . s = get _cell _style ( opts . cellXfs , cell , opts ) ; if ( cell . l ) ws [ "!links" ] . push ( [ encode _cell ( o ) , cell . l ] ) ; if ( cell . c ) ws [ "!comments" ] . push ( [ encode _cell ( o ) , cell . c ] ) ; switch ( cell . t ) { case "s" : ; case "str" : if ( opts . bookSST ) { vv = get _sst _id ( opts . Strings , cell . v ) ; o . t = "s" ; o . v = vv ; write _record ( ba , "BrtCellIsst" , write _BrtCellIsst ( cell , o ) ) } else { o . t = "str" ; write _record ( ba , "BrtCellSt" , write _BrtCellSt ( cell , o ) ) } return ; case "n" : if ( cell . v == ( cell . v | 0 ) && cell . v > - 1e3 && cell . v < 1e3 ) write _record ( ba , "BrtCellRk" , write _BrtCellRk ( cell , o ) ) ; else write _record ( ba , "BrtCellReal" , write _BrtCellReal ( cell , o ) ) ; if ( olddate ) { cell . t = "d" ; cell . v = olddate } return ; case "b" : o . t = "b" ; write _record ( ba , "BrtCellBool" , write _BrtCellBool ( cell , o ) ) ; return ; case "e" : o . t = "e" ; break ; } write _record ( ba , "BrtCellBlank" , write _BrtCellBlank ( cell , o ) ) } function write _CELLTABLE ( ba , ws , idx , opts , wb ) { var range = safe _decode _range ( ws [ "!ref" ] || "A1" ) , ref , rr = "" , cols = [ ] ; write _record ( ba , "BrtBeginSheetData" ) ; var dense = Array . isArray ( ws ) ; for ( var R = range . s . r ; R <= range . e . r ; ++ R ) { rr = encode _
if ( Rn [ 0 ] . slice ( - 2 ) === "/>" ) break ; else if ( Rn [ 1 ] === "/" ) xlml _set _prop ( Props , Rn [ 3 ] , str . slice ( pidx , Rn . index ) ) ; else pidx = Rn . index + Rn [ 0 ] . length ; break ; case "Paragraphs" : break ; case "Styles" : ; case "Workbook" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw new Error ( "Bad state: " + tmp . join ( "|" ) ) } else state . push ( [ Rn [ 3 ] , false ] ) ; break ; case "Comment" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw new Error ( "Bad state: " + tmp . join ( "|" ) ) ; xlml _clean _comment ( comment ) ; comments . push ( comment ) } else { state . push ( [ Rn [ 3 ] , false ] ) ; tmp = xlml _parsexmltag ( Rn [ 0 ] ) ; comment = { a : tmp . Author } } break ; case "AutoFilter" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw new Error ( "Bad state: " + tmp . join ( "|" ) ) } else if ( Rn [ 0 ] . charAt ( Rn [ 0 ] . length - 2 ) !== "/" ) { var AutoFilter = xlml _parsexmltag ( Rn [ 0 ] ) ; cursheet [ "!autofilter" ] = { ref : rc _to _a1 ( AutoFilter . Range ) . replace ( /\$/g , "" ) } ; state . push ( [ Rn [ 3 ] , true ] ) } break ; case "Name" : break ; case "ComponentOptions" : ; case "DocumentProperties" : ; case "CustomDocumentProperties" : ; case "OfficeDocumentSettings" : ; case "PivotTable" : ; case "PivotCache" : ; case "Names" : ; case "MapInfo" : ; case "PageBreaks" : ; case "QueryTable" : ; case "DataValidation" : ; case "Sorting" : ; case "Schema" : ; case "data" : ; case "ConditionalFormatting" : ; case "SmartTagType" : ; case "SmartTags" : ; case "ExcelWorkbook" : ; case "WorkbookOptions" : ; case "WorksheetOptions" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw new Error ( "Bad state: " + tmp . join ( "|" ) ) } else if ( Rn [ 0 ] . charAt ( Rn [ 0 ] . length - 2 ) !== "/" ) state . push ( [ Rn [ 3 ] , true ] ) ; break ; default : if ( state . length == 0 && Rn [ 3 ] == "document" ) return parse _fods ( str , opts ) ; if ( state . length == 0 && Rn [ 3 ] == "UOF" ) return parse _fods ( str , opts ) ; var seen = true ; switch ( state [ state . length - 1 ] [ 0 ] ) { case "OfficeDocumentSettings" : switch ( Rn [ 3 ] ) { case "AllowPNG" : break ; case "RemovePersonalInformation" : break ; case "DownloadComponents" : break ; case "LocationOfComponents" : break ; case "Colors" : break ; case "Color" : break ; case "Index" : break ; case "RGB" : break ; case "PixelsPerInch" : break ; case "TargetScreenSize" : break ; case "ReadOnlyRecommended" : break ; default : seen = false ; } break ; case "ComponentOptions" : switch ( Rn [ 3 ] ) { case "Toolbar" : break ; case "HideOfficeLogo" : break ; case "SpreadsheetAutoFit" : break ; case "Label" : break ; case "Caption" : break ; case "MaxHeight" : break ; case "MaxWidth" : break ; case "NextSheetNumber" : break ; default : seen = false ; } break ; case "ExcelWorkbook" : switch ( Rn [ 3 ] ) { case "WindowHeight" : break ; case "WindowWidth" : break ; case "WindowTopX" : break ; case "WindowTopY" : break ; case "TabRatio" : break ; case "ProtectStructure" : break ; case "ProtectWindows" : break ; case "ActiveSheet" : break ; case "DisplayInkNotes" : break ; case "FirstVisibleSheet" : break ; case "SupBook" : break ; case "SheetName" : break ; case "SheetIndex" : break ; case "SheetIndexFirst" : break ; case "SheetIndexLast" : break ; case "Dll" : break ; case "AcceptLabelsInFormulas" : break ; case "DoNotSaveLinkValues" : break ; case "Date1904" : break ; case "Iteration" : break ; case "MaxIterations" : break ; case "MaxChange" : break ; case "Path" : break ; case "Xct" : break ; case "Count" : break ; case "SelectedSheets" : break ; case "Calculation" : break ; case "Uncalced" : break ; case "StartupPrompt" : break ; case "Crn" : break ; case "ExternName" : break ; case "Formula" : break ; case "ColFirst" : break ; case "ColLast" : break ; case "WantAdvise" : break ; case "Boolean" : break ; case "Error" : break ; case "Text" : break ; case "OLE" : break ; case "NoAutoRecover" : break ; case "PublishObjects" : break ; case "DoNotCalculateBeforeSave" : break ; case "Number" : break ; case "RefModeR1C1" : break ; case "EmbedSaveSmartTags" : break ; default : seen = false ; } break ; case "WorkbookOptions" : switch ( Rn [ 3 ] ) { case "OWCVersion" : break ; case "Height" : break ; case "Width" : break ; default : seen = false ; } break ; case "WorksheetOptions" : switch ( Rn [ 3 ] ) { case "Visible" : if ( Rn [ 0 ] . slice ( - 2 ) === "/>" ) { } else if ( Rn [ 1 ] === "/" ) switch ( str . slice ( pidx , Rn . index ) ) { case "SheetHidden" : wsprops . Hidden = 1 ; break ; case "SheetVeryHidden" : wsprops . Hidden = 2 ; break ; } else pidx = Rn . index + Rn [ 0 ] . length ; break ; case "Header" : if ( ! cursheet [ "!margins" ] ) default _margins ( cursheet [ "!margins" ] = { } , "xlml" ) ; cursheet [ "!margins" ] . header = parsexmltag ( Rn [ 0 ] ) . Margin ; break ; case "Footer" : if ( ! cursheet [ "!margins" ] ) default _margins ( cursheet [ "!margins" ] = { } , "xlml" ) ; cursheet [ "!margins" ] . footer = parsexmltag ( Rn [ 0 ] ) . Margin ; break ; case "PageMargins" : var pagemargins = parsexmltag ( Rn [ 0 ] ) ; if ( ! cursheet [
break ; case "ScenMan" : break ; case "DCon" : break ; case "CellWatch" : break ; case "PrintRowCol" : break ; case "PrintGrid" : break ; case "PrintSize" : break ; case "XCT" : break ; case "CRN" : break ; case "Scl" : { } break ; case "SheetExt" : { } break ; case "SheetExtOptional" : { } break ; case "ObNoMacros" : { } break ; case "ObProj" : { } break ; case "CodeName" : { } break ; case "GUIDTypeLib" : { } break ; case "WOpt" : break ; case "PhoneticInfo" : break ; case "OleObjectSize" : break ; case "DXF" : ; case "DXFN" : ; case "DXFN12" : ; case "DXFN12List" : ; case "DXFN12NoCB" : break ; case "Dv" : ; case "DVal" : break ; case "BRAI" : ; case "Series" : ; case "SeriesText" : break ; case "DConn" : break ; case "DbOrParamQry" : break ; case "DBQueryExt" : break ; case "IFmtRecord" : break ; case "CondFmt" : ; case "CF" : ; case "CF12" : ; case "CFEx" : break ; case "Excel9File" : break ; case "Units" : break ; case "InterfaceHdr" : ; case "Mms" : ; case "InterfaceEnd" : ; case "DSF" : ; case "BuiltInFnGroupCount" : break ; case "Window1" : ; case "Window2" : ; case "HideObj" : ; case "GridSet" : ; case "Guts" : ; case "UserBView" : ; case "UserSViewBegin" : ; case "UserSViewEnd" : ; case "Pane" : break ; default : switch ( R . n ) { case "Dat" : ; case "Begin" : ; case "End" : ; case "StartBlock" : ; case "EndBlock" : ; case "Frame" : ; case "Area" : ; case "Axis" : ; case "AxisLine" : ; case "Tick" : break ; case "AxesUsed" : ; case "CrtLayout12" : ; case "CrtLayout12A" : ; case "CrtLink" : ; case "CrtLine" : ; case "CrtMlFrt" : ; case "CrtMlFrtContinue" : break ; case "LineFormat" : ; case "AreaFormat" : ; case "Chart" : ; case "Chart3d" : ; case "Chart3DBarShape" : ; case "ChartFormat" : ; case "ChartFrtInfo" : break ; case "PlotArea" : ; case "PlotGrowth" : break ; case "SeriesList" : ; case "SerParent" : ; case "SerAuxTrend" : break ; case "DataFormat" : ; case "SerToCrt" : ; case "FontX" : break ; case "CatSerRange" : ; case "AxcExt" : ; case "SerFmt" : break ; case "ShtProps" : break ; case "DefaultText" : ; case "Text" : ; case "CatLab" : break ; case "DataLabExtContents" : break ; case "Legend" : ; case "LegendException" : break ; case "Pie" : ; case "Scatter" : break ; case "PieFormat" : ; case "MarkerFormat" : break ; case "StartObject" : ; case "EndObject" : break ; case "AlRuns" : ; case "ObjectLink" : break ; case "SIIndex" : break ; case "AttachedLabel" : ; case "YMult" : break ; case "Line" : ; case "Bar" : break ; case "Surf" : break ; case "AxisParent" : break ; case "Pos" : break ; case "ValueRange" : break ; case "SXViewEx9" : break ; case "SXViewLink" : break ; case "PivotChartBits" : break ; case "SBaseRef" : break ; case "TextPropsStream" : break ; case "LnExt" : break ; case "MkrExt" : break ; case "CrtCoopt" : break ; case "Qsi" : ; case "Qsif" : ; case "Qsir" : ; case "QsiSXTag" : break ; case "TxtQry" : break ; case "FilterMode" : break ; case "AutoFilter" : ; case "AutoFilterInfo" : break ; case "AutoFilter12" : break ; case "DropDownObjIds" : break ; case "Sort" : break ; case "SortData" : break ; case "ShapePropsStream" : break ; case "MsoDrawing" : ; case "MsoDrawingGroup" : ; case "MsoDrawingSelection" : break ; case "WebPub" : ; case "AutoWebPub" : break ; case "HeaderFooter" : ; case "HFPicture" : ; case "PLV" : ; case "HorizontalPageBreaks" : ; case "VerticalPageBreaks" : break ; case "Backup" : ; case "CompressPictures" : ; case "Compat12" : break ; case "Continue" : ; case "ContinueFrt12" : break ; case "FrtFontList" : ; case "FrtWrapper" : break ; default : switch ( R . n ) { case "ExternCount" : break ; case "TabIdConf" : ; case "Radar" : ; case "RadarArea" : ; case "DropBar" : ; case "Intl" : ; case "CoordList" : ; case "SerAuxErrBar" : break ; case "BIFF2FONTCLR" : ; case "BIFF2FMTCNT" : ; case "BIFF2FONTXTRA" : break ; case "BIFF2XF" : ; case "BIFF3XF" : ; case "BIFF4XF" : break ; case "BIFF4FMTCNT" : ; case "BIFF2ROW" : ; case "BIFF2WINDOW2" : break ; case "SCENARIO" : ; case "DConBin" : ; case "PicF" : ; case "DataLabExt" : ; case "Lel" : ; case "BopPop" : ; case "BopPopCustom" : ; case "RealTimeData" : ; case "Name" : break ; default : if ( options . WTF ) throw "Unrecognized Record " + R . n ; } ; } ; } ; } } else blob . l += length } var sheetnamesraw = Object . keys ( Directory ) . sort ( function ( a , b ) { return Number ( a ) - Number ( b ) } ) . map ( function ( x ) { return Directory [ x ] . name } ) ; var sheetnames = sheetnamesraw . slice ( ) ; wb . Directory = sheetnamesraw ; wb . SheetNames = sheetnamesraw ; if ( ! options . bookSheets ) wb . Sheets = Sheets ; if ( wb . Sheets ) FilterDatabases . forEach ( function ( r , i ) { wb . Sheets [ wb . SheetNames [ i ] ] [ "!autofilter" ] = r } ) ; wb . Preamble = Preamble ; wb . Strings = sst ; wb . SSF = SSF . get _table ( ) ; if ( opts . enc ) wb . Encryption = opts . enc ; wb . Metadata = { } ; if ( country !== undefined ) wb . Metadata . Country = country ; if ( supbooks . names . length > 0 ) Workbook . Names = supbooks . names ; wb . Workbook = Workbook ; return wb } function parse _props ( cfb ) { var DSI = cfb . find ( " ! DocumentSummary
} , 1131 : { n : "BrtBeginStyleSheetExt14" , f : parsenoop } , 1132 : { n : "BrtEndStyleSheetExt14" , f : parsenoop } , 1133 : { n : "BrtBeginSlicerCachesPivotCacheID" , f : parsenoop } , 1134 : { n : "BrtEndSlicerCachesPivotCacheID" , f : parsenoop } , 1135 : { n : "BrtBeginConditionalFormattings" , f : parsenoop } , 1136 : { n : "BrtEndConditionalFormattings" , f : parsenoop } , 1137 : { n : "BrtBeginPCDCalcMemExt" , f : parsenoop } , 1138 : { n : "BrtEndPCDCalcMemExt" , f : parsenoop } , 1139 : { n : "BrtBeginPCDCalcMemsExt" , f : parsenoop } , 1140 : { n : "BrtEndPCDCalcMemsExt" , f : parsenoop } , 1141 : { n : "BrtPCDField14" , f : parsenoop } , 1142 : { n : "BrtBeginSlicerStyles" , f : parsenoop } , 1143 : { n : "BrtEndSlicerStyles" , f : parsenoop } , 1144 : { n : "BrtBeginSlicerStyleElements" , f : parsenoop } , 1145 : { n : "BrtEndSlicerStyleElements" , f : parsenoop } , 1146 : { n : "BrtCFRuleExt" , f : parsenoop } , 1147 : { n : "BrtBeginSXCondFmt14" , f : parsenoop } , 1148 : { n : "BrtEndSXCondFmt14" , f : parsenoop } , 1149 : { n : "BrtBeginSXCondFmts14" , f : parsenoop } , 1150 : { n : "BrtEndSXCondFmts14" , f : parsenoop } , 1152 : { n : "BrtBeginSortCond14" , f : parsenoop } , 1153 : { n : "BrtEndSortCond14" , f : parsenoop } , 1154 : { n : "BrtEndDVals14" , f : parsenoop } , 1155 : { n : "BrtEndIconSet14" , f : parsenoop } , 1156 : { n : "BrtEndDatabar14" , f : parsenoop } , 1157 : { n : "BrtBeginColorScale14" , f : parsenoop } , 1158 : { n : "BrtEndColorScale14" , f : parsenoop } , 1159 : { n : "BrtBeginSxrules14" , f : parsenoop } , 1160 : { n : "BrtEndSxrules14" , f : parsenoop } , 1161 : { n : "BrtBeginPRule14" , f : parsenoop } , 1162 : { n : "BrtEndPRule14" , f : parsenoop } , 1163 : { n : "BrtBeginPRFilters14" , f : parsenoop } , 1164 : { n : "BrtEndPRFilters14" , f : parsenoop } , 1165 : { n : "BrtBeginPRFilter14" , f : parsenoop } , 1166 : { n : "BrtEndPRFilter14" , f : parsenoop } , 1167 : { n : "BrtBeginPRFItem14" , f : parsenoop } , 1168 : { n : "BrtEndPRFItem14" , f : parsenoop } , 1169 : { n : "BrtBeginCellIgnoreECs14" , f : parsenoop } , 1170 : { n : "BrtEndCellIgnoreECs14" , f : parsenoop } , 1171 : { n : "BrtDxf14" , f : parsenoop } , 1172 : { n : "BrtBeginDxF14s" , f : parsenoop } , 1173 : { n : "BrtEndDxf14s" , f : parsenoop } , 1177 : { n : "BrtFilter14" , f : parsenoop } , 1178 : { n : "BrtBeginCustomFilters14" , f : parsenoop } , 1180 : { n : "BrtCustomFilter14" , f : parsenoop } , 1181 : { n : "BrtIconFilter14" , f : parsenoop } , 1182 : { n : "BrtPivotCacheConnectionName" , f : parsenoop } , 2048 : { n : "BrtBeginDecoupledPivotCacheIDs" , f : parsenoop } , 2049 : { n : "BrtEndDecoupledPivotCacheIDs" , f : parsenoop } , 2050 : { n : "BrtDecoupledPivotCacheID" , f : parsenoop } , 2051 : { n : "BrtBeginPivotTableRefs" , f : parsenoop } , 2052 : { n : "BrtEndPivotTableRefs" , f : parsenoop } , 2053 : { n : "BrtPivotTableRef" , f : parsenoop } , 2054 : { n : "BrtSlicerCacheBookPivotTables" , f : parsenoop } , 2055 : { n : "BrtBeginSxvcells" , f : parsenoop } , 2056 : { n : "BrtEndSxvcells" , f : parsenoop } , 2057 : { n : "BrtBeginSxRow" , f : parsenoop } , 2058 : { n : "BrtEndSxRow" , f : parsenoop } , 2060 : { n : "BrtPcdCalcMem15" , f : parsenoop } , 2067 : { n : "BrtQsi15" , f : parsenoop } , 2068 : { n : "BrtBeginWebExtensions" , f : parsenoop } , 2069 : { n : "BrtEndWebExtensions" , f : parsenoop } , 2070 : { n : "BrtWebExtension" , f : parsenoop } , 2071 : { n : "BrtAbsPath15" , f : parsenoop } , 2072 : { n : "BrtBeginPivotTableUISettings" , f : parsenoop } , 2073 : { n : "BrtEndPivotTableUISettings" , f : parsenoop } , 2075 : { n : "BrtTableSlicerCacheIDs" , f : parsenoop } , 2076 : { n : "BrtTableSlicerCacheID" , f : parsenoop } , 2077 : { n : "BrtBeginTableSlicerCache" , f : parsenoop } , 2078 : { n : "BrtEndTableSlicerCache" , f : parsenoop } , 2079 : { n : "BrtSxFilter15" , f : parsenoop } , 2080 : { n : "BrtBeginTimelineCachePivotCacheIDs" , f : parsenoop } , 2081 : { n : "BrtEndTimelineCachePivotCacheIDs" , f : parsenoop } , 2082 : { n : "BrtTimelineCachePivotCacheID" , f : parsenoop } , 2083 : { n : "BrtBeginTimelineCacheIDs" , f : parsenoop } , 2084 : { n : "BrtEndTimelineCacheIDs" , f : parsenoop } , 2085 : { n : "BrtBeginTimelineCacheID" , f : parsenoop } , 2086 : { n : "BrtEndTimelineCacheID" , f : parsenoop } , 2087 : { n : "BrtBeginTimelinesEx" , f : parsenoop } , 2088 : { n : "BrtEndTimelinesEx" , f : parsenoop } , 2089 : { n : "BrtBeginTimelineEx" , f : parsenoop } , 2090 : { n : "BrtEndTimelineEx" , f : parsenoop } , 2091 : { n : "BrtWorkBookPr15" , f : parsenoop } , 2092 : { n : "BrtPCDH15" , f : parsenoop } , 2093 : { n : "BrtBeginTimelineStyle" , f : parsenoop } , 2094 : { n : "BrtEndTimelineStyle" , f : parsenoop } , 2095 : { n : "BrtTimelineStyleElement" , f : parsenoop } , 2096 : { n : "BrtBeginTimelineStylesheetExt15" , f : parsenoop } , 2097 : { n : "BrtEndTimelineStylesheetExt15" , f : parsenoop } , 2098 : { n : "BrtBeginTimelineStyles" , f : parsenoop } , 2099 : { n : "BrtEndTimelineStyles" , f : parsenoop } , 2100 : { n : "BrtBeginTimelineStyleElements" , f : parsenoop } , 2101 : { n : "BrtEndTimelineStyleElements" , f : parsenoop } , 2102 : { n : " B
break ; case "currency-style" : break ; case "number-style" : ; case "percentage-style" : ; case "date-style" : ; case "time-style" : if ( Rn [ 1 ] === "/" ) { number _format _map [ NFtag . name ] = NF ; if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw "Bad state: " + tmp } else if ( Rn [ 0 ] . charAt ( Rn [ 0 ] . length - 2 ) !== "/" ) { NF = "" ; NFtag = parsexmltag ( Rn [ 0 ] , false ) ; state . push ( [ Rn [ 3 ] , true ] ) } break ; case "script" : break ; case "libraries" : break ; case "automatic-styles" : break ; case "master-styles" : break ; case "default-style" : ; case "page-layout" : break ; case "style" : break ; case "map" : break ; case "font-face" : break ; case "paragraph-properties" : break ; case "table-properties" : break ; case "table-column-properties" : break ; case "table-row-properties" : break ; case "table-cell-properties" : break ; case "number" : switch ( state [ state . length - 1 ] [ 0 ] ) { case "time-style" : ; case "date-style" : tag = parsexmltag ( Rn [ 0 ] , false ) ; NF += number _formats [ Rn [ 3 ] ] [ tag . style === "long" ? 1 : 0 ] ; break ; } break ; case "fraction" : break ; case "day" : ; case "month" : ; case "year" : ; case "era" : ; case "day-of-week" : ; case "week-of-year" : ; case "quarter" : ; case "hours" : ; case "minutes" : ; case "seconds" : ; case "am-pm" : switch ( state [ state . length - 1 ] [ 0 ] ) { case "time-style" : ; case "date-style" : tag = parsexmltag ( Rn [ 0 ] , false ) ; NF += number _formats [ Rn [ 3 ] ] [ tag . style === "long" ? 1 : 0 ] ; break ; } break ; case "boolean-style" : break ; case "boolean" : break ; case "text-style" : break ; case "text" : if ( Rn [ 0 ] . slice ( - 2 ) === "/>" ) break ; else if ( Rn [ 1 ] === "/" ) switch ( state [ state . length - 1 ] [ 0 ] ) { case "number-style" : ; case "date-style" : ; case "time-style" : NF += str . slice ( pidx , Rn . index ) ; break ; } else pidx = Rn . index + Rn [ 0 ] . length ; break ; case "text-content" : break ; case "text-properties" : break ; case "body" : ; case "电子表格" : break ; case "forms" : break ; case "table-column" : break ; case "null-date" : break ; case "graphic-properties" : break ; case "calculation-settings" : break ; case "named-expressions" : break ; case "named-range" : break ; case "named-expression" : break ; case "sort" : break ; case "sort-by" : break ; case "sort-groups" : break ; case "span" : break ; case "line-break" : break ; case "p" : ; case "文本串" : if ( Rn [ 1 ] === "/" ) textp = ( textp . length > 0 ? textp + "\n" : "" ) + parse _text _p ( str . slice ( textpidx , Rn . index ) , textptag ) ; else { textptag = parsexmltag ( Rn [ 0 ] , false ) ; textpidx = Rn . index + Rn [ 0 ] . length } break ; case "database-range" : if ( Rn [ 1 ] === "/" ) break ; try { var AutoFilter = ods _to _csf _range _3D ( parsexmltag ( Rn [ 0 ] ) [ "target-range-address" ] ) ; Sheets [ AutoFilter [ 0 ] ] [ "!autofilter" ] = { ref : AutoFilter [ 1 ] } } catch ( e ) { } break ; case "s" : break ; case "date" : break ; case "object" : break ; case "title" : ; case "标题" : break ; case "desc" : break ; case "table-source" : break ; case "iteration" : break ; case "content-validations" : break ; case "content-validation" : break ; case "error-message" : break ; case "database-ranges" : break ; case "filter" : break ; case "filter-and" : break ; case "filter-or" : break ; case "filter-condition" : break ; case "list-level-style-bullet" : break ; case "list-level-style-number" : break ; case "list-level-properties" : break ; case "sender-firstname" : ; case "sender-lastname" : ; case "sender-initials" : ; case "sender-title" : ; case "sender-position" : ; case "sender-email" : ; case "sender-phone-private" : ; case "sender-fax" : ; case "sender-company" : ; case "sender-phone-work" : ; case "sender-street" : ; case "sender-city" : ; case "sender-postal-code" : ; case "sender-country" : ; case "sender-state-or-province" : ; case "author-name" : ; case "author-initials" : ; case "chapter" : ; case "file-name" : ; case "template-name" : ; case "sheet-name" : break ; case "event-listener" : break ; case "initial-creator" : ; case "creation-date" : ; case "generator" : ; case "document-statistic" : ; case "user-defined" : break ; case "config-item" : break ; case "page-number" : break ; case "page-count" : break ; case "time" : break ; case "data-pilot-table" : ; case "source-cell-range" : ; case "source-service" : ; case "data-pilot-field" : ; case "data-pilot-level" : ; case "data-pilot-subtotals" : ; case "data-pilot-subtotal" : ; case "data-pilot-members" : ; case "data-pilot-member" : ; case "data-pilot-display-info" : ; case "data-pilot-sort-info" : ; case "data-pilot-layout-info" : ; case "data-pilot-field-reference" : ; case "data-pilot-groups" : ; case "data-pilot-group" : ; case "data-pilot-group-member" : break ; case "rect" : break ; case "dde-connection-decls" : ; case "dde-connection-decl" : ; case "dde-link" : ; case "dde-source" : break ; case "properties" : break ; case "property" : break ; case "a" : break ; case "table-protection" : break ; case " data - p
val = "" ; if ( x === undefined ) continue ; else if ( x . F != null ) { y = x . F ; if ( ! x . f ) continue ; val = x . f ; if ( y . indexOf ( ":" ) == - 1 ) y = y + ":" + y } if ( x . f != null ) val = x . f ; else if ( x . t == "z" ) continue ; else if ( x . t == "n" && x . v != null ) val = "" + x . v ; else if ( x . t == "b" ) val = x . v ? "TRUE" : "FALSE" ; else if ( x . w !== undefined ) val = "'" + x . w ; else if ( x . v === undefined ) continue ; else if ( x . t == "s" ) val = "'" + x . v ; else val = "" + x . v ; cmds [ i ++ ] = y + "=" + val } } cmds . length = i ; return cmds } function json _to _sheet ( js , opts ) { var o = opts || { } ; var ws = { } ; var cell ; var range = { s : { c : 0 , r : 0 } , e : { c : 0 , r : js . length } } ; var hdr = o . header || [ ] , C = 0 ; for ( var R = 0 ; R != js . length ; ++ R ) { Object . keys ( js [ R ] ) . filter ( function ( x ) { return js [ R ] . hasOwnProperty ( x ) } ) . forEach ( function ( k ) { if ( ( C = hdr . indexOf ( k ) ) == - 1 ) hdr [ C = hdr . length ] = k ; var v = js [ R ] [ k ] ; var t = "z" ; var z = "" ; if ( typeof v == "number" ) t = "n" ; else if ( typeof v == "boolean" ) t = "b" ; else if ( typeof v == "string" ) t = "s" ; else if ( v instanceof Date ) { t = "d" ; if ( ! o . cellDates ) { t = "n" ; v = datenum ( v ) } z = o . dateNF || SSF . _table [ 14 ] } ws [ encode _cell ( { c : C , r : R + 1 } ) ] = cell = { t : t , v : v } ; if ( z ) cell . z = z } ) } range . e . c = hdr . length - 1 ; for ( C = 0 ; C < hdr . length ; ++ C ) ws [ encode _col ( C ) + "1" ] = { t : "s" , v : hdr [ C ] } ; ws [ "!ref" ] = encode _range ( range ) ; return ws } var utils = { encode _col : encode _col , encode _row : encode _row , encode _cell : encode _cell , encode _range : encode _range , decode _col : decode _col , decode _row : decode _row , split _cell : split _cell , decode _cell : decode _cell , decode _range : decode _range , format _cell : format _cell , get _formulae : sheet _to _formulae , make _csv : sheet _to _csv , make _json : sheet _to _json , make _formulae : sheet _to _formulae , aoa _to _sheet : aoa _to _sheet , json _to _sheet : json _to _sheet , table _to _sheet : parse _dom _table , table _to _book : table _to _book , sheet _to _csv : sheet _to _csv , sheet _to _json : sheet _to _json , sheet _to _html : HTML _ . from _sheet , sheet _to _formulae : sheet _to _formulae , sheet _to _row _object _array : sheet _to _json } ; ( function ( utils ) { utils . consts = utils . consts || { } ; function add _consts ( R ) { R . forEach ( function ( a ) { utils . consts [ a [ 0 ] ] = a [ 1 ] } ) } function get _default ( x , y , z ) { return x [ y ] != null ? x [ y ] : x [ y ] = z } function ws _get _cell _stub ( ws , R , C ) { if ( typeof R == "string" ) return ws [ R ] || ( ws [ R ] = { t : "z" } ) ; if ( typeof R != "number" ) return ws _get _cell _stub ( ws , encode _cell ( R ) ) ; return ws _get _cell _stub ( ws , encode _cell ( { r : R , c : C || 0 } ) ) } function wb _sheet _idx ( wb , sh ) { if ( typeof sh == "number" ) { if ( sh >= 0 && wb . SheetNames . length > sh ) return sh ; throw new Error ( "Cannot find sheet # " + sh ) } else if ( typeof sh == "string" ) { var idx = wb . SheetNames . indexOf ( sh ) ; if ( idx > - 1 ) return idx ; throw new Error ( "Cannot find sheet name |" + sh + "|" ) } else throw new Error ( "Cannot find sheet |" + sh + "|" ) } utils . book _new = function ( ) { return { SheetNames : [ ] , Sheets : { } } } ; utils . book _append _sheet = function ( wb , ws , name ) { if ( ! name ) for ( var i = 1 ; i <= 65535 ; ++ i ) if ( wb . SheetNames . indexOf ( name = "Sheet" + i ) == - 1 ) break ; if ( ! name ) throw new Error ( "Too many worksheets" ) ; check _ws _name ( name ) ; if ( wb . SheetNames . indexOf ( name ) >= 0 ) throw new Error ( "Worksheet with name |" + name + "| already exists!" ) ; wb . SheetNames . push ( name ) ; wb . Sheets [ name ] = ws } ; utils . book _set _sheet _visibility = function ( wb , sh , vis ) { get _default ( wb , "Workbook" , { } ) ; get _default ( wb . Workbook , "Sheets" , [ ] ) ; var idx = wb _sheet _idx ( wb , sh ) ; get _default ( wb . Workbook . Sheets , idx , { } ) ; switch ( vis ) { case 0 : ; case 1 : ; case 2 : break ; default : throw new Error ( "Bad sheet visibility setting " + vis ) ; } wb . Workbook . Sheets [ idx ] . Hidden = vis } ; add _consts ( [ [ "SHEET_VISIBLE" , 0 ] , [ "SHEET_HIDDEN" , 1 ] , [ "SHEET_VERY_HIDDEN" , 2 ] ] ) ; utils . cell _set _number _format = function ( cell , fmt ) { cell . z = fmt ; return cell } ; utils . cell _set _hyperlink = function ( cell , target , tooltip ) { if ( ! target ) { delete cell . l } else { cell . l = { Target : target } ; if ( tooltip ) cell . l . Tooltip = tooltip } return cell } ; utils . cell _add _comment = function ( cell , text , author ) { if ( ! cell . c ) cell . c = [ ] ; cell . c . push ( { t : text , a : author || "SheetJS" } ) } ; utils . sheet _set _array _formula = function ( ws , range , formula ) { var rng = typeof range != "string" ? range : safe _decode _range ( range ) ; var rngstr = typeof range == "string" ? range : encode _range ( range ) ; for ( var R = rng . s . r ; R <= rng . e . r ; ++ R ) for ( var C = rng . s . c ; C <= rng . e . c ; ++ C ) { var cell = ws _get _cell _stub ( ws , R , C ) ; cell . t = "n" ; cell . F = rngstr ; delete cell . v ; if ( R == rng . s . r && C == rng . s . c ) cell . f = formula } return ws } ; return utils } ) ( utils ) ; if ( has _buf && typeof require != "undefined" ) ( function ( ) { var Readable = require ( "stream" ) . Readable ; var write _c