2016-12-31 08:20:45 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
2017-05-17 04:23:36 +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:03:03 +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:23:36 +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
2017-03-28 22:03:03 +00:00
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
for ( j = 0 ; j != D [ 225 ] . length ; ++ j ) if ( D [ 225 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 225 ] [ j ] ] = 57600 + j ; d [ 57600 + j ] = D [ 225 ] [ j ] } D [ 226 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰<E7AB88> 窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆<E7B3BA> <E7B486> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 226 ] . length ; ++ j ) if ( D [ 226 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 226 ] [ j ] ] = 57856 + j ; d [ 57856 + j ] = D [ 226 ] [ j ] } D [ 227 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷<E7B983> 縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋<E884AF> <E8858B> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 227 ] . length ; ++ j ) if ( D [ 227 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 227 ] [ j ] ] = 58112 + j ; d [ 58112 + j ] = D [ 227 ] [ j ] } D [ 228 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤<E8899F> 艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈<E89598> <E89588> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 228 ] . length ; ++ j ) if ( D [ 228 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 228 ] [ j ] ] = 58368 + j ; d [ 58368 + j ] = D [ 228 ] [ j ] } D [ 229 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬<E89BA9> 蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞<E8A5A0> <E8A59E> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 229 ] . length ; ++ j ) if ( D [ 229 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 229 ] [ j ] ] = 58624 + j ; d [ 58624 + j ] = D [ 229 ] [ j ] } D [ 230 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧 <EFBFBD> 諤諱謔諠諢 <EFBFBD>
for ( j = 0 ; j != D [ 197 ] . length ; ++ j ) if ( D [ 197 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 197 ] [ j ] ] = 50432 + j ; d [ 50432 + j ] = D [ 197 ] [ j ] } D [ 198 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸<E88BB6> 苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐<E8AEAB> " . split ( "" ) ; for ( j = 0 ; j != D [ 198 ] . length ; ++ j ) if ( D [ 198 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 198 ] [ j ] ] = 50688 + j ; d [ 50688 + j ] = D [ 198 ] [ j ] } D [ 199 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮<E88EAD> 莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠<E9A9B1> " . split ( "" ) ; for ( j = 0 ; j != D [ 199 ] . length ; ++ j ) if ( D [ 199 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 199 ] [ j ] ] = 50944 + j ; d [ 50944 + j ] = D [ 199 ] [ j ] } D [ 200 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉<E89188> 葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁<E4B889> " . split ( "" ) ; for ( j = 0 ; j != D [ 200 ] . length ; ++ j ) if ( D [ 200 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 200 ] [ j ] ] = 51200 + j ; d [ 51200 + j ] = D [ 200 ] [ j ] } D [ 201 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗<E89395> 蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳<E58D87> " . split ( "" ) ; for ( j = 0 ; j != D [ 201 ] . length ; ++ j ) if ( D [ 201 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 201 ] [ j ] ] = 51456 + j ; d [ 51456 + j ] = D [ 201 ] [ j ] } D [ 202 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕 <EFBFBD> 蕗蕘蕚蕛蕜 <EFBFBD>
for ( j = 0 ; j != D [ 154 ] . length ; ++ j ) if ( D [ 154 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 154 ] [ j ] ] = 39424 + j ; d [ 39424 + j ] = D [ 154 ] [ j ] } D [ 155 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲<EC8CB1> <EC8CB2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍<EC8D8C> <EC8D8D> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚<EC8F97> " . split ( "" ) ; for ( j = 0 ; j != D [ 155 ] . length ; ++ j ) if ( D [ 155 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 155 ] [ j ] ] = 39680 + j ; d [ 39680 + j ] = D [ 155 ] [ j ] } D [ 156 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾<EC8FBD> <EC8FBE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚<EC9099> <EC909A> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩<EC92A8> " . split ( "" ) ; for ( j = 0 ; j != D [ 156 ] . length ; ++ j ) if ( D [ 156 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 156 ] [ j ] ] = 39936 + j ; d [ 39936 + j ] = D [ 156 ] [ j ] } D [ 157 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅<EC9384> <EC9385> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟<EC939E> <EC939F> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔<EC9693> " . split ( "" ) ; for ( j = 0 ; j != D [ 157 ] . length ; ++ j ) if ( D [ 157 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 157 ] [ j ] ] = 40192 + j ; d [ 40192 + j ] = D [ 157 ] [ j ] } D [ 158 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶<EC96B3> <EC96B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧<EC97A6> <EC97A7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦<EC9AA3> " . split ( "" ) ; for ( j = 0 ; j != D [ 158 ] . length ; ++ j ) if ( D [ 158 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 158 ] [ j ] ] = 40448 + j ; d [ 40448 + j ] = D [ 158 ] [ j ] } D [ 159 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 웳웴웵웶 <EFBFBD>
for ( j = 0 ; j != D [ 239 ] . length ; ++ j ) if ( D [ 239 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 239 ] [ j ] ] = 61184 + j ; d [ 61184 + j ] = D [ 239 ] [ j ] } D [ 240 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫<E7B8B1> " . split ( "" ) ; for ( j = 0 ; j != D [ 240 ] . length ; ++ j ) if ( D [ 240 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 240 ] [ j ] ] = 61440 + j ; d [ 61440 + j ] = D [ 240 ] [ j ] } D [ 241 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只<E4B98B> " . split ( "" ) ; for ( j = 0 ; j != D [ 241 ] . length ; ++ j ) if ( D [ 241 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 241 ] [ j ] ] = 61696 + j ; d [ 61696 + j ] = D [ 241 ] [ j ] } D [ 242 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯<E7B79D> " . split ( "" ) ; for ( j = 0 ; j != D [ 242 ] . length ; ++ j ) if ( D [ 242 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 242 ] [ j ] ] = 61952 + j ; d [ 61952 + j ] = D [ 242 ] [ j ] } D [ 243 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策<E69FB5> " . split ( "" ) ; for ( j = 0 ; j != D [ 243 ] . length ; ++ j ) if ( D [ 243 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 243 ] [ j ] ] = 62208 + j ; d [ 62208 + j ] = D [ 243 ] [ j ] } D [ 244 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2017-06-10 01:47:42 +00:00
for ( j = 0 ; j != D [ 231 ] . length ; ++ j ) if ( D [ 231 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 231 ] [ j ] ] = 59136 + j ; d [ 59136 + j ] = D [ 231 ] [ j ] } D [ 232 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓<E98B91> <E98B93> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮<E599A0> " . split ( "" ) ; for ( j = 0 ; j != D [ 232 ] . length ; ++ j ) if ( D [ 232 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 232 ] [ j ] ] = 59392 + j ; d [ 59392 + j ] = D [ 232 ] [ j ] } D [ 233 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺<E6878C> <E686BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸<E6BEBF> " . split ( "" ) ; for ( j = 0 ; j != D [ 233 ] . length ; ++ j ) if ( D [ 233 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 233 ] [ j ] ] = 59648 + j ; d [ 59648 + j ] = D [ 233 ] [ j ] } D [ 234 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙<E79E95> <E79E99> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘<E895A1> " . split ( "" ) ; for ( j = 0 ; j != D [ 234 ] . length ; ++ j ) if ( D [ 234 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 234 ] [ j ] ] = 59904 + j ; d [ 59904 + j ] = D [ 234 ] [ j ] } D [ 235 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠<E8A7B1> <E8ABA0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌<E98C94> " . split ( "" ) ; for ( j = 0 ; j != D [ 235 ] . length ; ++ j ) if ( D [ 235 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 235 ] [ j ] ] = 60160 + j ; d [ 60160 + j ] = D [ 235 ] [ j ] } D [ 236 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
var o = v . toFixed ( 11 ) . replace ( gnr1 , ".$1" ) ; if ( o . length > ( v < 0 ? 12 : 11 ) ) o = v . toPrecision ( 6 ) ; return o } function gfn4 ( o ) { for ( var i = 0 ; i != o . length ; ++ i ) if ( ( o . charCodeAt ( i ) | 32 ) === 101 ) return o . replace ( gnr4 , ".$1" ) . replace ( gnr5 , "E" ) . replace ( "e" , "E" ) . replace ( gnr6 , "$10$2" ) ; return o } function gfn5 ( o ) { return o . indexOf ( "." ) > - 1 ? o . replace ( gnr2 , "" ) . replace ( gnr1 , ".$1" ) : o } return function general _fmt _num ( v ) { var V = Math . floor ( Math . log ( Math . abs ( v ) ) * Math . LOG10E ) , o ; if ( V >= - 4 && V <= - 1 ) o = v . toPrecision ( 10 + V ) ; else if ( Math . abs ( V ) <= 9 ) o = gfn2 ( v ) ; else if ( V === 10 ) o = v . toFixed ( 10 ) . substr ( 0 , 12 ) ; else o = gfn3 ( v ) ; return gfn5 ( gfn4 ( o ) ) } } ( ) ; SSF . _general _num = general _fmt _num ; function general _fmt ( v ) { switch ( typeof v ) { case "string" : return v ; case "boolean" : return v ? "TRUE" : "FALSE" ; case "number" : return ( v | 0 ) === v ? general _fmt _int ( v ) : general _fmt _num ( v ) ; case "undefined" : return "" ; case "object" : if ( v == null ) return "" ; } throw new Error ( "unsupported value in General format: " + v ) } SSF . _general = general _fmt ; function fix _hijri ( ) { return 0 } function parse _date _code ( v , opts , b2 ) { if ( v > 2958465 || v < 0 ) return null ; var date = v | 0 , time = Math . floor ( 86400 * ( v - date ) ) , dow = 0 ; var dout = [ ] ; var out = { D : date , T : time , u : 86400 * ( v - date ) - time , y : 0 , m : 0 , d : 0 , H : 0 , M : 0 , S : 0 , q : 0 } ; if ( Math . abs ( out . u ) < 1e-6 ) out . u = 0 ; fixopts ( opts != null ? opts : opts = [ ] ) ; if ( opts . date1904 ) date += 1462 ; if ( out . u > . 9999 ) { out . u = 0 ; if ( ++ time == 86400 ) { out . T = time = 0 ; ++ date ; ++ out . D } } if ( date === 60 ) { dout = b2 ? [ 1317 , 10 , 29 ] : [ 1900 , 2 , 29 ] ; dow = 3 } else if ( date === 0 ) { dout = b2 ? [ 1317 , 8 , 29 ] : [ 1900 , 1 , 0 ] ; dow = 6 } else { if ( date > 60 ) -- date ; var d = new Date ( 1900 , 0 , 1 ) ; d . setDate ( d . getDate ( ) + date - 1 ) ; dout = [ d . getFullYear ( ) , d . getMonth ( ) + 1 , d . getDate ( ) ] ; dow = d . getDay ( ) ; if ( date < 60 ) dow = ( dow + 6 ) % 7 ; if ( b2 ) dow = fix _hijri ( d , dout ) } out . y = dout [ 0 ] ; out . m = dout [ 1 ] ; out . d = dout [ 2 ] ; out . S = time % 60 ; time = Math . floor ( time / 60 ) ; out . M = time % 60 ; time = Math . floor ( time / 60 ) ; out . H = time ; out . q = dow ; return out } SSF . parse _date _code = parse _date _code ; function write _date ( type , fmt , val , ss0 ) { var o = "" , ss = 0 , tt = 0 , y = val . y , out , outl = 0 ; switch ( type ) { case 98 : y = val . y + 543 ; case 121 : switch ( fmt . length ) { case 1 : ; case 2 : out = y % 100 ; outl = 2 ; break ; default : out = y % 1e4 ; outl = 4 ; break ; } break ; case 109 : switch ( fmt . length ) { case 1 : ; case 2 : out = val . m ; outl = fmt . length ; break ; case 3 : return months [ val . m - 1 ] [ 1 ] ; case 5 : return months [ val . m - 1 ] [ 0 ] ; default : return months [ val . m - 1 ] [ 2 ] ; } break ; case 100 : switch ( fmt . length ) { case 1 : ; case 2 : out = val . d ; outl = fmt . length ; break ; case 3 : return days [ val . q ] [ 0 ] ; default : return days [ val . q ] [ 1 ] ; } break ; case 104 : switch ( fmt . length ) { case 1 : ; case 2 : out = 1 + ( val . H + 11 ) % 12 ; outl = fmt . length ; break ; default : throw "bad hour format: " + fmt ; } break ; case 72 : switch ( fmt . length ) { case 1 : ; case 2 : out = val . H ; outl = fmt . length ; break ; default : throw "bad hour format: " + fmt ; } break ; case 77 : switch ( fmt . length ) { case 1 : ; case 2 : out = val . M ; outl = fmt . length ; break ; default : throw "bad minute format: " + fmt ; } break ; case 115 : if ( val . u === 0 ) switch ( fmt ) { case "s" : ; case "ss" : return pad0 ( val . S , fmt . length ) ; case ".0" : ; case ".00" : ; case ".000" : ; } switch ( fmt ) { case "s" : ; case "ss" : ; case ".0" : ; case ".00" : ; case ".000" : if ( ss0 >= 2 ) tt = ss0 === 3 ? 1e3 : 100 ; else tt = ss0 === 1 ? 10 : 1 ; ss = Math . round ( tt * ( val . S + val . u ) ) ; if ( ss >= 60 * tt ) ss = 0 ; if ( fmt === "s" ) return ss === 0 ? "0" : "" + ss / tt ; o = pad0 ( ss , 2 + ss0 ) ; if ( fmt === "ss" ) return o . substr ( 0 , 2 ) ; return "." + o . substr ( 2 , fmt . length - 1 ) ; default : throw "bad second format: " + fmt ; } ; case 90 : switch ( fmt ) { case "[h]" : ; case "[hh]" : out = val . D * 24 + val . H ; break ; case "[m]" : ; case "[mm]" : out = ( val . D * 24 + val . H ) * 60 + val . M ; break ; case "[s]" : ; case "[ss]" : out = ( ( val . D * 24 + val . H ) * 60 + val . M ) * 60 + Math . round ( val . S + val . u ) ; break ; default : throw "bad abstime format: " + fmt ; } outl = fmt . length === 3 ? 1 : 2 ; break ; case 101 : out = y ; outl = 1 ; } if ( outl > 0 ) return pad0 ( out , outl ) ; else return "" } function commaify ( s ) { if ( s . length <= 3 ) return s ; var j = s . length % 3 , o = s . substr ( 0 , j ) ; for ( ; j != s . length ; j += 3 ) o += ( o . length > 0 ? "," : "" ) + s . substr ( j , 3 ) ; return o } var write _num = function make _write _num ( ) { var pct1 = /%/g ; function write _num _pct ( type , fmt , val ) { var sfmt = fmt . replace ( pct1 , "" ) , mul = fmt . length - sfmt . length ; return write _num ( type , sfmt , val * Math . pow ( 10 , 2 * mul ) ) + fill ( "%" , mul ) } function write _num _cm ( type , fmt , val ) { var idx = fmt . length - 1 ; while ( fmt . charCodeAt ( idx - 1 ) === 44 ) -- idx ; return write _num ( type , fmt . substr ( 0 , idx ) , val / Math . pow ( 10 , 3 * ( fmt . length - idx ) ) ) } function write _num _exp ( fmt , val ) { var o ; v
if ( ctime !== 0 ) { o . ctime = ctime ; o . ct = read _date ( blob , blob . l - 8 ) } mtime = blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) ; if ( mtime !== 0 ) { o . mtime = mtime ; o . mt = read _date ( blob , blob . l - 8 ) } o . start = blob . read _shift ( 4 , "i" ) ; o . size = blob . read _shift ( 4 , "i" ) ; if ( o . type === 5 ) { minifat _store = o . start ; if ( nmfs > 0 && minifat _store !== ENDOFCHAIN ) sector _list [ minifat _store ] . name = "!StreamData" } else if ( o . size >= 4096 ) { o . storage = "fat" ; if ( sector _list [ o . start ] === undefined ) sector _list [ o . start ] = get _sector _list ( sectors , o . start , sector _list . fat _addrs , sector _list . ssz ) ; sector _list [ o . start ] . name = o . name ; o . content = sector _list [ o . start ] . data . slice ( 0 , o . size ) ; prep _blob ( o . content , 0 ) } else { o . storage = "minifat" ; if ( minifat _store !== ENDOFCHAIN && o . start !== ENDOFCHAIN ) { o . content = sector _list [ minifat _store ] . data . slice ( o . start * MSSZ , o . start * MSSZ + o . size ) ; prep _blob ( o . content , 0 ) } } files [ name ] = o ; FileIndex . push ( o ) } } function read _date ( blob , offset ) { return new Date ( ( _ _readUInt32LE ( blob , offset + 4 ) / 1e7 * Math . pow ( 2 , 32 ) + _ _readUInt32LE ( blob , offset ) / 1e7 - 11644473600 ) * 1e3 ) } var fs ; function readFileSync ( filename , options ) { if ( fs === undefined ) fs = require ( "fs" ) ; return parse ( fs . readFileSync ( filename ) , options ) } function readSync ( blob , options ) { switch ( options !== undefined && options . type !== undefined ? options . type : "base64" ) { case "file" : return readFileSync ( blob , options ) ; case "base64" : return parse ( s2a ( Base64 . decode ( blob ) ) , options ) ; case "binary" : return parse ( s2a ( blob ) , options ) ; } return parse ( blob ) } var MSSZ = 64 ; var ENDOFCHAIN = - 2 ; var HEADER _SIGNATURE = "d0cf11e0a1b11ae1" ; var HEADER _CLSID = "00000000000000000000000000000000" ; var consts = { MAXREGSECT : - 6 , DIFSECT : - 4 , FATSECT : - 3 , ENDOFCHAIN : ENDOFCHAIN , FREESECT : - 1 , HEADER _SIGNATURE : HEADER _SIGNATURE , HEADER _MINOR _VERSION : "3e00" , MAXREGSID : - 6 , NOSTREAM : - 1 , HEADER _CLSID : HEADER _CLSID , EntryTypes : [ "unknown" , "storage" , "stream" , "lockbytes" , "property" , "root" ] } ; exports . read = readSync ; exports . parse = parse ; exports . utils = { ReadShift : ReadShift , CheckField : CheckField , prep _blob : prep _blob , bconcat : bconcat , consts : consts } ; return exports } ( ) ; if ( typeof require !== "undefined" && typeof module !== "undefined" && typeof DO _NOT _EXPORT _CFB === "undefined" ) { module . exports = CFB } function isval ( x ) { return x !== undefined && x !== null } function keys ( o ) { return Object . keys ( o ) } function evert _key ( obj , key ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] [ key ] ] = K [ i ] ; return o } function evert ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] ] = K [ i ] ; return o } function evert _num ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] ] = parseInt ( K [ i ] , 10 ) ; return o } function evert _arr ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) { if ( o [ obj [ K [ i ] ] ] == null ) o [ obj [ K [ i ] ] ] = [ ] ; o [ obj [ K [ i ] ] ] . push ( K [ i ] ) } return o } var basedate = new Date ( 1899 , 11 , 30 , 0 , 0 , 0 ) ; var dnthresh = basedate . getTime ( ) + ( ( new Date ) . getTimezoneOffset ( ) - basedate . getTimezoneOffset ( ) ) * 6e4 ; function datenum ( v , date1904 ) { var epoch = v . getTime ( ) ; if ( date1904 ) epoch += 1462 * 24 * 60 * 60 * 1e3 ; return ( epoch - dnthresh ) / ( 24 * 60 * 60 * 1e3 ) } function numdate ( v ) { var out = new Date ; out . setTime ( v * 24 * 60 * 60 * 1e3 + dnthresh ) ; return out } function parse _isodur ( s ) { var sec = 0 , mt = 0 , time = false ; var m = s . match ( /P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/ ) ; if ( ! m ) throw new Error ( "|" + s + "| is not an ISO8601 Duration" ) ; for ( var i = 1 ; i != m . length ; ++ i ) { if ( ! m [ i ] ) continue ; mt = 1 ; if ( i > 3 ) time = true ; switch ( m [ i ] . substr ( m [ i ] . length - 1 ) ) { case "Y" : throw new Error ( "Unsupported ISO Duration Field: " + m [ i ] . substr ( m [ i ] . length - 1 ) ) ; case "D" : mt *= 24 ; case "H" : mt *= 60 ; case "M" : if ( ! time ) throw new Error ( "Unsupported ISO Duration Field: M" ) ; else mt *= 60 ; case "S" : break ; } sec += mt * parseInt ( m [ i ] , 10 ) } return sec } var good _pd _date = new Date ( "2017-02-19T19:06:09.000Z" ) ; if ( isNaN ( good _pd _date . getFullYear ( ) ) ) good _pd _date = new Date ( "2/19/17" ) ; var good _pd = good _pd _date . getFullYear ( ) == 2017 ; function parseDate ( str , fixdate ) { var d = new Date ( str ) ; if ( good _pd ) { if ( fixdate > 0 ) d . setTime ( d . getTime ( ) + d . getTimezoneOffset ( ) * 60 * 1e3 ) ; else if ( fixdate < 0 ) d . setTime ( d . getTime ( ) - d . getTimezoneOffset ( ) * 60 * 1e3 ) ; return d } if ( str instanceof Date ) return str ; if ( good _pd _date . getFullYear ( ) == 1917 && ! isNaN ( d . getFullYear ( ) ) ) { var s = d . getFullYear ( ) ; if ( str . indexOf ( "" + s ) > - 1 ) return d
function parse _BrtColor ( data , length ) { var out = { } ; var d = data . read _shift ( 1 ) ; var fValidRGB = d & 1 ; var xColorType = d >>> 1 ; var index = data . read _shift ( 1 ) ; var nTS = data . read _shift ( 2 , "i" ) ; var bR = data . read _shift ( 1 ) ; var bG = data . read _shift ( 1 ) ; var bB = data . read _shift ( 1 ) ; var bAlpha = data . read _shift ( 1 ) ; switch ( xColorType ) { case 0 : out . auto = 1 ; break ; case 1 : out . index = index ; var icv = XLSIcv [ index ] ; if ( icv ) out . rgb = icv [ 0 ] . toString ( 16 ) + icv [ 1 ] . toString ( 16 ) + icv [ 2 ] . toString ( 16 ) ; break ; case 2 : out . rgb = bR . toString ( 16 ) + bG . toString ( 16 ) + bB . toString ( 16 ) ; break ; case 3 : out . theme = index ; break ; } if ( nTS != 0 ) out . tint = nTS > 0 ? nTS / 32767 : nTS / 32768 ; return out } function write _BrtColor ( color , o ) { if ( ! o ) o = new _buf ( 8 ) ; if ( ! color || color . auto ) { o . write _shift ( 4 , 0 ) ; o . write _shift ( 4 , 0 ) ; return o } if ( color . index ) { o . write _shift ( 1 , 2 ) ; o . write _shift ( 1 , color . index ) } else if ( color . theme ) { o . write _shift ( 1 , 6 ) ; o . write _shift ( 1 , color . theme ) } else { o . write _shift ( 1 , 5 ) ; o . write _shift ( 1 , 0 ) } var nTS = color . tint || 0 ; if ( nTS > 0 ) nTS *= 32767 ; else if ( nTS < 0 ) nTS *= 32768 ; o . write _shift ( 2 , nTS ) ; if ( ! color . rgb ) { o . write _shift ( 2 , 0 ) ; o . write _shift ( 1 , 0 ) ; o . write _shift ( 1 , 0 ) } else { var rgb = color . rgb || "FFFFFF" ; o . write _shift ( 1 , parseInt ( rgb . substr ( 0 , 2 ) , 16 ) ) ; o . write _shift ( 1 , parseInt ( rgb . substr ( 2 , 2 ) , 16 ) ) ; o . write _shift ( 1 , parseInt ( rgb . substr ( 4 , 2 ) , 16 ) ) ; o . write _shift ( 1 , 255 ) } return o } function parse _FontFlags ( data , length , opts ) { var d = data . read _shift ( 1 ) ; data . l ++ ; var out = { fItalic : d & 2 , fStrikeout : d & 8 , fOutline : d & 16 , fShadow : d & 32 , fCondense : d & 64 , fExtend : d & 128 } ; return out } function write _FontFlags ( font , o ) { if ( ! o ) o = new _buf ( 2 ) ; var grbit = ( font . italic ? 2 : 0 ) | ( font . strike ? 8 : 0 ) | ( font . outline ? 16 : 0 ) | ( font . shadow ? 32 : 0 ) | ( font . condense ? 64 : 0 ) | ( font . extend ? 128 : 0 ) ; o . write _shift ( 1 , grbit ) ; o . write _shift ( 1 , 0 ) ; return o } { var VT _I2 = 2 ; var VT _I4 = 3 ; var VT _BOOL = 11 ; var VT _VARIANT = 12 ; var VT _UI4 = 19 ; var VT _UI8 = 21 ; var VT _LPSTR = 30 ; var VT _FILETIME = 64 ; var VT _CF = 71 ; var VT _VECTOR = 4096 ; var VT _STRING = 80 ; var VT _USTR = 81 ; var VT _CUSTOM = [ VT _STRING , VT _USTR ] } var DocSummaryPIDDSI = { 1 : { n : "CodePage" , t : VT _I2 } , 2 : { n : "Category" , t : VT _STRING } , 3 : { n : "PresentationFormat" , t : VT _STRING } , 4 : { n : "ByteCount" , t : VT _I4 } , 5 : { n : "LineCount" , t : VT _I4 } , 6 : { n : "ParagraphCount" , t : VT _I4 } , 7 : { n : "SlideCount" , t : VT _I4 } , 8 : { n : "NoteCount" , t : VT _I4 } , 9 : { n : "HiddenCount" , t : VT _I4 } , 10 : { n : "MultimediaClipCount" , t : VT _I4 } , 11 : { n : "Scale" , t : VT _BOOL } , 12 : { n : "HeadingPair" , t : VT _VECTOR | VT _VARIANT } , 13 : { n : "DocParts" , t : VT _VECTOR | VT _LPSTR } , 14 : { n : "Manager" , t : VT _STRING } , 15 : { n : "Company" , t : VT _STRING } , 16 : { n : "LinksDirty" , t : VT _BOOL } , 17 : { n : "CharacterCount" , t : VT _I4 } , 19 : { n : "SharedDoc" , t : VT _BOOL } , 22 : { n : "HLinksChanged" , t : VT _BOOL } , 23 : { n : "AppVersion" , t : VT _I4 , p : "version" } , 26 : { n : "ContentType" , t : VT _STRING } , 27 : { n : "ContentStatus" , t : VT _STRING } , 28 : { n : "Language" , t : VT _STRING } , 29 : { n : "Version" , t : VT _STRING } , 255 : { } } ; var SummaryPIDSI = { 1 : { n : "CodePage" , t : VT _I2 } , 2 : { n : "Title" , t : VT _STRING } , 3 : { n : "Subject" , t : VT _STRING } , 4 : { n : "Author" , t : VT _STRING } , 5 : { n : "Keywords" , t : VT _STRING } , 6 : { n : "Comments" , t : VT _STRING } , 7 : { n : "Template" , t : VT _STRING } , 8 : { n : "LastAuthor" , t : VT _STRING } , 9 : { n : "RevNumber" , t : VT _STRING } , 10 : { n : "EditTime" , t : VT _FILETIME } , 11 : { n : "LastPrinted" , t : VT _FILETIME } , 12 : { n : "CreatedDate" , t : VT _FILETIME } , 13 : { n : "ModifiedDate" , t : VT _FILETIME } , 14 : { n : "PageCount" , t : VT _I4 } , 15 : { n : "WordCount" , t : VT _I4 } , 16 : { n : "CharCount" , t : VT _I4 } , 17 : { n : "Thumbnail" , t : VT _CF } , 18 : { n : "ApplicationName" , t : VT _LPSTR } , 19 : { n : "DocumentSecurity" , t : VT _I4 } , 255 : { } } ; var SpecialProperties = { 2147483648 : { n : "Locale" , t : VT _UI4 } , 2147483651 : { n : "Behavior" , t : VT _UI4 } , 1919054434 : { } } ; ( function ( ) { for ( var y in SpecialProperties ) if ( SpecialProperties . hasOwnProperty ( y ) ) DocSummaryPIDDSI [ y ] = SummaryPIDSI [ y ] = SpecialProperties [ y ] } ) ( ) ; var CountryEnum = { 1 : "US" , 2 : "CA" , 3 : "" , 7 : "RU" , 20 : "EG" , 30 : "GR" , 31 : "NL" , 32 : "BE" , 33 : "FR" , 34 : "ES" , 36 : "HU" , 39 : "IT" , 41 : "CH" , 43 : "AT" , 44 : "GB" , 45 : "DK" , 46 : "SE" , 47 : "NO" , 48 : "PL" , 49 : "DE" , 52 : "MX" , 55 : "BR" , 61 : "AU" , 64 : "NZ" , 66 : "TH" , 81 : "JP" , 82 : "KR" , 84 : "VN" , 86 : "CN" , 90 : "TR" , 105 : "JS" , 213 : "DZ" , 216 : "MA" , 218 : "LY" , 351 : "PT" , 354 : "IS" , 358 : "FI" , 420 : "CZ" , 886 : "TW" , 961 : "LB" , 962 : "JO" , 963 : "SY" , 964 : "IQ" , 965 : "KW" , 966 : "SA" , 971 : "AE" , 972 : "IL" , 974 : "QA" , 981 : "IR" , 65535 : "US" } ; var XLSFillPattern = [ null , "solid" , "mediumGray" , "darkGray" , "lightGray" , "darkHorizontal" , "darkVertical" , "darkDown" , "darkUp" , "darkGrid" , " darkTrelli
var rval = { SystemIdentifier : SystemIdentifier } ; for ( var y in PSet0 ) rval [ y ] = PSet0 [ y ] ; rval . FMTID = FMTID0 ; if ( NumSets === 1 ) return rval ; if ( blob . l !== Offset1 ) throw new Error ( "Length mismatch 2: " + blob . l + " !== " + Offset1 ) ; var PSet1 ; try { PSet1 = parse _PropertySet ( blob , null ) } catch ( e ) { } for ( y in PSet1 ) rval [ y ] = PSet1 [ y ] ; rval . FMTID = [ FMTID0 , FMTID1 ] ; return rval } function parsenoop2 ( blob , length ) { blob . read _shift ( length ) ; return null } function parslurp ( blob , length , cb ) { var arr = [ ] , target = blob . l + length ; while ( blob . l < target ) arr . push ( cb ( blob , target - blob . l ) ) ; if ( target !== blob . l ) throw new Error ( "Slurp error" ) ; return arr } function parsebool ( blob , length ) { return blob . read _shift ( length ) === 1 } function parseuint16 ( blob ) { return blob . read _shift ( 2 , "u" ) } function parseuint16a ( blob , length ) { return parslurp ( blob , length , parseuint16 ) } var parse _Boolean = parsebool ; function parse _Bes ( blob ) { var v = blob . read _shift ( 1 ) , t = blob . read _shift ( 1 ) ; return t === 1 ? v : v === 1 } function parse _ShortXLUnicodeString ( blob , length , opts ) { var cch = blob . read _shift ( opts && opts . biff >= 12 ? 2 : 1 ) ; var width = 1 , encoding = "sbcs-cont" ; var cp = current _codepage ; if ( opts && opts . biff >= 8 ) current _codepage = 1200 ; if ( ! opts || opts . biff == 8 ) { var fHighByte = blob . read _shift ( 1 ) ; if ( fHighByte ) { width = 2 ; encoding = "dbcs-cont" } } else if ( opts . biff == 12 ) { width = 2 ; encoding = "wstr" } var o = cch ? blob . read _shift ( cch , encoding ) : "" ; current _codepage = cp ; return o } function parse _XLUnicodeRichExtendedString ( blob ) { var cp = current _codepage ; current _codepage = 1200 ; var cch = blob . read _shift ( 2 ) , flags = blob . read _shift ( 1 ) ; var fHighByte = flags & 1 , fExtSt = flags & 4 , fRichSt = flags & 8 ; var width = 1 + ( flags & 1 ) ; var cRun = 0 , cbExtRst ; var z = { } ; if ( fRichSt ) cRun = blob . read _shift ( 2 ) ; if ( fExtSt ) cbExtRst = blob . read _shift ( 4 ) ; var encoding = flags & 1 ? "dbcs-cont" : "sbcs-cont" ; var msg = cch === 0 ? "" : blob . read _shift ( cch , encoding ) ; if ( fRichSt ) blob . l += 4 * cRun ; if ( fExtSt ) blob . l += cbExtRst ; z . t = msg ; if ( ! fRichSt ) { z . raw = "<t>" + z . t + "</t>" ; z . r = z . t } current _codepage = cp ; return z } function parse _XLUnicodeStringNoCch ( blob , cch , opts ) { var retval ; if ( opts ) { if ( opts . biff >= 2 && opts . biff <= 5 ) return blob . read _shift ( cch , "sbcs-cont" ) ; if ( opts . biff >= 12 ) return blob . read _shift ( cch , "dbcs-cont" ) } var fHighByte = blob . read _shift ( 1 ) ; if ( fHighByte === 0 ) { retval = blob . read _shift ( cch , "sbcs-cont" ) } else { retval = blob . read _shift ( cch , "dbcs-cont" ) } return retval } function parse _XLUnicodeString ( blob , length , opts ) { var cch = blob . read _shift ( opts && opts . biff == 2 ? 1 : 2 ) ; if ( cch === 0 ) { blob . l ++ ; return "" } return parse _XLUnicodeStringNoCch ( blob , cch , opts ) } function parse _XLUnicodeString2 ( blob , length , opts ) { if ( opts . biff > 5 ) return parse _XLUnicodeString ( blob , length , opts ) ; var cch = blob . read _shift ( 1 ) ; if ( cch === 0 ) { blob . l ++ ; return "" } return blob . read _shift ( cch , "sbcs-cont" ) } var parse _ControlInfo = parsenoop ; var parse _URLMoniker = function ( blob ) { var len = blob . read _shift ( 4 ) , start = blob . l ; var extra = false ; if ( len > 24 ) { blob . l += len - 24 ; if ( blob . read _shift ( 16 ) === "795881f43b1d7f48af2c825dc4852763" ) extra = true ; blob . l = start } var url = blob . read _shift ( ( extra ? len - 24 : len ) >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; if ( extra ) blob . l += 24 ; return url } ; var parse _FileMoniker = function ( blob , length ) { var cAnti = blob . read _shift ( 2 ) ; var ansiLength = blob . read _shift ( 4 ) ; var ansiPath = blob . read _shift ( ansiLength , "cstr" ) ; var endServer = blob . read _shift ( 2 ) ; var versionNumber = blob . read _shift ( 2 ) ; var cbUnicodePathSize = blob . read _shift ( 4 ) ; if ( cbUnicodePathSize === 0 ) return ansiPath . replace ( /\\/g , "/" ) ; var cbUnicodePathBytes = blob . read _shift ( 4 ) ; var usKeyValue = blob . read _shift ( 2 ) ; var unicodePath = blob . read _shift ( cbUnicodePathBytes >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; return unicodePath } ; var parse _HyperlinkMoniker = function ( blob , length ) { var clsid = blob . read _shift ( 16 ) ; length -= 16 ; switch ( clsid ) { case "e0c9ea79f9bace118c8200aa004ba90b" : return parse _URLMoniker ( blob , length ) ; case "0303000000000000c000000000000046" : return parse _FileMoniker ( blob , length ) ; default : throw new Error ( "Unsupported Moniker " + clsid ) ; } } ; var parse _HyperlinkString = function ( blob , length ) { var len = blob . read _shift ( 4 ) ; var o = blob . read _shift ( len , "utf16le" ) . replace ( chr0 , "" ) ; return o } ; var parse _Hyperlink = function ( blob , length ) { var end = blob . l + length ; var sVer = blob . read _shift ( 4 ) ; if ( sVer !== 2 ) throw new Error ( "Unrecognized streamVersion: " + sVer ) ; var flags = blob . read _shift
if ( ft == 2 ) field . offset = d . read _shift ( 2 ) ; field . dec = d . read _shift ( 1 ) ; if ( field . name . length ) fields . push ( field ) ; if ( ft != 2 ) d . l += 14 ; switch ( field . type ) { case "C" : break ; case "D" : break ; case "F" : break ; case "I" : break ; case "L" : break ; case "M" : break ; case "N" : break ; case "T" : break ; case "Y" : break ; case "0" : break ; case "+" : break ; case "@" : break ; default : throw new Error ( "Unknown Field Type: " + field . type ) ; } } if ( d [ d . l ] !== 13 ) d . l = fpos - 1 ; else if ( ft == 2 ) d . l = 521 ; if ( ft != 2 ) { if ( d . read _shift ( 1 ) !== 13 ) throw new Error ( "DBF Terminator not found " + d . l + " " + d [ d . l ] ) ; d . l = fpos } var R = 0 , C = 0 ; out [ 0 ] = [ ] ; for ( C = 0 ; C != fields . length ; ++ C ) out [ 0 ] [ C ] = fields [ C ] . name ; while ( nrow -- > 0 ) { if ( d [ d . l ] === 42 ) { d . l += rlen ; continue } ++ d . l ; out [ ++ R ] = [ ] ; C = 0 ; for ( C = 0 ; C != fields . length ; ++ C ) { var dd = d . slice ( d . l , d . l + fields [ C ] . len ) ; d . l += fields [ C ] . len ; prep _blob ( dd , 0 ) ; var s = cptable . utils . decode ( current _cp , dd ) ; switch ( fields [ C ] . type ) { case "C" : out [ R ] [ C ] = cptable . utils . decode ( current _cp , dd ) ; out [ R ] [ C ] = out [ R ] [ C ] . trim ( ) ; break ; case "D" : if ( s . length === 8 ) out [ R ] [ C ] = new Date ( + s . substr ( 0 , 4 ) , + s . substr ( 4 , 2 ) - 1 , + s . substr ( 6 , 2 ) ) ; else out [ R ] [ C ] = s ; break ; case "F" : out [ R ] [ C ] = parseFloat ( s . trim ( ) ) ; break ; case "I" : out [ R ] [ C ] = dd . read _shift ( 4 , "i" ) ; break ; case "L" : switch ( s . toUpperCase ( ) ) { case "Y" : ; case "T" : out [ R ] [ C ] = true ; break ; case "N" : ; case "F" : out [ R ] [ C ] = false ; break ; case " " : ; case "?" : out [ R ] [ C ] = false ; break ; default : throw new Error ( "DBF Unrecognized L:|" + s + "|" ) ; } break ; case "M" : if ( ! memo ) throw new Error ( "DBF Unexpected MEMO for type " + ft . toString ( 16 ) ) ; out [ R ] [ C ] = "##MEMO##" + dd . read _shift ( 4 ) ; break ; case "N" : out [ R ] [ C ] = + s . replace ( /\u0000/g , "" ) . trim ( ) ; break ; case "T" : var day = dd . read _shift ( 4 ) , ms = dd . read _shift ( 4 ) ; throw new Error ( day + " | " + ms ) ; case "Y" : out [ R ] [ C ] = dd . read ( 4 , "i" ) / 1e4 ; break ; case "0" : if ( fields [ C ] . name === "_NullFlags" ) break ; default : throw new Error ( "DBF Unsupported data type " + fields [ C ] . type ) ; } } } if ( ft != 2 ) if ( d . l < d . length && d [ d . l ++ ] != 26 ) throw new Error ( "DBF EOF Marker missing " + ( d . l - 1 ) + " of " + d . length + " " + d [ d . l - 1 ] . toString ( 16 ) ) ; return out } function dbf _to _sheet ( buf , opts ) { var o = opts || { } ; if ( ! o . dateNF ) o . dateNF = "yyyymmdd" ; return aoa _to _sheet ( dbf _to _aoa ( buf , o ) , o ) } function dbf _to _workbook ( buf , opts ) { try { return sheet _to _workbook ( dbf _to _sheet ( buf , opts ) , opts ) } catch ( e ) { if ( opts && opts . WTF ) throw e } return { SheetNames : [ ] , Sheets : { } } } return { to _workbook : dbf _to _workbook , to _sheet : dbf _to _sheet } } ( ) ; var SYLK = function ( ) { function sylk _to _aoa ( d , opts ) { switch ( opts . type ) { case "base64" : return sylk _to _aoa _str ( Base64 . decode ( d ) , opts ) ; case "binary" : return sylk _to _aoa _str ( d , opts ) ; case "buffer" : return sylk _to _aoa _str ( d . toString ( "binary" ) , opts ) ; case "array" : return sylk _to _aoa _str ( cc2str ( d ) , opts ) ; } throw new Error ( "Unrecognized type " + opts . type ) } function sylk _to _aoa _str ( str , opts ) { var records = str . split ( /[\n\r]+/ ) , R = - 1 , C = - 1 , ri = 0 , rj = 0 , arr = [ ] ; var formats = [ ] ; var next _cell _format = null ; var sht = { } , rowinfo = [ ] , colinfo = [ ] , cw = [ ] ; var Mval = 0 , j ; for ( ; ri !== records . length ; ++ ri ) { Mval = 0 ; var rstr = records [ ri ] . trim ( ) ; var record = rstr . replace ( /;;/g , " " ) . split ( ";" ) . map ( function ( x ) { return x . replace ( /\u0001/g , ";" ) } ) ; var RT = record [ 0 ] , val ; if ( rstr . length > 0 ) switch ( RT ) { case "ID" : break ; case "E" : break ; case "B" : break ; case "O" : break ; case "P" : if ( record [ 1 ] . charAt ( 0 ) == "P" ) formats . push ( rstr . substr ( 3 ) . replace ( /;;/g , ";" ) ) ; break ; case "C" : for ( rj = 1 ; rj < record . length ; ++ rj ) switch ( record [ rj ] . charAt ( 0 ) ) { case "X" : C = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; break ; case "Y" : R = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; C = 0 ; for ( j = arr . length ; j <= R ; ++ j ) arr [ j ] = [ ] ; break ; case "K" : val = record [ rj ] . substr ( 1 ) ; if ( val . charAt ( 0 ) === '"' ) val = val . substr ( 1 , val . length - 2 ) ; else if ( val === "TRUE" ) val = true ; else if ( val === "FALSE" ) val = false ; else if ( + val === + val ) { val = + val ; if ( next _cell _format !== null && SSF . is _date ( next _cell _format ) ) val = numdate ( val ) } else if ( ! isNaN ( fuzzydate ( val ) . getDate ( ) ) ) { val = parseDate ( val ) } arr [ R ] [ C ] = val ; next _cell _format = null ; break ; case "E" : var formula = rc _to _a1 ( record [ rj ] . substr ( 1 ) , { r : R , c : C } ) ; arr [ R ] [ C ] = [ arr [ R ] [ C ] , formula ] ; break ; default : if ( opts && opts . WTF ) throw new Error ( "SYLK bad record " + rstr ) ; } break ; case "F" : var F _seen = 0 ; for ( rj = 1 ; rj < record . length ; ++ rj ) switch ( record [ rj ] . charAt ( 0 ) ) { case "X" : C = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; ++ F _seen ; break ; case "Y" : R = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; for ( j = arr . length ; j <= R ; ++ j ) arr [ j ] = [ ] ; break ; case "M" :
PasswordLastChar = Password [ Password . length - 1 ] ; ObfuscationArray [ Index ] = XorRor ( PasswordLastChar , Temp ) } while ( Index > 0 ) { -- Index ; Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) } Index = 15 ; PadIndex = 15 - Password . length ; while ( PadIndex > 0 ) { Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( PadArray [ PadIndex ] , Temp ) ; -- Index ; -- PadIndex ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; -- PadIndex } return ObfuscationArray } } ( ) ; var crypto _DecryptData _Method1 = function ( password , Data , XorArrayIndex , XorArray , O ) { if ( ! O ) O = Data ; if ( ! XorArray ) XorArray = crypto _CreateXorArray _Method1 ( password ) ; var Index , Value ; for ( Index = 0 ; Index != Data . length ; ++ Index ) { Value = Data [ Index ] ; Value ^= XorArray [ XorArrayIndex ] ; Value = ( Value >> 5 | Value << 3 ) & 255 ; O [ Index ] = Value ; ++ XorArrayIndex } return [ O , XorArrayIndex , XorArray ] } ; var crypto _MakeXorDecryptor = function ( password ) { var XorArrayIndex = 0 , XorArray = crypto _CreateXorArray _Method1 ( password ) ; return function ( Data ) { var O = crypto _DecryptData _Method1 ( "" , Data , XorArrayIndex , XorArray ) ; XorArrayIndex = O [ 1 ] ; return O [ 0 ] } } ; function parse _XORObfuscation ( blob , length , opts , out ) { var o = { key : parseuint16 ( blob ) , verificationBytes : parseuint16 ( blob ) } ; if ( opts . password ) o . verifier = crypto _CreatePasswordVerifier _Method1 ( opts . password ) ; out . valid = o . verificationBytes === o . verifier ; if ( out . valid ) out . insitu _decrypt = crypto _MakeXorDecryptor ( opts . password ) ; return o } function parse _FilePassHeader ( blob , length , oo ) { var o = oo || { } ; o . Info = blob . read _shift ( 2 ) ; blob . l -= 2 ; if ( o . Info === 1 ) o . Data = parse _RC4Header ( blob , length ) ; else o . Data = parse _RC4CryptoHeader ( blob , length ) ; return o } function parse _FilePass ( blob , length , opts ) { var o = { Type : blob . read _shift ( 2 ) } ; if ( o . Type ) parse _FilePassHeader ( blob , length - 2 , o ) ; else parse _XORObfuscation ( blob , length - 2 , opts , o ) ; return o } function hex2RGB ( h ) { var o = h . substr ( h [ 0 ] === "#" ? 1 : 0 , 6 ) ; return [ parseInt ( o . substr ( 0 , 2 ) , 16 ) , parseInt ( o . substr ( 2 , 2 ) , 16 ) , parseInt ( o . substr ( 4 , 2 ) , 16 ) ] } function rgb2Hex ( rgb ) { for ( var i = 0 , o = 1 ; i != 3 ; ++ i ) o = o * 256 + ( rgb [ i ] > 255 ? 255 : rgb [ i ] < 0 ? 0 : rgb [ i ] ) ; return o . toString ( 16 ) . toUpperCase ( ) . substr ( 1 ) } function rgb2HSL ( rgb ) { var R = rgb [ 0 ] / 255 , G = rgb [ 1 ] / 255 , B = rgb [ 2 ] / 255 ; var M = Math . max ( R , G , B ) , m = Math . min ( R , G , B ) , C = M - m ; if ( C === 0 ) return [ 0 , 0 , R ] ; var H6 = 0 , S = 0 , L2 = M + m ; S = C / ( L2 > 1 ? 2 - L2 : L2 ) ; switch ( M ) { case R : H6 = ( ( G - B ) / C + 6 ) % 6 ; break ; case G : H6 = ( B - R ) / C + 2 ; break ; case B : H6 = ( R - G ) / C + 4 ; break ; } return [ H6 / 6 , S , L2 / 2 ] } function hsl2RGB ( hsl ) { var H = hsl [ 0 ] , S = hsl [ 1 ] , L = hsl [ 2 ] ; var C = S * 2 * ( L < . 5 ? L : 1 - L ) , m = L - C / 2 ; var rgb = [ m , m , m ] , h6 = 6 * H ; var X ; if ( S !== 0 ) switch ( h6 | 0 ) { case 0 : ; case 6 : X = C * h6 ; rgb [ 0 ] += C ; rgb [ 1 ] += X ; break ; case 1 : X = C * ( 2 - h6 ) ; rgb [ 0 ] += X ; rgb [ 1 ] += C ; break ; case 2 : X = C * ( h6 - 2 ) ; rgb [ 1 ] += C ; rgb [ 2 ] += X ; break ; case 3 : X = C * ( 4 - h6 ) ; rgb [ 1 ] += X ; rgb [ 2 ] += C ; break ; case 4 : X = C * ( h6 - 4 ) ; rgb [ 2 ] += C ; rgb [ 0 ] += X ; break ; case 5 : X = C * ( 6 - h6 ) ; rgb [ 2 ] += X ; rgb [ 0 ] += C ; break ; } for ( var i = 0 ; i != 3 ; ++ i ) rgb [ i ] = Math . round ( rgb [ i ] * 255 ) ; return rgb } function rgb _tint ( hex , tint ) { if ( tint === 0 ) return hex ; var hsl = rgb2HSL ( hex2RGB ( hex ) ) ; if ( tint < 0 ) hsl [ 2 ] = hsl [ 2 ] * ( 1 + tint ) ; else hsl [ 2 ] = 1 - ( 1 - hsl [ 2 ] ) * ( 1 - tint ) ; return rgb2Hex ( hsl2RGB ( hsl ) ) } var DEF _MDW = 6 , MAX _MDW = 15 , MIN _MDW = 1 , MDW = DEF _MDW ; function width2px ( width ) { return Math . floor ( ( width + Math . round ( 128 / MDW ) / 256 ) * MDW ) } function px2char ( px ) { return Math . floor ( ( px - 5 ) / MDW * 100 + . 5 ) / 100 } function char2width ( chr ) { return Math . round ( ( chr * MDW + 5 ) / MDW * 256 ) / 256 } function px2char _ ( px ) { return ( ( px - 5 ) / MDW * 100 + . 5 ) / 100 } function char2width _ ( chr ) { return ( chr * MDW + 5 ) / MDW * 256 / 256 } function cycle _width ( collw ) { return char2width ( px2char ( width2px ( collw ) ) ) } function find _mdw _colw ( collw ) { var delta = Math . abs ( collw - cycle _width ( collw ) ) , _MDW = MDW ; if ( delta > . 005 ) for ( MDW = MIN _MDW ; MDW < MAX _MDW ; ++ MDW ) if ( Math . abs ( collw - cycle _width ( collw ) ) <= delta ) { delta = Math . abs ( collw - cycle _width ( collw ) ) ; _MDW = MDW } MDW = _MDW } function find _mdw _wpx ( wpx ) { var delta = Infinity , guess = 0 , _MDW = MIN _MDW ; for ( MDW = MIN _MDW ; MDW < MAX _MDW ; ++ MDW ) { guess = char2width _ ( px2char _ ( wpx ) ) * 256 ; guess = guess % 1 ; if ( guess > . 5 ) guess -- ; if ( Math . abs ( guess ) < delta ) { delta = Math . abs ( guess ) ; _MDW = MDW } } MDW = _MDW } function process _col ( coll ) { if ( coll . width ) { coll . wpx = width2px ( coll . width ) ; coll . wch = px2char ( coll . wpx ) ; coll . MDW = MDW } else if ( coll . wpx ) { coll . wch = px2char ( coll . w
o [ o . length ] = "</a:gsLst>" ; o [ o . length ] = '<a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path>' ; o [ o . length ] = "</a:gradFill>" ; o [ o . length ] = "</a:bgFillStyleLst>" ; o [ o . length ] = "</a:fmtScheme>" ; o [ o . length ] = "</a:themeElements>" ; o [ o . length ] = "<a:objectDefaults>" ; o [ o . length ] = "<a:spDef>" ; o [ o . length ] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style>' ; o [ o . length ] = "</a:spDef>" ; o [ o . length ] = "<a:lnDef>" ; o [ o . length ] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style>' ; o [ o . length ] = "</a:lnDef>" ; o [ o . length ] = "</a:objectDefaults>" ; o [ o . length ] = "<a:extraClrSchemeLst/>" ; o [ o . length ] = "</a:theme>" ; return o . join ( "" ) } function parse _Theme ( blob , length , opts ) { var dwThemeVersion = blob . read _shift ( 4 ) ; if ( dwThemeVersion === 124226 ) return ; blob . l += length - 4 } function parse _ColorTheme ( blob , length ) { return blob . read _shift ( 4 ) } function parse _FullColorExt ( blob , length ) { var o = { } ; o . xclrType = blob . read _shift ( 2 ) ; o . nTintShade = blob . read _shift ( 2 ) ; switch ( o . xclrType ) { case 0 : blob . l += 4 ; break ; case 1 : o . xclrValue = parse _IcvXF ( blob , 4 ) ; break ; case 2 : o . xclrValue = parse _LongRGBA ( blob , 4 ) ; break ; case 3 : o . xclrValue = parse _ColorTheme ( blob , 4 ) ; break ; case 4 : blob . l += 4 ; break ; } blob . l += 8 ; return o } function parse _IcvXF ( blob , length ) { return parsenoop ( blob , length ) } function parse _XFExtGradient ( blob , length ) { return parsenoop ( blob , length ) } function parse _ExtProp ( blob , length ) { var extType = blob . read _shift ( 2 ) ; var cb = blob . read _shift ( 2 ) ; var o = [ extType ] ; switch ( extType ) { case 4 : ; case 5 : ; case 7 : ; case 8 : ; case 9 : ; case 10 : ; case 11 : ; case 13 : o [ 1 ] = parse _FullColorExt ( blob , cb ) ; break ; case 6 : o [ 1 ] = parse _XFExtGradient ( blob , cb ) ; break ; case 14 : ; case 15 : o [ 1 ] = blob . read _shift ( cb === 5 ? 1 : 2 ) ; break ; default : throw new Error ( "Unrecognized ExtProp type: " + extType + " " + cb ) ; } return o } function parse _XFExt ( blob , length ) { var end = blob . l + length ; blob . l += 2 ; var ixfe = blob . read _shift ( 2 ) ; blob . l += 2 ; var cexts = blob . read _shift ( 2 ) ; var ext = [ ] ; while ( cexts -- > 0 ) ext . push ( parse _ExtProp ( blob , end - blob . l ) ) ; return { ixfe : ixfe , ext : ext } } function update _xfext ( xf , xfext ) { xfext . forEach ( function ( xfe ) { switch ( xfe [ 0 ] ) { case 4 : break ; case 5 : break ; case 6 : break ; case 7 : break ; case 8 : break ; case 9 : break ; case 10 : break ; case 11 : break ; case 13 : break ; case 14 : break ; case 15 : break ; } } ) } function parse _cc _xml ( data , opts ) { var d = [ ] ; if ( ! data ) return d ; var l = 0 , i = 1 ; ( data . match ( tagregex ) || [ ] ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; switch ( y [ 0 ] ) { case "<?xml" : break ; case "<calcChain" : ; case "<calcChain>" : ; case "</calcChain>" : break ; case "<c" : delete y [ 0 ] ; if ( y . i ) i = y . i ; else y . i = i ; d . push ( y ) ; break ; } } ) ; return d } function write _cc _xml ( data , opts ) { } function parse _BrtCalcChainItem$ ( data , length ) { var out = { } ; out . i = data . read _shift ( 4 ) ; var cell = { } ; cell . r = data . read _shift ( 4 ) ; cell . c = data . read _shift ( 4 ) ; out . r = encode _cell ( cell ) ; var flags = data . read _shift ( 1 ) ; if ( flags & 2 ) out . l = "1" ; if ( flags & 8 ) out . a = "1" ; return out } function parse _cc _bin ( data , opts ) { var out = [ ] ; var pass = false ; recordhopper ( data , function hopper _cc ( val , R _n , RT ) { switch ( RT ) { case 63 : out . push ( val ) ; 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 ) ; } } ) ; return out } function write _cc _bin ( data , opts ) { } RELS . IMG = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" ; RELS . DRAW = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" ; function parse _drawing ( data , rels ) { if ( ! data ) return "??" ; var id = ( data . match ( /<c:chart [^>]*r:id="([^"]*)"/ ) || [ "" , "" ] ) [ 1 ] ; return rels [ "!id" ] [ id ] . Target } var _shapeid = 1024 ; function write _comments _vml ( rId , comments ) { var csize = [ 21600 , 21600 ] ; var bbox = [ "m0,0l0" , csize [ 1 ] , csize [ 0 ] , csize [ 1 ] , csize [ 0 ] , "0xe" ] . join ( "," ) ; var o = [ writextag ( "xml" , null , { "xmlns:v" :
; } stack . push ( ( _left ? sp : "" ) + stack . pop ( ) + ( _left ? "" : sp ) ) ; last _sp = - 1 } } if ( stack . length > 1 && opts . WTF ) throw new Error ( "bad formula stack" ) ; return stack [ 0 ] } function parse _XLSBParsedFormula ( data , length , opts ) { var end = data . l + length ; var cce = data . read _shift ( 4 ) ; var rgce = parse _Rgce ( data , cce , opts ) ; var cb = data . read _shift ( 4 ) ; var rgcb = cb > 0 ? parse _RgbExtra ( data , cb , rgce , opts ) : null ; return [ rgce , rgcb ] } var parse _XLSBArrayParsedFormula = parse _XLSBParsedFormula ; var parse _XLSBCellParsedFormula = parse _XLSBParsedFormula ; var parse _XLSBNameParsedFormula = parse _XLSBParsedFormula ; var parse _XLSBSharedParsedFormula = parse _XLSBParsedFormula ; var PtgDataType = { 1 : "REFERENCE" , 2 : "VALUE" , 3 : "ARRAY" } ; var Cetab = { 0 : "BEEP" , 1 : "OPEN" , 2 : "OPEN.LINKS" , 3 : "CLOSE.ALL" , 4 : "SAVE" , 5 : "SAVE.AS" , 6 : "FILE.DELETE" , 7 : "PAGE.SETUP" , 8 : "PRINT" , 9 : "PRINTER.SETUP" , 10 : "QUIT" , 11 : "NEW.WINDOW" , 12 : "ARRANGE.ALL" , 13 : "WINDOW.SIZE" , 14 : "WINDOW.MOVE" , 15 : "FULL" , 16 : "CLOSE" , 17 : "RUN" , 22 : "SET.PRINT.AREA" , 23 : "SET.PRINT.TITLES" , 24 : "SET.PAGE.BREAK" , 25 : "REMOVE.PAGE.BREAK" , 26 : "FONT" , 27 : "DISPLAY" , 28 : "PROTECT.DOCUMENT" , 29 : "PRECISION" , 30 : "A1.R1C1" , 31 : "CALCULATE.NOW" , 32 : "CALCULATION" , 34 : "DATA.FIND" , 35 : "EXTRACT" , 36 : "DATA.DELETE" , 37 : "SET.DATABASE" , 38 : "SET.CRITERIA" , 39 : "SORT" , 40 : "DATA.SERIES" , 41 : "TABLE" , 42 : "FORMAT.NUMBER" , 43 : "ALIGNMENT" , 44 : "STYLE" , 45 : "BORDER" , 46 : "CELL.PROTECTION" , 47 : "COLUMN.WIDTH" , 48 : "UNDO" , 49 : "CUT" , 50 : "COPY" , 51 : "PASTE" , 52 : "CLEAR" , 53 : "PASTE.SPECIAL" , 54 : "EDIT.DELETE" , 55 : "INSERT" , 56 : "FILL.RIGHT" , 57 : "FILL.DOWN" , 61 : "DEFINE.NAME" , 62 : "CREATE.NAMES" , 63 : "FORMULA.GOTO" , 64 : "FORMULA.FIND" , 65 : "SELECT.LAST.CELL" , 66 : "SHOW.ACTIVE.CELL" , 67 : "GALLERY.AREA" , 68 : "GALLERY.BAR" , 69 : "GALLERY.COLUMN" , 70 : "GALLERY.LINE" , 71 : "GALLERY.PIE" , 72 : "GALLERY.SCATTER" , 73 : "COMBINATION" , 74 : "PREFERRED" , 75 : "ADD.OVERLAY" , 76 : "GRIDLINES" , 77 : "SET.PREFERRED" , 78 : "AXES" , 79 : "LEGEND" , 80 : "ATTACH.TEXT" , 81 : "ADD.ARROW" , 82 : "SELECT.CHART" , 83 : "SELECT.PLOT.AREA" , 84 : "PATTERNS" , 85 : "MAIN.CHART" , 86 : "OVERLAY" , 87 : "SCALE" , 88 : "FORMAT.LEGEND" , 89 : "FORMAT.TEXT" , 90 : "EDIT.REPEAT" , 91 : "PARSE" , 92 : "JUSTIFY" , 93 : "HIDE" , 94 : "UNHIDE" , 95 : "WORKSPACE" , 96 : "FORMULA" , 97 : "FORMULA.FILL" , 98 : "FORMULA.ARRAY" , 99 : "DATA.FIND.NEXT" , 100 : "DATA.FIND.PREV" , 101 : "FORMULA.FIND.NEXT" , 102 : "FORMULA.FIND.PREV" , 103 : "ACTIVATE" , 104 : "ACTIVATE.NEXT" , 105 : "ACTIVATE.PREV" , 106 : "UNLOCKED.NEXT" , 107 : "UNLOCKED.PREV" , 108 : "COPY.PICTURE" , 109 : "SELECT" , 110 : "DELETE.NAME" , 111 : "DELETE.FORMAT" , 112 : "VLINE" , 113 : "HLINE" , 114 : "VPAGE" , 115 : "HPAGE" , 116 : "VSCROLL" , 117 : "HSCROLL" , 118 : "ALERT" , 119 : "NEW" , 120 : "CANCEL.COPY" , 121 : "SHOW.CLIPBOARD" , 122 : "MESSAGE" , 124 : "PASTE.LINK" , 125 : "APP.ACTIVATE" , 126 : "DELETE.ARROW" , 127 : "ROW.HEIGHT" , 128 : "FORMAT.MOVE" , 129 : "FORMAT.SIZE" , 130 : "FORMULA.REPLACE" , 131 : "SEND.KEYS" , 132 : "SELECT.SPECIAL" , 133 : "APPLY.NAMES" , 134 : "REPLACE.FONT" , 135 : "FREEZE.PANES" , 136 : "SHOW.INFO" , 137 : "SPLIT" , 138 : "ON.WINDOW" , 139 : "ON.DATA" , 140 : "DISABLE.INPUT" , 142 : "OUTLINE" , 143 : "LIST.NAMES" , 144 : "FILE.CLOSE" , 145 : "SAVE.WORKBOOK" , 146 : "DATA.FORM" , 147 : "COPY.CHART" , 148 : "ON.TIME" , 149 : "WAIT" , 150 : "FORMAT.FONT" , 151 : "FILL.UP" , 152 : "FILL.LEFT" , 153 : "DELETE.OVERLAY" , 155 : "SHORT.MENUS" , 159 : "SET.UPDATE.STATUS" , 161 : "COLOR.PALETTE" , 162 : "DELETE.STYLE" , 163 : "WINDOW.RESTORE" , 164 : "WINDOW.MAXIMIZE" , 166 : "CHANGE.LINK" , 167 : "CALCULATE.DOCUMENT" , 168 : "ON.KEY" , 169 : "APP.RESTORE" , 170 : "APP.MOVE" , 171 : "APP.SIZE" , 172 : "APP.MINIMIZE" , 173 : "APP.MAXIMIZE" , 174 : "BRING.TO.FRONT" , 175 : "SEND.TO.BACK" , 185 : "MAIN.CHART.TYPE" , 186 : "OVERLAY.CHART.TYPE" , 187 : "SELECT.END" , 188 : "OPEN.MAIL" , 189 : "SEND.MAIL" , 190 : "STANDARD.FONT" , 191 : "CONSOLIDATE" , 192 : "SORT.SPECIAL" , 193 : "GALLERY.3D.AREA" , 194 : "GALLERY.3D.COLUMN" , 195 : "GALLERY.3D.LINE" , 196 : "GALLERY.3D.PIE" , 197 : "VIEW.3D" , 198 : "GOAL.SEEK" , 199 : "WORKGROUP" , 200 : "FILL.GROUP" , 201 : "UPDATE.LINK" , 202 : "PROMOTE" , 203 : "DEMOTE" , 204 : "SHOW.DETAIL" , 206 : "UNGROUP" , 207 : "OBJECT.PROPERTIES" , 208 : "SAVE.NEW.OBJECT" , 209 : "SHARE" , 210 : "SHARE.NAME" , 211 : "DUPLICATE" , 212 : "APPLY.STYLE" , 213 : "ASSIGN.TO.OBJECT" , 214 : "OBJECT.PROTECTION" , 215 : "HIDE.OBJECT" , 216 : "SET.EXTRACT" , 217 : "CREATE.PUBLISHER" , 218 : "SUBSCRIBE.TO" , 219 : "ATTRIBUTES" , 220 : "SHOW.TOOLBAR" , 222 : "PRINT.PREVIEW" , 223 : "EDIT.COLOR" , 224 : "SHOW.LEVELS" , 225 : "FORMAT.MAIN" , 226 : "FORMAT.OVERLAY" , 227 : "ON.RECALC" , 228 : "EDIT.SERIES" , 229 : "DEFINE.STYLE" , 240 : "LINE.PRINT" , 243 : " ENTE
break ; case "b" : p . v = parsexmlbool ( p . v ) ; break ; case "d" : if ( opts . cellDates ) p . v = parseDate ( p . v , 1 ) ; else { p . v = datenum ( parseDate ( p . v , 1 ) ) ; p . t = "n" } break ; case "e" : if ( ! opts || opts . cellText !== false ) p . w = p . v ; p . v = RBErr [ p . v ] ; break ; } fmtid = fillid = 0 ; if ( do _format && tag . s !== undefined ) { cf = styles . CellXf [ tag . s ] ; if ( cf != null ) { if ( cf . numFmtId != null ) fmtid = cf . numFmtId ; if ( opts . cellStyles && cf . fillId != null ) fillid = cf . fillId } } safe _format ( p , fmtid , fillid , opts , themes , styles ) ; if ( opts . cellDates && do _format && p . t == "n" && SSF . is _date ( SSF . _table [ fmtid ] ) ) { p . t = "d" ; p . v = numdate ( p . v ) } if ( dense ) { var _r = decode _cell ( tag . r ) ; if ( ! s [ _r . r ] ) s [ _r . r ] = [ ] ; s [ _r . r ] [ _r . c ] = p } else s [ tag . r ] = p } } if ( rows . length > 0 ) s [ "!rows" ] = rows } } ( ) ; function write _ws _xml _data ( ws , opts , idx , wb , rels ) { var o = [ ] , r = [ ] , range = safe _decode _range ( ws [ "!ref" ] ) , cell , ref , rr = "" , cols = [ ] , R = 0 , C = 0 , rows = ws [ "!rows" ] ; var dense = Array . isArray ( ws ) ; for ( C = range . s . c ; C <= range . e . c ; ++ C ) cols [ C ] = encode _col ( C ) ; for ( R = range . s . r ; R <= range . e . r ; ++ R ) { r = [ ] ; rr = encode _row ( R ) ; for ( C = range . s . c ; C <= range . e . c ; ++ C ) { ref = cols [ C ] + rr ; var _cell = dense ? ( ws [ R ] || [ ] ) [ C ] : ws [ ref ] ; if ( _cell === undefined ) continue ; if ( ( cell = write _ws _xml _cell ( _cell , ref , ws , opts , idx , wb ) ) != null ) r . push ( cell ) } if ( r . length > 0 ) { var params = { r : rr } ; if ( rows && rows [ R ] ) { var row = rows [ R ] ; if ( row . hidden ) params . hidden = 1 ; var height = - 1 ; if ( row . hpx ) height = px2pt ( row . hpx ) ; else if ( row . hpt ) height = row . hpt ; if ( height > - 1 ) { params . ht = height ; params . customHeight = 1 } } o [ o . length ] = writextag ( "row" , r . join ( "" ) , params ) } } return o . join ( "" ) } var WS _XML _ROOT = writextag ( "worksheet" , null , { xmlns : XMLNS . main [ 0 ] , "xmlns:r" : XMLNS . r } ) ; function write _ws _xml ( idx , opts , wb , rels ) { var o = [ XML _HEADER , WS _XML _ROOT ] ; var s = wb . SheetNames [ idx ] , sidx = 0 , rdata = "" ; var ws = wb . Sheets [ s ] ; if ( ws == null ) ws = { } ; var ref = ws [ "!ref" ] ; if ( ref == null ) ref = "A1" ; if ( ! rels ) rels = { } ; ws [ "!comments" ] = [ ] ; ws [ "!drawing" ] = [ ] ; o [ o . length ] = writextag ( "sheetPr" , null , { codeName : escapexml ( wb . SheetNames [ idx ] ) } ) ; o [ o . length ] = writextag ( "dimension" , null , { ref : ref } ) ; o [ o . length ] = write _ws _xml _sheetviews ( ws , opts , idx , wb ) ; if ( opts . sheetFormat ) o [ o . length ] = writextag ( "sheetFormatPr" , null , { defaultRowHeight : opts . sheetFormat . defaultRowHeight || "16" , baseColWidth : opts . sheetFormat . baseColWidth || "10" } ) ; if ( ws [ "!cols" ] != null && ws [ "!cols" ] . length > 0 ) o [ o . length ] = write _ws _xml _cols ( ws , ws [ "!cols" ] ) ; o [ sidx = o . length ] = "<sheetData/>" ; ws [ "!links" ] = [ ] ; if ( ws [ "!ref" ] != null ) { rdata = write _ws _xml _data ( ws , opts , idx , wb , rels ) ; if ( rdata . length > 0 ) o [ o . length ] = rdata } if ( o . length > sidx + 1 ) { o [ o . length ] = "</sheetData>" ; o [ sidx ] = o [ sidx ] . replace ( "/>" , ">" ) } if ( ws [ "!protect" ] != null ) o [ o . length ] = write _ws _xml _protection ( ws [ "!protect" ] ) ; if ( ws [ "!autofilter" ] != null ) o [ o . length ] = write _ws _xml _autofilter ( ws [ "!autofilter" ] ) ; if ( ws [ "!merges" ] != null && ws [ "!merges" ] . length > 0 ) o [ o . length ] = write _ws _xml _merges ( ws [ "!merges" ] ) ; var relc = - 1 , rel , rId = - 1 ; if ( ws [ "!links" ] . length > 0 ) { o [ o . length ] = "<hyperlinks>" ; ws [ "!links" ] . forEach ( function ( l ) { if ( ! l [ 1 ] . Target ) return ; rId = add _rels ( rels , - 1 , escapexml ( l [ 1 ] . Target ) . replace ( /#.*$/ , "" ) , RELS . HLINK ) ; rel = { ref : l [ 0 ] , "r:id" : "rId" + rId } ; if ( ( relc = l [ 1 ] . Target . indexOf ( "#" ) ) > - 1 ) rel . location = escapexml ( l [ 1 ] . Target . substr ( relc + 1 ) ) ; if ( l [ 1 ] . Tooltip ) rel . tooltip = escapexml ( l [ 1 ] . Tooltip ) ; o [ o . length ] = writextag ( "hyperlink" , null , rel ) } ) ; o [ o . length ] = "</hyperlinks>" } delete ws [ "!links" ] ; if ( ws [ "!margins" ] != null ) o [ o . length ] = write _ws _xml _margins ( ws [ "!margins" ] ) ; var hfidx = o . length ; o [ o . length ] = "" ; if ( ws [ "!drawing" ] . length > 0 ) { rId = add _rels ( rels , - 1 , "../drawings/drawing" + ( idx + 1 ) + ".xml" , RELS . DRAW ) ; o [ o . length ] = writextag ( "drawing" , null , { "r:id" : "rId" + rId } ) } else delete ws [ "!drawing" ] ; if ( ws [ "!comments" ] . length > 0 ) { rId = add _rels ( rels , - 1 , "../drawings/vmlDrawing" + ( idx + 1 ) + ".vml" , RELS . VML ) ; o [ o . length ] = writextag ( "legacyDrawing" , null , { "r:id" : "rId" + rId } ) ; ws [ "!legacy" ] = rId } if ( o . length > 2 ) { o [ o . length ] = "</worksheet>" ; o [ 1 ] = o [ 1 ] . replace ( "/>" , ">" ) } return o . join ( "" ) } function parse _BrtRowHdr ( data , length ) { var z = { } ; var tgt = data . l + length ; z . r = data . read _shift ( 4 ) ; data . l += 4 ; var miyRw = data . read _shift ( 2 ) ; data . l += 1 ; var flags = data . read _shift ( 1 ) ; data . l = tgt ; if ( flags & 16 ) z . hidden = true ; if ( flags & 32 ) z . hpt = miyRw / 20 ; return z } function write _BrtRowHdr ( R , range , ws ) { var o = new _buf ( 17 + 8 * 16 ) ; var row = ( ws [ "!rows" ] || [ ] ) [ R ] || { } ; o . write _shift ( 4 , R ) ; o . write _shift ( 4 , 0 ) ; var mi
var formula = parse _XLSBNameParsedFormula ( data , 0 , opts ) ; var comment = parse _XLNullableWideString ( data ) ; data . l = end ; var out = { Name : name , Ptg : formula , Comment : comment } ; if ( itab < 268435455 ) out . Sheet = itab ; return out } function parse _wb _bin ( data , opts ) { var wb = { AppVersion : { } , WBProps : { } , WBView : [ ] , Sheets : [ ] , CalcPr : { } , xmlns : "" } ; var pass = false , z ; if ( ! opts ) opts = { } ; opts . biff = 12 ; var Names = [ ] ; var supbooks = [ ] ; supbooks . SheetNames = [ ] ; recordhopper ( data , function hopper _wb ( val , R _n , RT ) { switch ( RT ) { case 156 : supbooks . SheetNames . push ( val . name ) ; wb . Sheets . push ( val ) ; break ; case 39 : val . Ref = stringify _formula ( val . Ptg , null , null , supbooks , opts ) ; delete val . Ptg ; Names . push ( val ) ; break ; case 1036 : break ; case 153 : wb . WBProps = val ; break ; case 2071 : ; case 534 : ; case 677 : ; case 158 : ; case 157 : ; case 610 : ; case 2050 : ; case 362 : ; case 155 : ; case 548 : ; case 676 : ; case 128 : ; case 665 : ; case 2128 : ; case 2125 : ; case 549 : ; case 2053 : ; case 361 : ; case 596 : ; case 667 : ; case 355 : ; case 358 : ; case 357 : ; case 2076 : ; case 2075 : ; case 2082 : ; case 397 : ; case 154 : ; case 1117 : ; case 553 : ; case 2091 : break ; case 35 : pass = true ; break ; case 36 : pass = false ; break ; case 37 : break ; case 38 : break ; case 16 : 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 ) ; parse _wb _defaults ( wb ) ; wb . Names = Names ; return wb } function write _BUNDLESHS ( ba , wb , opts ) { write _record ( ba , "BrtBeginBundleShs" ) ; for ( var idx = 0 ; idx != wb . SheetNames . length ; ++ idx ) { var viz = wb . Workbook && wb . Workbook . Sheets && wb . Workbook . Sheets [ idx ] && wb . Workbook . Sheets [ idx ] . Hidden || 0 ; var d = { Hidden : viz , iTabID : idx + 1 , strRelID : "rId" + ( idx + 1 ) , name : wb . SheetNames [ idx ] } ; write _record ( ba , "BrtBundleSh" , write _BrtBundleSh ( d ) ) } write _record ( ba , "BrtEndBundleShs" ) } function write _BrtFileVersion ( data , o ) { if ( ! o ) o = new _buf ( 127 ) ; for ( var i = 0 ; i != 4 ; ++ i ) o . write _shift ( 4 , 0 ) ; write _XLWideString ( "SheetJS" , o ) ; write _XLWideString ( XLSX . version , o ) ; write _XLWideString ( XLSX . version , o ) ; write _XLWideString ( "7262" , o ) ; o . length = o . l ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BrtBookView ( idx , o ) { if ( ! o ) o = new _buf ( 29 ) ; o . write _shift ( - 4 , 0 ) ; o . write _shift ( - 4 , 460 ) ; o . write _shift ( 4 , 28800 ) ; o . write _shift ( 4 , 17600 ) ; o . write _shift ( 4 , 500 ) ; o . write _shift ( 4 , idx ) ; o . write _shift ( 4 , idx ) ; var flags = 120 ; o . write _shift ( 1 , flags ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _BOOKVIEWS ( ba , wb , opts ) { if ( ! wb . Workbook || ! wb . Workbook . Sheets ) return ; var sheets = wb . Workbook . Sheets ; var i = 0 , vistab = - 1 , hidden = - 1 ; for ( ; i < sheets . length ; ++ i ) { if ( ! sheets [ i ] || ! sheets [ i ] . Hidden && vistab == - 1 ) vistab = i ; else if ( sheets [ i ] . Hidden == 1 && hidden == - 1 ) hidden = i } if ( hidden > vistab ) return ; write _record ( ba , "BrtBeginBookViews" ) ; write _record ( ba , "BrtBookView" , write _BrtBookView ( vistab ) ) ; write _record ( ba , "BrtEndBookViews" ) } function write _BrtCalcProp ( data , o ) { if ( ! o ) o = new _buf ( 26 ) ; o . write _shift ( 4 , 0 ) ; o . write _shift ( 4 , 1 ) ; o . write _shift ( 4 , 0 ) ; write _Xnum ( 0 , o ) ; o . write _shift ( - 4 , 1023 ) ; o . write _shift ( 1 , 51 ) ; o . write _shift ( 1 , 0 ) ; return o } function write _BrtFileRecover ( data , o ) { if ( ! o ) o = new _buf ( 1 ) ; o . write _shift ( 1 , 0 ) ; return o } function write _wb _bin ( wb , opts ) { var ba = buf _array ( ) ; write _record ( ba , "BrtBeginBook" ) ; write _record ( ba , "BrtFileVersion" , write _BrtFileVersion ( ) ) ; write _record ( ba , "BrtWbProp" , write _BrtWbProp ( wb . Workbook && wb . Workbook . WBProps || null ) ) ; write _BOOKVIEWS ( ba , wb , opts ) ; write _BUNDLESHS ( ba , wb , opts ) ; write _record ( ba , "BrtEndBook" ) ; return ba . end ( ) } function parse _wb ( data , name , opts ) { if ( name . slice ( - 4 ) === ".bin" ) return parse _wb _bin ( data , opts ) ; return parse _wb _xml ( data , opts ) } function parse _ws ( data , name , opts , rels , wb , themes , styles ) { if ( name . slice ( - 4 ) === ".bin" ) return parse _ws _bin ( data , opts , rels , wb , themes , styles ) ; return parse _ws _xml ( data , opts , rels , wb , themes , styles ) } function parse _cs ( data , name , opts , rels , wb , themes , styles ) { if ( name . slice ( - 4 ) === ".bin" ) return parse _cs _bin ( data , opts , rels , wb , themes , styles ) ; return parse _cs _xml ( data , opts , rels , wb , themes , styles ) } function parse _ms ( data , name , opts , rels , wb , themes , styles ) { if ( name . slice ( - 4 ) === ".bin" ) return parse _ms _bin ( data , opts , rels , wb , themes , styles ) ; return parse _ms _xml ( data , opts , rels , wb , themes , styles ) } function parse _ds ( data , name , opts , rels , wb , themes , styles ) { if ( name . slice ( - 4 ) === ".bin" ) return parse _ds _bin ( data , opts , rels ,
v . Reserved1 = m ; if ( ( m = _ _readUInt32LE ( o , l ) ) !== 1907550708 ) return v ; throw new Error ( "Unsupported Unicode Extension" ) } function slurp ( R , blob , length , opts ) { var l = length ; var bufs = [ ] ; var d = blob . slice ( blob . l , blob . l + l ) ; if ( opts && opts . enc && opts . enc . insitu _decrypt ) switch ( R . n ) { case "BOF" : ; case "FilePass" : ; case "FileLock" : ; case "InterfaceHdr" : ; case "RRDInfo" : ; case "RRDHead" : ; case "UsrExcl" : break ; default : if ( d . length === 0 ) break ; opts . enc . insitu _decrypt ( d ) ; } bufs . push ( d ) ; blob . l += l ; var next = XLSRecordEnum [ _ _readUInt16LE ( blob , blob . l ) ] ; while ( next != null && next . n === "Continue" ) { l = _ _readUInt16LE ( blob , blob . l + 2 ) ; bufs . push ( blob . slice ( blob . l + 4 , blob . l + 4 + l ) ) ; blob . l += 4 + l ; next = XLSRecordEnum [ _ _readUInt16LE ( blob , blob . l ) ] } var b = bconcat ( bufs ) ; prep _blob ( b , 0 ) ; var ll = 0 ; b . lens = [ ] ; for ( var j = 0 ; j < bufs . length ; ++ j ) { b . lens . push ( ll ) ; ll += bufs [ j ] . length } return R . f ( b , b . length , opts ) } function safe _format _xf ( p , opts , date1904 ) { if ( p . t === "z" ) return ; if ( ! p . XF ) return ; var fmtid = 0 ; try { fmtid = p . z || p . XF . ifmt || 0 ; if ( opts . cellNF ) p . z = SSF . _table [ fmtid ] } catch ( e ) { if ( opts . WTF ) throw e } if ( ! opts || opts . cellText !== false ) try { if ( p . t === "e" ) { p . w = p . w || BErr [ p . v ] } else if ( fmtid === 0 ) { if ( p . t === "n" ) { if ( ( p . v | 0 ) === p . v ) p . w = SSF . _general _int ( p . v ) ; else p . w = SSF . _general _num ( p . v ) } else p . w = SSF . _general ( p . v ) } else p . w = SSF . format ( fmtid , p . v , { date1904 : ! ! date1904 } ) ; if ( opts . cellDates && fmtid && p . t == "n" && SSF . is _date ( SSF . _table [ fmtid ] ) ) { var _d = SSF . parse _date _code ( p . v ) ; if ( _d ) { p . t = "d" ; p . v = new Date ( _d . y , _d . m - 1 , _d . d , _d . H , _d . M , _d . S , _d . u ) } } } catch ( e ) { if ( opts . WTF ) throw e } } function make _cell ( val , ixfe , t ) { return { v : val , ixfe : ixfe , t : t } } function parse _workbook ( blob , options ) { var wb = { opts : { } } ; var Sheets = { } ; if ( DENSE != null && options . dense == null ) options . dense = DENSE ; var out = options . dense ? [ ] : { } ; var Directory = { } ; var found _sheet = false ; var range = { } ; var last _formula = null ; var sst = [ ] ; var cur _sheet = "" ; var Preamble = { } ; var lastcell , last _cell = "" , cc , cmnt , rng , rngC , rngR ; var shared _formulae = { } ; var array _formulae = [ ] ; var temp _val ; var country ; var cell _valid = true ; var XFs = [ ] ; var palette = [ ] ; var Workbook = { Sheets : [ ] , WBProps : { date1904 : false } } , wsprops = { } ; var get _rgb = function getrgb ( icv ) { if ( icv < 8 ) return XLSIcv [ icv ] ; if ( icv < 64 ) return palette [ icv - 8 ] || XLSIcv [ icv ] ; return XLSIcv [ icv ] } ; var process _cell _style = function pcs ( cell , line , options ) { var xfd = line . XF . data ; if ( ! xfd || ! xfd . patternType || ! options || ! options . cellStyles ) return ; line . s = { } ; line . s . patternType = xfd . patternType ; var t ; if ( t = rgb2Hex ( get _rgb ( xfd . icvFore ) ) ) { line . s . fgColor = { rgb : t } } if ( t = rgb2Hex ( get _rgb ( xfd . icvBack ) ) ) { line . s . bgColor = { rgb : t } } } ; var addcell = function addcell ( cell , line , options ) { if ( file _depth > 1 ) return ; if ( ! cell _valid ) return ; if ( options . cellStyles && line . XF && line . XF . data ) process _cell _style ( cell , line , options ) ; lastcell = cell ; last _cell = encode _cell ( cell ) ; if ( range . s ) { if ( cell . r < range . s . r ) range . s . r = cell . r ; if ( cell . c < range . s . c ) range . s . c = cell . c } if ( range . e ) { if ( cell . r + 1 > range . e . r ) range . e . r = cell . r + 1 ; if ( cell . c + 1 > range . e . c ) range . e . c = cell . c + 1 } if ( options . cellFormula && line . f ) { for ( var afi = 0 ; afi < array _formulae . length ; ++ afi ) { if ( array _formulae [ afi ] [ 0 ] . s . c > cell . c ) continue ; if ( array _formulae [ afi ] [ 0 ] . s . r > cell . r ) continue ; if ( array _formulae [ afi ] [ 0 ] . e . c < cell . c ) continue ; if ( array _formulae [ afi ] [ 0 ] . e . r < cell . r ) continue ; line . F = encode _range ( array _formulae [ afi ] [ 0 ] ) ; if ( array _formulae [ afi ] [ 0 ] . s . c != cell . c ) delete line . f ; if ( array _formulae [ afi ] [ 0 ] . s . r != cell . r ) delete line . f ; if ( line . f ) line . f = "" + stringify _formula ( array _formulae [ afi ] [ 1 ] , range , cell , supbooks , opts ) ; break } } if ( options . sheetRows && lastcell . r >= options . sheetRows ) cell _valid = false ; else { if ( options . dense ) { if ( ! out [ cell . r ] ) out [ cell . r ] = [ ] ; out [ cell . r ] [ cell . c ] = line } else out [ last _cell ] = line } } ; var opts = { enc : false , sbcch : 0 , snames : [ ] , sharedf : shared _formulae , arrayf : array _formulae , rrtabid : [ ] , lastuser : "" , biff : 8 , codepage : 0 , winlocked : 0 , cellStyles : ! ! options && ! ! options . cellStyles , WTF : ! ! options && ! ! options . wtf } ; if ( options . password ) opts . password = options . password ; var mergecells = [ ] ; var objects = [ ] ; var colinfo = [ ] , rowinfo = [ ] ; var defwidth = 0 , defheight = 0 ; var seencol = false ; var supbooks = [ ] ; supbooks . SheetNames = opts . snames ; supbooks . sharedf = opts . sharedf ; supbooks . arrayf = opts . arrayf ; supbooks . names = [ ] ; supbooks . XTI = [ ] ; var last _Rn = "" ; var file _depth = 0 ; var BIFF2Fmt = 0 ; var BIF
f : parsenoop } , 362 : { n : "BrtExternSheet" , f : parsenoop } , 363 : { n : "BrtExternTableStart" , f : parsenoop } , 364 : { n : "BrtExternTableEnd" , f : parsenoop } , 366 : { n : "BrtExternRowHdr" , f : parsenoop } , 367 : { n : "BrtExternCellBlank" , f : parsenoop } , 368 : { n : "BrtExternCellReal" , f : parsenoop } , 369 : { n : "BrtExternCellBool" , f : parsenoop } , 370 : { n : "BrtExternCellError" , f : parsenoop } , 371 : { n : "BrtExternCellString" , f : parsenoop } , 372 : { n : "BrtBeginEsmdx" , f : parsenoop } , 373 : { n : "BrtEndEsmdx" , f : parsenoop } , 374 : { n : "BrtBeginMdxSet" , f : parsenoop } , 375 : { n : "BrtEndMdxSet" , f : parsenoop } , 376 : { n : "BrtBeginMdxMbrProp" , f : parsenoop } , 377 : { n : "BrtEndMdxMbrProp" , f : parsenoop } , 378 : { n : "BrtBeginMdxKPI" , f : parsenoop } , 379 : { n : "BrtEndMdxKPI" , f : parsenoop } , 380 : { n : "BrtBeginEsstr" , f : parsenoop } , 381 : { n : "BrtEndEsstr" , f : parsenoop } , 382 : { n : "BrtBeginPRFItem" , f : parsenoop } , 383 : { n : "BrtEndPRFItem" , f : parsenoop } , 384 : { n : "BrtBeginPivotCacheIDs" , f : parsenoop } , 385 : { n : "BrtEndPivotCacheIDs" , f : parsenoop } , 386 : { n : "BrtBeginPivotCacheID" , f : parsenoop } , 387 : { n : "BrtEndPivotCacheID" , f : parsenoop } , 388 : { n : "BrtBeginISXVIs" , f : parsenoop } , 389 : { n : "BrtEndISXVIs" , f : parsenoop } , 390 : { n : "BrtBeginColInfos" , f : parsenoop } , 391 : { n : "BrtEndColInfos" , f : parsenoop } , 392 : { n : "BrtBeginRwBrk" , f : parsenoop } , 393 : { n : "BrtEndRwBrk" , f : parsenoop } , 394 : { n : "BrtBeginColBrk" , f : parsenoop } , 395 : { n : "BrtEndColBrk" , f : parsenoop } , 396 : { n : "BrtBrk" , f : parsenoop } , 397 : { n : "BrtUserBookView" , f : parsenoop } , 398 : { n : "BrtInfo" , f : parsenoop } , 399 : { n : "BrtCUsr" , f : parsenoop } , 400 : { n : "BrtUsr" , f : parsenoop } , 401 : { n : "BrtBeginUsers" , f : parsenoop } , 403 : { n : "BrtEOF" , f : parsenoop } , 404 : { n : "BrtUCR" , f : parsenoop } , 405 : { n : "BrtRRInsDel" , f : parsenoop } , 406 : { n : "BrtRREndInsDel" , f : parsenoop } , 407 : { n : "BrtRRMove" , f : parsenoop } , 408 : { n : "BrtRREndMove" , f : parsenoop } , 409 : { n : "BrtRRChgCell" , f : parsenoop } , 410 : { n : "BrtRREndChgCell" , f : parsenoop } , 411 : { n : "BrtRRHeader" , f : parsenoop } , 412 : { n : "BrtRRUserView" , f : parsenoop } , 413 : { n : "BrtRRRenSheet" , f : parsenoop } , 414 : { n : "BrtRRInsertSh" , f : parsenoop } , 415 : { n : "BrtRRDefName" , f : parsenoop } , 416 : { n : "BrtRRNote" , f : parsenoop } , 417 : { n : "BrtRRConflict" , f : parsenoop } , 418 : { n : "BrtRRTQSIF" , f : parsenoop } , 419 : { n : "BrtRRFormat" , f : parsenoop } , 420 : { n : "BrtRREndFormat" , f : parsenoop } , 421 : { n : "BrtRRAutoFmt" , f : parsenoop } , 422 : { n : "BrtBeginUserShViews" , f : parsenoop } , 423 : { n : "BrtBeginUserShView" , f : parsenoop } , 424 : { n : "BrtEndUserShView" , f : parsenoop } , 425 : { n : "BrtEndUserShViews" , f : parsenoop } , 426 : { n : "BrtArrFmla" , f : parse _BrtArrFmla } , 427 : { n : "BrtShrFmla" , f : parse _BrtShrFmla } , 428 : { n : "BrtTable" , f : parsenoop } , 429 : { n : "BrtBeginExtConnections" , f : parsenoop } , 430 : { n : "BrtEndExtConnections" , f : parsenoop } , 431 : { n : "BrtBeginPCDCalcMems" , f : parsenoop } , 432 : { n : "BrtEndPCDCalcMems" , f : parsenoop } , 433 : { n : "BrtBeginPCDCalcMem" , f : parsenoop } , 434 : { n : "BrtEndPCDCalcMem" , f : parsenoop } , 435 : { n : "BrtBeginPCDHGLevels" , f : parsenoop } , 436 : { n : "BrtEndPCDHGLevels" , f : parsenoop } , 437 : { n : "BrtBeginPCDHGLevel" , f : parsenoop } , 438 : { n : "BrtEndPCDHGLevel" , f : parsenoop } , 439 : { n : "BrtBeginPCDHGLGroups" , f : parsenoop } , 440 : { n : "BrtEndPCDHGLGroups" , f : parsenoop } , 441 : { n : "BrtBeginPCDHGLGroup" , f : parsenoop } , 442 : { n : "BrtEndPCDHGLGroup" , f : parsenoop } , 443 : { n : "BrtBeginPCDHGLGMembers" , f : parsenoop } , 444 : { n : "BrtEndPCDHGLGMembers" , f : parsenoop } , 445 : { n : "BrtBeginPCDHGLGMember" , f : parsenoop } , 446 : { n : "BrtEndPCDHGLGMember" , f : parsenoop } , 447 : { n : "BrtBeginQSI" , f : parsenoop } , 448 : { n : "BrtEndQSI" , f : parsenoop } , 449 : { n : "BrtBeginQSIR" , f : parsenoop } , 450 : { n : "BrtEndQSIR" , f : parsenoop } , 451 : { n : "BrtBeginDeletedNames" , f : parsenoop } , 452 : { n : "BrtEndDeletedNames" , f : parsenoop } , 453 : { n : "BrtBeginDeletedName" , f : parsenoop } , 454 : { n : "BrtEndDeletedName" , f : parsenoop } , 455 : { n : "BrtBeginQSIFs" , f : parsenoop } , 456 : { n : "BrtEndQSIFs" , f : parsenoop } , 457 : { n : "BrtBeginQSIF" , f : parsenoop } , 458 : { n : "BrtEndQSIF" , f : parsenoop } , 459 : { n : "BrtBeginAutoSortScope" , f : parsenoop } , 460 : { n : "BrtEndAutoSortScope" , f : parsenoop } , 461 : { n : "BrtBeginConditionalFormatting" , f : parsenoop } , 462 : { n : "BrtEndConditionalFormatting" , f : parsenoop } , 463 : { n : "BrtBeginCFRule" , f : parsenoop } , 464 : { n : "BrtEndCFRule" , f : parsenoop } , 465 : { n : "BrtBeginIconSet" , f : parsenoop } , 466 : { n : "BrtEndIconSet" , f : parsenoop } , 467 : { n : "BrtBeginDatabar" , f : parsenoop } , 468 : { n : "BrtEndDatabar" , f : parsenoop } , 469 : { n : "BrtBeginColorScale" , f : parsenoop } , 470 : { n : "BrtEndColorScale" , f : parsenoop } , 471 : { n : "BrtCFVO" , f : parsenoo
n : "MarkerFormat" , f : parse _MarkerFormat } , 4106 : { n : "AreaFormat" , f : parse _AreaFormat } , 4107 : { n : "PieFormat" , f : parse _PieFormat } , 4108 : { n : "AttachedLabel" , f : parse _AttachedLabel } , 4109 : { n : "SeriesText" , f : parse _SeriesText } , 4116 : { n : "ChartFormat" , f : parse _ChartFormat } , 4117 : { n : "Legend" , f : parse _Legend } , 4118 : { n : "SeriesList" , f : parse _SeriesList } , 4119 : { n : "Bar" , f : parse _Bar } , 4120 : { n : "Line" , f : parse _Line } , 4121 : { n : "Pie" , f : parse _Pie } , 4122 : { n : "Area" , f : parse _Area } , 4123 : { n : "Scatter" , f : parse _Scatter } , 4124 : { n : "CrtLine" , f : parse _CrtLine } , 4125 : { n : "Axis" , f : parse _Axis } , 4126 : { n : "Tick" , f : parse _Tick } , 4127 : { n : "ValueRange" , f : parse _ValueRange } , 4128 : { n : "CatSerRange" , f : parse _CatSerRange } , 4129 : { n : "AxisLine" , f : parse _AxisLine } , 4130 : { n : "CrtLink" , f : parse _CrtLink } , 4132 : { n : "DefaultText" , f : parse _DefaultText } , 4133 : { n : "Text" , f : parse _Text } , 4134 : { n : "FontX" , f : parse _FontX } , 4135 : { n : "ObjectLink" , f : parse _ObjectLink } , 4146 : { n : "Frame" , f : parse _Frame } , 4147 : { n : "Begin" , f : parse _Begin } , 4148 : { n : "End" , f : parse _End } , 4149 : { n : "PlotArea" , f : parse _PlotArea } , 4154 : { n : "Chart3d" , f : parse _Chart3d } , 4156 : { n : "PicF" , f : parse _PicF } , 4157 : { n : "DropBar" , f : parse _DropBar } , 4158 : { n : "Radar" , f : parse _Radar } , 4159 : { n : "Surf" , f : parse _Surf } , 4160 : { n : "RadarArea" , f : parse _RadarArea } , 4161 : { n : "AxisParent" , f : parse _AxisParent } , 4163 : { n : "LegendException" , f : parse _LegendException } , 4164 : { n : "ShtProps" , f : parse _ShtProps } , 4165 : { n : "SerToCrt" , f : parse _SerToCrt } , 4166 : { n : "AxesUsed" , f : parse _AxesUsed } , 4168 : { n : "SBaseRef" , f : parse _SBaseRef } , 4170 : { n : "SerParent" , f : parse _SerParent } , 4171 : { n : "SerAuxTrend" , f : parse _SerAuxTrend } , 4174 : { n : "IFmtRecord" , f : parse _IFmtRecord } , 4175 : { n : "Pos" , f : parse _Pos } , 4176 : { n : "AlRuns" , f : parse _AlRuns } , 4177 : { n : "BRAI" , f : parse _BRAI } , 4187 : { n : "SerAuxErrBar" , f : parse _SerAuxErrBar } , 4188 : { n : "ClrtClient" , f : parse _ClrtClient } , 4189 : { n : "SerFmt" , f : parse _SerFmt } , 4191 : { n : "Chart3DBarShape" , f : parse _Chart3DBarShape } , 4192 : { n : "Fbi" , f : parse _Fbi } , 4193 : { n : "BopPop" , f : parse _BopPop } , 4194 : { n : "AxcExt" , f : parse _AxcExt } , 4195 : { n : "Dat" , f : parse _Dat } , 4196 : { n : "PlotGrowth" , f : parse _PlotGrowth } , 4197 : { n : "SIIndex" , f : parse _SIIndex } , 4198 : { n : "GelFrame" , f : parse _GelFrame } , 4199 : { n : "BopPopCustom" , f : parse _BopPopCustom } , 4200 : { n : "Fbi2" , f : parse _Fbi2 } , 0 : { n : "Dimensions" , f : parse _Dimensions } , 2 : { n : "BIFF2INT" , f : parse _BIFF2INT } , 5 : { n : "BoolErr" , f : parse _BoolErr } , 7 : { n : "String" , f : parse _BIFF2STRING } , 8 : { n : "BIFF2ROW" , f : parsenoop } , 11 : { n : "Index" , f : parse _Index } , 22 : { n : "ExternCount" , f : parsenoop } , 30 : { n : "BIFF2FORMAT" , f : parse _BIFF2Format } , 31 : { n : "BIFF2FMTCNT" , f : parsenoop } , 32 : { n : "BIFF2COLINFO" , f : parsenoop } , 33 : { n : "Array" , f : parse _Array } , 37 : { n : "DefaultRowHeight" , f : parse _DefaultRowHeight } , 50 : { n : "BIFF2FONTXTRA" , f : parse _BIFF2FONTXTRA } , 62 : { n : "BIFF2WINDOW2" , f : parsenoop } , 69 : { n : "BIFF2FONTCLR" , f : parsenoop } , 86 : { n : "BIFF4FMTCNT" , f : parsenoop } , 126 : { n : "RK" , f : parsenoop } , 127 : { n : "ImData" , f : parse _ImData } , 135 : { n : "Addin" , f : parsenoop } , 136 : { n : "Edg" , f : parsenoop } , 137 : { n : "Pub" , f : parsenoop } , 145 : { n : "Sub" , f : parsenoop } , 148 : { n : "LHRecord" , f : parsenoop } , 149 : { n : "LHNGraph" , f : parsenoop } , 150 : { n : "Sound" , f : parsenoop } , 169 : { n : "CoordList" , f : parsenoop } , 171 : { n : "GCW" , f : parsenoop } , 188 : { n : "ShrFmla" , f : parsenoop } , 194 : { n : "AddMenu" , f : parsenoop } , 195 : { n : "DelMenu" , f : parsenoop } , 214 : { n : "RString" , f : parse _RString } , 223 : { n : "UDDesc" , f : parsenoop } , 234 : { n : "TabIdConf" , f : parsenoop } , 354 : { n : "XL5Modify" , f : parsenoop } , 421 : { n : "FileSharing2" , f : parsenoop } , 521 : { n : "BOF" , f : parse _BOF } , 536 : { n : "Lbl" , f : parse _Lbl } , 547 : { n : "ExternName" , f : parse _ExternName } , 561 : { n : "Font" , f : parsenoop } , 1033 : { n : "BOF" , f : parse _BOF } , 2157 : { n : "FeatInfo" , f : parsenoop } , 2163 : { n : "FeatInfo11" , f : parsenoop } , 2177 : { n : "SXAddl12" , f : parsenoop } , 2240 : { n : "AutoWebPub" , f : parsenoop } , 2241 : { n : "ListObj" , f : parsenoop } , 2242 : { n : "ListField" , f : parsenoop } , 2243 : { n : "ListDV" , f : parsenoop } , 2244 : { n : "ListCondFmt" , f : parsenoop } , 2245 : { n : "ListCF" , f : parsenoop } , 2246 : { n : "FMQry" , f : parsenoop } , 2247 : { n : "FMSQry" , f : parsenoop } , 2248 : { n : "PLV" , f : parsenoop } , 2249 : { n : "LnExt" , f : parsenoop } , 2250 : { n : "MkrExt" , f : parsenoop } , 2251 : { n : "CrtCoopt" , f : parsenoop } , 67 : { n : "BIFF2XF" , f : parsenoop } , 579 : { n : "BIFF3XF" , f : parsenoop } , 1091 : { n : "BIFF4XF" , f : parsenoop } , 29282 : { } } ; function write _biff _rec ( ba , t , payload , length ) { var len = length || ( payload || [ ] ) . length ; var o = ba . next ( 4 + len ) ; o . write _shift ( 2 , t ) ; o . write _shift ( 2
if ( propdata ) parse _ext _props ( propdata , props ) } } var custprops = { } ; if ( ! opts . bookSheets || opts . bookProps ) { if ( dir . custprops . length !== 0 ) { propdata = getzipstr ( zip , dir . custprops [ 0 ] . replace ( /^\// , "" ) , true ) ; if ( propdata ) custprops = parse _cust _props ( propdata , opts ) } } var out = { } ; if ( opts . bookSheets || opts . bookProps ) { if ( wb . Sheets ) sheets = wb . Sheets . map ( function pluck ( x ) { return x . name } ) ; else if ( props . Worksheets && props . SheetNames . length > 0 ) sheets = props . SheetNames ; if ( opts . bookProps ) { out . Props = props ; out . Custprops = custprops } if ( opts . bookSheets && typeof sheets !== "undefined" ) out . SheetNames = sheets ; if ( opts . bookSheets ? out . SheetNames : opts . bookProps ) return out } sheets = { } ; var deps = { } ; if ( opts . bookDeps && dir . calcchain ) deps = parse _cc ( getzipdata ( zip , dir . calcchain . replace ( /^\// , "" ) ) , dir . calcchain , opts ) ; var i = 0 ; var sheetRels = { } ; var path , relsPath ; { var wbsheets = wb . Sheets ; props . Worksheets = wbsheets . length ; props . SheetNames = [ ] ; for ( var j = 0 ; j != wbsheets . length ; ++ j ) { props . SheetNames [ j ] = wbsheets [ j ] . name } } var wbext = xlsb ? "bin" : "xml" ; var wbrelsfile = "xl/_rels/workbook." + wbext + ".rels" ; var wbrels = parse _rels ( getzipstr ( zip , wbrelsfile , true ) , wbrelsfile ) ; if ( wbrels ) wbrels = safe _parse _wbrels ( wbrels , wb . Sheets ) ; var nmode = getzipdata ( zip , "xl/worksheets/sheet.xml" , true ) ? 1 : 0 ; for ( i = 0 ; i != props . Worksheets ; ++ i ) { var stype = "sheet" ; if ( wbrels && wbrels [ i ] ) { path = "xl/" + wbrels [ i ] [ 1 ] . replace ( /[\/]?xl\// , "" ) ; stype = wbrels [ i ] [ 2 ] } else { path = "xl/worksheets/sheet" + ( i + 1 - nmode ) + "." + wbext ; path = path . replace ( /sheet0\./ , "sheet." ) } relsPath = path . replace ( /^(.*)(\/)([^\/]*)$/ , "$1/_rels/$3.rels" ) ; safe _parse _sheet ( zip , path , relsPath , props . SheetNames [ i ] , sheetRels , sheets , stype , opts , wb , themes , styles ) } if ( dir . comments ) parse _comments ( zip , dir . comments , sheets , sheetRels , opts ) ; out = { Directory : dir , Workbook : wb , Props : props , Custprops : custprops , Deps : deps , Sheets : sheets , SheetNames : props . SheetNames , Strings : strs , Styles : styles , Themes : themes , SSF : SSF . get _table ( ) } ; if ( opts . bookFiles ) { out . keys = entries ; out . files = zip . files } if ( opts . bookVBA ) { if ( dir . vba . length > 0 ) out . vbaraw = getzipdata ( zip , dir . vba [ 0 ] . replace ( /^\// , "" ) , true ) ; else if ( dir . defaults && dir . defaults . bin === "application/vnd.ms-office.vbaProject" ) out . vbaraw = getzipdata ( zip , "xl/vbaProject.bin" , true ) } return out } function parse _xlsxcfb ( cfb , opts ) { var f = "Version" ; var data = cfb . find ( f ) ; if ( ! data ) throw new Error ( "ECMA-376 Encrypted file missing " + f ) ; var version = parse _DataSpaceVersionInfo ( data . content ) ; f = "DataSpaceMap" ; data = cfb . find ( f ) ; if ( ! data ) throw new Error ( "ECMA-376 Encrypted file missing " + f ) ; var dsm = parse _DataSpaceMap ( data . content ) ; if ( dsm . length != 1 || dsm [ 0 ] . comps . length != 1 || dsm [ 0 ] . comps [ 0 ] . t != 0 || dsm [ 0 ] . name != "StrongEncryptionDataSpace" || dsm [ 0 ] . comps [ 0 ] . v != "EncryptedPackage" ) throw new Error ( "ECMA-376 Encrypted file bad " + f ) ; f = "StrongEncryptionDataSpace" ; data = cfb . find ( f ) ; if ( ! data ) throw new Error ( "ECMA-376 Encrypted file missing " + f ) ; var seds = parse _DataSpaceDefinition ( data . content ) ; if ( seds . length != 1 || seds [ 0 ] != "StrongEncryptionTransform" ) throw new Error ( "ECMA-376 Encrypted file bad " + f ) ; f = "!Primary" ; data = cfb . find ( f ) ; if ( ! data ) throw new Error ( "ECMA-376 Encrypted file missing " + f ) ; var hdr = parse _Primary ( data . content ) ; f = "EncryptionInfo" ; data = cfb . find ( f ) ; if ( ! data ) throw new Error ( "ECMA-376 Encrypted file missing " + f ) ; var einfo = parse _EncryptionInfo ( data . content ) ; throw new Error ( "File is password-protected" ) } function write _zip ( wb , opts ) { _shapeid = 1024 ; if ( opts . bookType == "ods" ) return write _ods ( wb , opts ) ; if ( wb && ! wb . SSF ) { wb . SSF = SSF . get _table ( ) } if ( wb && wb . SSF ) { make _ssf ( SSF ) ; SSF . load _table ( wb . SSF ) ; opts . revssf = evert _num ( wb . SSF ) ; opts . revssf [ wb . SSF [ 65535 ] ] = 0 ; opts . ssf = wb . SSF } opts . rels = { } ; opts . wbrels = { } ; opts . Strings = [ ] ; opts . Strings . Count = 0 ; opts . Strings . Unique = 0 ; var wbext = opts . bookType == "xlsb" ? "bin" : "xml" ; var vbafmt = opts . bookType == "xlsb" || opts . bookType == "xlsm" ; var ct = { workbooks : [ ] , sheets : [ ] , charts : [ ] , dialogs : [ ] , macros : [ ] , rels : [ ] , strs : [ ] , comments : [ ] , coreprops : [ ] , extprops : [ ] , custprops : [ ] , themes : [ ] , styles : [ ] , calcchains : [ ] , vba : [ ] , drawings : [ ] , TODO : [ ] , xmlns : "" } ; fix _write _opts ( opts = opts || { } ) ; var zip = new jszip ; var f = "" , rId = 0 ; opts . cellXfs = [ ] ; get _cell _style ( opts . cellXfs , { } , { revssf : { General : 0 } } ) ; if ( ! wb . Props ) wb . Props = { } ; f = "docProps/core.xml" ; zip . file ( f , writ