diff --git a/gulpfile.js b/gulpfile.js index 65f9f33..191c927 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -32,7 +32,7 @@ gulp.task('css', function(){ }); gulp.task("audio", function () { - gulp.src(["src/js/audio/aurora.js", "src/js/audio/mp3.js"]) + gulp.src(["src/js/audio/aurora.js", "src/js/audio/mpg123.js"]) .pipe(concat("audio-min.js")) .pipe(uglify()) .pipe(gulp.dest("lib")); diff --git a/lib/workers/audio-worker.js b/lib/workers/audio-worker.js index ac5414a..d6a66b9 100644 --- a/lib/workers/audio-worker.js +++ b/lib/workers/audio-worker.js @@ -1,28 +1,15 @@ var window = self; importScripts('../audio-min.js'); -// Flash value -var LAME_DELAY_START = 2258; -var LAME_DELAY_END = 0; - -var deinterleaveAndTrim = function(buffer, asset) { +var deinterleave = function(buffer, asset) { var channels = asset.format.channelsPerFrame, - len = buffer.length / channels, - newLen, start; - - // because MP3 is bad, we nuke silence - if(asset.format.formatID == "mp3") { - newLen = len - LAME_DELAY_START - LAME_DELAY_END; - start = LAME_DELAY_START; - } else { - newLen = len; - start = 0; - } - var result = new Float32Array(newLen * channels); - - for(var sample = 0; sample < newLen; sample++) { + len = buffer.length / channels; + + var result = new Float32Array(len * channels); + + for(var sample = 0; sample < len; sample++) { for(var channel = 0; channel < channels; channel++) { - result[channel*newLen + sample] = buffer[(sample+start)*channels + channel]; + result[channel*len + sample] = buffer[(sample)*channels + channel]; } } return result; @@ -51,7 +38,7 @@ self.addEventListener('message', function(e) { }); asset.decodeToBuffer(function(buffer) { - var fixedBuffer = deinterleaveAndTrim(buffer, asset); + var fixedBuffer = deinterleave(buffer, asset); var raw = {array: fixedBuffer, sampleRate: asset.format.sampleRate, channels: asset.format.channelsPerFrame} diff --git a/src/js/audio/mp3.js b/src/js/audio/mp3.js deleted file mode 100644 index 2c8f2dd..0000000 --- a/src/js/audio/mp3.js +++ /dev/null @@ -1,7700 +0,0 @@ -(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 0) { - timestamp = this._super(timestamp); - offset = this.stream.offset; - } else { - offset = timestamp * this.format.bitrate / 8 / this.format.sampleRate; - } - - this.mp3_stream.reset(offset); - - // try to find 3 consecutive valid frame headers in a row - for (var i = 0; i < 4096; i++) { - var pos = offset + i; - for (var j = 0; j < 3; j++) { - this.mp3_stream.reset(pos); - - try { - var header = MP3FrameHeader.decode(this.mp3_stream); - } catch (e) { - break; - } - - // skip the rest of the frame - var size = header.framesize(); - if (size == null) - break; - - pos += size; - } - - // check if we're done - if (j === 3) - break; - } - - // if we didn't find 3 frames, just try the first one and hope for the best - if (j !== 3) - i = 0; - - this.mp3_stream.reset(offset + i); - - // if we guesstimated, update the timestamp to another estimate of where we actually seeked to - if (this.demuxer.seekPoints.length === 0) - timestamp = this.stream.offset / (this.format.bitrate / 8) * this.format.sampleRate; - - this.seeking = true; - return timestamp; - }; -}); - -module.exports = MP3Decoder; - -},{"./frame":4,"./header":5,"./layer1":9,"./layer2":10,"./layer3":11,"./stream":12,"./synth":13}],3:[function(require,module,exports){ -var ID3v23Stream = require('./id3').ID3v23Stream; -var ID3v22Stream = require('./id3').ID3v22Stream; -var MP3FrameHeader = require('./header'); -var MP3Stream = require('./stream'); - -var MP3Demuxer = AV.Demuxer.extend(function() { - AV.Demuxer.register(this); - - this.probe = function(stream) { - var off = stream.offset; - - // skip id3 metadata if it exists - var id3header = MP3Demuxer.getID3v2Header(stream); - if (id3header) - stream.advance(10 + id3header.length); - - // attempt to read the header of the first audio frame - var s = new MP3Stream(new AV.Bitstream(stream)); - var header = null; - - try { - header = MP3FrameHeader.decode(s); - } catch (e) {}; - - // go back to the beginning, for other probes - stream.seek(off); - - return !!header; - }; - - this.getID3v2Header = function(stream) { - if (stream.peekString(0, 3) == 'ID3') { - stream = AV.Stream.fromBuffer(stream.peekBuffer(0, 10)); - stream.advance(3); // 'ID3' - - var major = stream.readUInt8(); - var minor = stream.readUInt8(); - var flags = stream.readUInt8(); - var bytes = stream.readBuffer(4).data; - var length = (bytes[0] << 21) | (bytes[1] << 14) | (bytes[2] << 7) | bytes[3]; - - return { - version: '2.' + major + '.' + minor, - major: major, - minor: minor, - flags: flags, - length: length - }; - } - - return null; - }; - - const XING_OFFSETS = [[32, 17], [17, 9]]; - this.prototype.parseDuration = function(header) { - var stream = this.stream; - var frames; - - var offset = stream.offset; - if (!header || header.layer !== 3) - return false; - - // Check for Xing/Info tag - stream.advance(XING_OFFSETS[header.flags & MP3FrameHeader.FLAGS.LSF_EXT ? 1 : 0][header.nchannels() === 1 ? 1 : 0]); - var tag = stream.readString(4); - if (tag === 'Xing' || tag === 'Info') { - var flags = stream.readUInt32(); - if (flags & 1) - frames = stream.readUInt32(); - - if (flags & 2) - var size = stream.readUInt32(); - - if (flags & 4 && frames && size) { - for (var i = 0; i < 100; i++) { - var b = stream.readUInt8(); - var pos = b / 256 * size | 0; - var time = i / 100 * (frames * header.nbsamples() * 32) | 0; - this.addSeekPoint(pos, time); - } - } - - if (flags & 8) - stream.advance(4); - - } else { - // Check for VBRI tag (always 32 bytes after end of mpegaudio header) - stream.seek(offset + 4 + 32); - tag = stream.readString(4); - if (tag == 'VBRI' && stream.readUInt16() === 1) { // Check tag version - stream.advance(4); // skip delay and quality - stream.advance(4); // skip size - frames = stream.readUInt32(); - - var entries = stream.readUInt16(); - var scale = stream.readUInt16(); - var bytesPerEntry = stream.readUInt16(); - var framesPerEntry = stream.readUInt16(); - var fn = 'readUInt' + (bytesPerEntry * 8); - - var pos = 0; - for (var i = 0; i < entries; i++) { - this.addSeekPoint(pos, framesPerEntry * i); - pos += stream[fn](); - } - } - } - - if (!frames) - return false; - - this.emit('duration', (frames * header.nbsamples() * 32) / header.samplerate * 1000 | 0); - return true; - }; - - this.prototype.readChunk = function() { - var stream = this.stream; - - if (!this.sentInfo) { - // read id3 metadata if it exists - var id3header = MP3Demuxer.getID3v2Header(stream); - if (id3header) { - stream.advance(10); - - if (id3header.major > 2) { - var id3 = new ID3v23Stream(id3header, stream); - } else { - var id3 = new ID3v22Stream(id3header, stream); - } - - this.emit('metadata', id3.read()); - } - - // read the header of the first audio frame - var off = stream.offset; - var s = new MP3Stream(new AV.Bitstream(stream)); - - var header = MP3FrameHeader.decode(s); - if (!header) - return this.emit('error', 'Could not find first frame.'); - - this.emit('format', { - formatID: 'mp3', - sampleRate: header.samplerate, - channelsPerFrame: header.nchannels(), - bitrate: header.bitrate, - floatingPoint: true - }); - - var sentDuration = this.parseDuration(header); - stream.advance(off - stream.offset); - - // if there were no Xing/VBRI tags, guesstimate the duration based on data size and bitrate - this.dataSize = 0; - if (!sentDuration) { - this.on('end', function() { - this.emit('duration', this.dataSize * 8 / header.bitrate * 1000 | 0); - }); - } - - this.sentInfo = true; - } - - while (stream.available(1)) { - var buffer = stream.readSingleBuffer(stream.remainingBytes()); - this.dataSize += buffer.length; - this.emit('data', buffer); - } - }; -}); - -module.exports = MP3Demuxer; - -},{"./header":5,"./id3":7,"./stream":12}],4:[function(require,module,exports){ -var MP3FrameHeader = require('./header'); -var utils = require('./utils'); - -function MP3Frame() { - this.header = null; // MPEG audio header - this.options = 0; // decoding options (from stream) - this.sbsample = utils.makeArray([2, 36, 32]); // synthesis subband filter samples - this.overlap = utils.makeArray([2, 32, 18]); // Layer III block overlap data - this.decoders = []; -} - -// included layer decoders are registered here -MP3Frame.layers = []; - -MP3Frame.prototype.decode = function(stream) { - if (!this.header || !(this.header.flags & MP3FrameHeader.FLAGS.INCOMPLETE)) - this.header = MP3FrameHeader.decode(stream); - - this.header.flags &= ~MP3FrameHeader.FLAGS.INCOMPLETE; - - // make an instance of the decoder for this layer if needed - var decoder = this.decoders[this.header.layer - 1]; - if (!decoder) { - var Layer = MP3Frame.layers[this.header.layer]; - if (!Layer) - throw new Error("Layer " + this.header.layer + " is not supported."); - - decoder = this.decoders[this.header.layer - 1] = new Layer(); - } - - decoder.decode(stream, this); -}; - -module.exports = MP3Frame; - -},{"./header":5,"./utils":15}],5:[function(require,module,exports){ - -function MP3FrameHeader() { - this.layer = 0; // audio layer (1, 2, or 3) - this.mode = 0; // channel mode (see above) - this.mode_extension = 0; // additional mode info - this.emphasis = 0; // de-emphasis to use (see above) - - this.bitrate = 0; // stream bitrate (bps) - this.samplerate = 0; // sampling frequency (Hz) - - this.crc_check = 0; // frame CRC accumulator - this.crc_target = 0; // final target CRC checksum - - this.flags = 0; // flags (see above) - this.private_bits = 0; // private bits -} - -const BITRATES = [ - // MPEG-1 - [ 0, 32000, 64000, 96000, 128000, 160000, 192000, 224000, // Layer I - 256000, 288000, 320000, 352000, 384000, 416000, 448000 ], - [ 0, 32000, 48000, 56000, 64000, 80000, 96000, 112000, // Layer II - 128000, 160000, 192000, 224000, 256000, 320000, 384000 ], - [ 0, 32000, 40000, 48000, 56000, 64000, 80000, 96000, // Layer III - 112000, 128000, 160000, 192000, 224000, 256000, 320000 ], - - // MPEG-2 LSF - [ 0, 32000, 48000, 56000, 64000, 80000, 96000, 112000, // Layer I - 128000, 144000, 160000, 176000, 192000, 224000, 256000 ], - [ 0, 8000, 16000, 24000, 32000, 40000, 48000, 56000, // Layers - 64000, 80000, 96000, 112000, 128000, 144000, 160000 ] // II & III -]; - -const SAMPLERATES = [ - 44100, 48000, 32000 -]; - -MP3FrameHeader.FLAGS = { - NPRIVATE_III: 0x0007, // number of Layer III private bits - INCOMPLETE : 0x0008, // header but not data is decoded - - PROTECTION : 0x0010, // frame has CRC protection - COPYRIGHT : 0x0020, // frame is copyright - ORIGINAL : 0x0040, // frame is original (else copy) - PADDING : 0x0080, // frame has additional slot - - I_STEREO : 0x0100, // uses intensity joint stereo - MS_STEREO : 0x0200, // uses middle/side joint stereo - FREEFORMAT : 0x0400, // uses free format bitrate - - LSF_EXT : 0x1000, // lower sampling freq. extension - MC_EXT : 0x2000, // multichannel audio extension - MPEG_2_5_EXT: 0x4000 // MPEG 2.5 (unofficial) extension -}; - -const PRIVATE = { - HEADER : 0x0100, // header private bit - III : 0x001f // Layer III private bits (up to 5) -}; - -MP3FrameHeader.MODE = { - SINGLE_CHANNEL: 0, // single channel - DUAL_CHANNEL : 1, // dual channel - JOINT_STEREO : 2, // joint (MS/intensity) stereo - STEREO : 3 // normal LR stereo -}; - -const EMPHASIS = { - NONE : 0, // no emphasis - _50_15_US : 1, // 50/15 microseconds emphasis - CCITT_J_17: 3, // CCITT J.17 emphasis - RESERVED : 2 // unknown emphasis -}; - -MP3FrameHeader.BUFFER_GUARD = 8; -MP3FrameHeader.BUFFER_MDLEN = (511 + 2048 + MP3FrameHeader.BUFFER_GUARD); - -MP3FrameHeader.prototype.copy = function() { - var clone = new MP3FrameHeader(); - var keys = Object.keys(this); - - for (var key in keys) { - clone[key] = this[key]; - } - - return clone; -} - -MP3FrameHeader.prototype.nchannels = function () { - return this.mode === 0 ? 1 : 2; -}; - -MP3FrameHeader.prototype.nbsamples = function() { - return (this.layer === 1 ? 12 : ((this.layer === 3 && (this.flags & MP3FrameHeader.FLAGS.LSF_EXT)) ? 18 : 36)); -}; - -MP3FrameHeader.prototype.framesize = function() { - if (this.bitrate === 0) - return null; - - var padding = (this.flags & MP3FrameHeader.FLAGS.PADDING ? 1 : 0); - switch (this.layer) { - case 1: - var size = (this.bitrate * 12) / this.samplerate | 0; - return (size + padding) * 4; - - case 2: - var size = (this.bitrate * 144) / this.samplerate | 0; - return size + padding; - - case 3: - default: - var lsf = this.flags & MP3FrameHeader.FLAGS.LSF_EXT ? 1 : 0; - var size = (this.bitrate * 144) / (this.samplerate << lsf) | 0; - return size + padding; - } -}; - -MP3FrameHeader.prototype.decode = function(stream) { - this.flags = 0; - this.private_bits = 0; - - // syncword - stream.advance(11); - - // MPEG 2.5 indicator (really part of syncword) - if (stream.read(1) === 0) - this.flags |= MP3FrameHeader.FLAGS.MPEG_2_5_EXT; - - // ID - if (stream.read(1) === 0) { - this.flags |= MP3FrameHeader.FLAGS.LSF_EXT; - } else if (this.flags & MP3FrameHeader.FLAGS.MPEG_2_5_EXT) { - throw new AV.UnderflowError(); // LOSTSYNC - } - - // layer - this.layer = 4 - stream.read(2); - - if (this.layer === 4) - throw new Error('Invalid layer'); - - // protection_bit - if (stream.read(1) === 0) - this.flags |= MP3FrameHeader.FLAGS.PROTECTION; - - // bitrate_index - var index = stream.read(4); - if (index === 15) - throw new Error('Invalid bitrate'); - - if (this.flags & MP3FrameHeader.FLAGS.LSF_EXT) { - this.bitrate = BITRATES[3 + (this.layer >> 1)][index]; - } else { - this.bitrate = BITRATES[this.layer - 1][index]; - } - - // sampling_frequency - index = stream.read(2); - if (index === 3) - throw new Error('Invalid sampling frequency'); - - this.samplerate = SAMPLERATES[index]; - - if (this.flags & MP3FrameHeader.FLAGS.LSF_EXT) { - this.samplerate /= 2; - - if (this.flags & MP3FrameHeader.FLAGS.MPEG_2_5_EXT) - this.samplerate /= 2; - } - - // padding_bit - if (stream.read(1)) - this.flags |= MP3FrameHeader.FLAGS.PADDING; - - // private_bit - if (stream.read(1)) - this.private_bits |= PRIVATE.HEADER; - - // mode - this.mode = 3 - stream.read(2); - - // mode_extension - this.mode_extension = stream.read(2); - - // copyright - if (stream.read(1)) - this.flags |= MP3FrameHeader.FLAGS.COPYRIGHT; - - // original/copy - if (stream.read(1)) - this.flags |= MP3FrameHeader.FLAGS.ORIGINAL; - - // emphasis - this.emphasis = stream.read(2); - - // crc_check - if (this.flags & MP3FrameHeader.FLAGS.PROTECTION) - this.crc_target = stream.read(16); -}; - -MP3FrameHeader.decode = function(stream) { - // synchronize - var ptr = stream.next_frame; - var syncing = true; - var header = null; - - while (syncing) { - syncing = false; - - if (stream.sync) { - if (!stream.available(MP3FrameHeader.BUFFER_GUARD)) { - stream.next_frame = ptr; - throw new AV.UnderflowError(); - } else if (!(stream.getU8(ptr) === 0xff && (stream.getU8(ptr + 1) & 0xe0) === 0xe0)) { - // mark point where frame sync word was expected - stream.this_frame = ptr; - stream.next_frame = ptr + 1; - throw new AV.UnderflowError(); // LOSTSYNC - } - } else { - stream.seek(ptr * 8); - if (!stream.doSync()) - throw new AV.UnderflowError(); - - ptr = stream.nextByte(); - } - - // begin processing - stream.this_frame = ptr; - stream.next_frame = ptr + 1; // possibly bogus sync word - - stream.seek(stream.this_frame * 8); - - header = new MP3FrameHeader(); - header.decode(stream); - - if (header.bitrate === 0) { - if (stream.freerate === 0 || !stream.sync || (header.layer === 3 && stream.freerate > 640000)) - MP3FrameHeader.free_bitrate(stream, header); - - header.bitrate = stream.freerate; - header.flags |= MP3FrameHeader.FLAGS.FREEFORMAT; - } - - // calculate beginning of next frame - var pad_slot = (header.flags & MP3FrameHeader.FLAGS.PADDING) ? 1 : 0; - - if (header.layer === 1) { - var N = (((12 * header.bitrate / header.samplerate) << 0) + pad_slot) * 4; - } else { - var slots_per_frame = (header.layer === 3 && (header.flags & MP3FrameHeader.FLAGS.LSF_EXT)) ? 72 : 144; - var N = ((slots_per_frame * header.bitrate / header.samplerate) << 0) + pad_slot; - } - - // verify there is enough data left in buffer to decode this frame - if (!stream.available(N + MP3FrameHeader.BUFFER_GUARD)) { - stream.next_frame = stream.this_frame; - throw new AV.UnderflowError(); - } - - stream.next_frame = stream.this_frame + N; - - if (!stream.sync) { - // check that a valid frame header follows this frame - ptr = stream.next_frame; - - if (!(stream.getU8(ptr) === 0xff && (stream.getU8(ptr + 1) & 0xe0) === 0xe0)) { - ptr = stream.next_frame = stream.this_frame + 1; - - // emulating 'goto sync' - syncing = true; - continue; - } - - stream.sync = true; - } - } - - header.flags |= MP3FrameHeader.FLAGS.INCOMPLETE; - return header; -}; - -MP3FrameHeader.free_bitrate = function(stream, header) { - var pad_slot = header.flags & MP3FrameHeader.FLAGS.PADDING ? 1 : 0, - slots_per_frame = header.layer === 3 && header.flags & MP3FrameHeader.FLAGS.LSF_EXT ? 72 : 144; - - var start = stream.offset(); - var rate = 0; - - while (stream.doSync()) { - var peek_header = header.copy(); - var peek_stream = stream.copy(); - - if (peek_header.decode(peek_stream) && peek_header.layer === header.layer && peek_header.samplerate === header.samplerate) { - var N = stream.nextByte() - stream.this_frame; - - if (header.layer === 1) { - rate = header.samplerate * (N - 4 * pad_slot + 4) / 48 / 1000 | 0; - } else { - rate = header.samplerate * (N - pad_slot + 1) / slots_per_frame / 1000 | 0; - } - - if (rate >= 8) - break; - } - - stream.advance(8); - } - - stream.seek(start); - - if (rate < 8 || (header.layer === 3 && rate > 640)) - throw new AV.UnderflowError(); // LOSTSYNC - - stream.freerate = rate * 1000; -}; - -module.exports = MP3FrameHeader; - -},{}],6:[function(require,module,exports){ -/* - * These are the Huffman code words for Layer III. - * The data for these tables are derived from Table B.7 of ISO/IEC 11172-3. - * - * These tables support decoding up to 4 Huffman code bits at a time. - */ - -var PTR = function(offs, bits) { - return { - final: 0, - ptr: { - bits: bits, - offset: offs - } - }; -}; - -var huffquad_V = function (v, w, x, y, hlen) { - return { - final: 1, - value: { - v: v, - w: w, - x: x, - y: y, - hlen: hlen - } - }; -}; - -const hufftabA = [ - /* 0000 */ PTR(16, 2), - /* 0001 */ PTR(20, 2), - /* 0010 */ PTR(24, 1), - /* 0011 */ PTR(26, 1), - /* 0100 */ huffquad_V(0, 0, 1, 0, 4), - /* 0101 */ huffquad_V(0, 0, 0, 1, 4), - /* 0110 */ huffquad_V(0, 1, 0, 0, 4), - /* 0111 */ huffquad_V(1, 0, 0, 0, 4), - /* 1000 */ huffquad_V(0, 0, 0, 0, 1), - /* 1001 */ huffquad_V(0, 0, 0, 0, 1), - /* 1010 */ huffquad_V(0, 0, 0, 0, 1), - /* 1011 */ huffquad_V(0, 0, 0, 0, 1), - /* 1100 */ huffquad_V(0, 0, 0, 0, 1), - /* 1101 */ huffquad_V(0, 0, 0, 0, 1), - /* 1110 */ huffquad_V(0, 0, 0, 0, 1), - /* 1111 */ huffquad_V(0, 0, 0, 0, 1), - - /* 0000 ... */ - /* 00 */ huffquad_V(1, 0, 1, 1, 2), /* 16 */ - /* 01 */ huffquad_V(1, 1, 1, 1, 2), - /* 10 */ huffquad_V(1, 1, 0, 1, 2), - /* 11 */ huffquad_V(1, 1, 1, 0, 2), - - /* 0001 ... */ - /* 00 */ huffquad_V(0, 1, 1, 1, 2), /* 20 */ - /* 01 */ huffquad_V(0, 1, 0, 1, 2), - /* 10 */ huffquad_V(1, 0, 0, 1, 1), - /* 11 */ huffquad_V(1, 0, 0, 1, 1), - - /* 0010 ... */ - /* 0 */ huffquad_V(0, 1, 1, 0, 1), /* 24 */ - /* 1 */ huffquad_V(0, 0, 1, 1, 1), - - /* 0011 ... */ - /* 0 */ huffquad_V(1, 0, 1, 0, 1), /* 26 */ - /* 1 */ huffquad_V(1, 1, 0, 0, 1) -]; - -const hufftabB = [ - /* 0000 */ huffquad_V(1, 1, 1, 1, 4), - /* 0001 */ huffquad_V(1, 1, 1, 0, 4), - /* 0010 */ huffquad_V(1, 1, 0, 1, 4), - /* 0011 */ huffquad_V(1, 1, 0, 0, 4), - /* 0100 */ huffquad_V(1, 0, 1, 1, 4), - /* 0101 */ huffquad_V(1, 0, 1, 0, 4), - /* 0110 */ huffquad_V(1, 0, 0, 1, 4), - /* 0111 */ huffquad_V(1, 0, 0, 0, 4), - /* 1000 */ huffquad_V(0, 1, 1, 1, 4), - /* 1001 */ huffquad_V(0, 1, 1, 0, 4), - /* 1010 */ huffquad_V(0, 1, 0, 1, 4), - /* 1011 */ huffquad_V(0, 1, 0, 0, 4), - /* 1100 */ huffquad_V(0, 0, 1, 1, 4), - /* 1101 */ huffquad_V(0, 0, 1, 0, 4), - /* 1110 */ huffquad_V(0, 0, 0, 1, 4), - /* 1111 */ huffquad_V(0, 0, 0, 0, 4) -]; - -var V = function (x, y, hlen) { - return { - final: 1, - value: { - x: x, - y: y, - hlen: hlen - } - }; -}; - -const hufftab0 = [ - /* */ V(0, 0, 0) -]; - -const hufftab1 = [ - /* 000 */ V(1, 1, 3), - /* 001 */ V(0, 1, 3), - /* 010 */ V(1, 0, 2), - /* 011 */ V(1, 0, 2), - /* 100 */ V(0, 0, 1), - /* 101 */ V(0, 0, 1), - /* 110 */ V(0, 0, 1), - /* 111 */ V(0, 0, 1) -]; - -const hufftab2 = [ - /* 000 */ PTR(8, 3), - /* 001 */ V(1, 1, 3), - /* 010 */ V(0, 1, 3), - /* 011 */ V(1, 0, 3), - /* 100 */ V(0, 0, 1), - /* 101 */ V(0, 0, 1), - /* 110 */ V(0, 0, 1), - /* 111 */ V(0, 0, 1), - - /* 000 ... */ - /* 000 */ V(2, 2, 3), /* 8 */ - /* 001 */ V(0, 2, 3), - /* 010 */ V(1, 2, 2), - /* 011 */ V(1, 2, 2), - /* 100 */ V(2, 1, 2), - /* 101 */ V(2, 1, 2), - /* 110 */ V(2, 0, 2), - /* 111 */ V(2, 0, 2) -]; - -const hufftab3 = [ - /* 000 */ PTR(8, 3), - /* 001 */ V(1, 0, 3), - /* 010 */ V(1, 1, 2), - /* 011 */ V(1, 1, 2), - /* 100 */ V(0, 1, 2), - /* 101 */ V(0, 1, 2), - /* 110 */ V(0, 0, 2), - /* 111 */ V(0, 0, 2), - - /* 000 ... */ - /* 000 */ V(2, 2, 3), /* 8 */ - /* 001 */ V(0, 2, 3), - /* 010 */ V(1, 2, 2), - /* 011 */ V(1, 2, 2), - /* 100 */ V(2, 1, 2), - /* 101 */ V(2, 1, 2), - /* 110 */ V(2, 0, 2), - /* 111 */ V(2, 0, 2) -]; - -const hufftab5 = [ - /* 000 */ PTR(8, 4), - /* 001 */ V(1, 1, 3), - /* 010 */ V(0, 1, 3), - /* 011 */ V(1, 0, 3), - /* 100 */ V(0, 0, 1), - /* 101 */ V(0, 0, 1), - /* 110 */ V(0, 0, 1), - /* 111 */ V(0, 0, 1), - - /* 000 ... */ - /* 0000 */ PTR(24, 1), /* 8 */ - /* 0001 */ V(3, 2, 4), - /* 0010 */ V(3, 1, 3), - /* 0011 */ V(3, 1, 3), - /* 0100 */ V(1, 3, 4), - /* 0101 */ V(0, 3, 4), - /* 0110 */ V(3, 0, 4), - /* 0111 */ V(2, 2, 4), - /* 1000 */ V(1, 2, 3), - /* 1001 */ V(1, 2, 3), - /* 1010 */ V(2, 1, 3), - /* 1011 */ V(2, 1, 3), - /* 1100 */ V(0, 2, 3), - /* 1101 */ V(0, 2, 3), - /* 1110 */ V(2, 0, 3), - /* 1111 */ V(2, 0, 3), - - /* 000 0000 ... */ - /* 0 */ V(3, 3, 1), /* 24 */ - /* 1 */ V(2, 3, 1) -]; - -const hufftab6 = [ - /* 0000 */ PTR(16, 3), - /* 0001 */ PTR(24, 1), - /* 0010 */ PTR(26, 1), - /* 0011 */ V(1, 2, 4), - /* 0100 */ V(2, 1, 4), - /* 0101 */ V(2, 0, 4), - /* 0110 */ V(0, 1, 3), - /* 0111 */ V(0, 1, 3), - /* 1000 */ V(1, 1, 2), - /* 1001 */ V(1, 1, 2), - /* 1010 */ V(1, 1, 2), - /* 1011 */ V(1, 1, 2), - /* 1100 */ V(1, 0, 3), - /* 1101 */ V(1, 0, 3), - /* 1110 */ V(0, 0, 3), - /* 1111 */ V(0, 0, 3), - - /* 0000 ... */ - /* 000 */ V(3, 3, 3), /* 16 */ - /* 001 */ V(0, 3, 3), - /* 010 */ V(2, 3, 2), - /* 011 */ V(2, 3, 2), - /* 100 */ V(3, 2, 2), - /* 101 */ V(3, 2, 2), - /* 110 */ V(3, 0, 2), - /* 111 */ V(3, 0, 2), - - /* 0001 ... */ - /* 0 */ V(1, 3, 1), /* 24 */ - /* 1 */ V(3, 1, 1), - - /* 0010 ... */ - /* 0 */ V(2, 2, 1), /* 26 */ - /* 1 */ V(0, 2, 1) -]; - -const hufftab7 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 2), - /* 0011 */ V(1, 1, 4), - /* 0100 */ V(0, 1, 3), - /* 0101 */ V(0, 1, 3), - /* 0110 */ V(1, 0, 3), - /* 0111 */ V(1, 0, 3), - /* 1000 */ V(0, 0, 1), - /* 1001 */ V(0, 0, 1), - /* 1010 */ V(0, 0, 1), - /* 1011 */ V(0, 0, 1), - /* 1100 */ V(0, 0, 1), - /* 1101 */ V(0, 0, 1), - /* 1110 */ V(0, 0, 1), - /* 1111 */ V(0, 0, 1), - - /* 0000 ... */ - /* 0000 */ PTR(52, 2), /* 16 */ - /* 0001 */ PTR(56, 1), - /* 0010 */ PTR(58, 1), - /* 0011 */ V(1, 5, 4), - /* 0100 */ V(5, 1, 4), - /* 0101 */ PTR(60, 1), - /* 0110 */ V(5, 0, 4), - /* 0111 */ PTR(62, 1), - /* 1000 */ V(2, 4, 4), - /* 1001 */ V(4, 2, 4), - /* 1010 */ V(1, 4, 3), - /* 1011 */ V(1, 4, 3), - /* 1100 */ V(4, 1, 3), - /* 1101 */ V(4, 1, 3), - /* 1110 */ V(4, 0, 3), - /* 1111 */ V(4, 0, 3), - - /* 0001 ... */ - /* 0000 */ V(0, 4, 4), /* 32 */ - /* 0001 */ V(2, 3, 4), - /* 0010 */ V(3, 2, 4), - /* 0011 */ V(0, 3, 4), - /* 0100 */ V(1, 3, 3), - /* 0101 */ V(1, 3, 3), - /* 0110 */ V(3, 1, 3), - /* 0111 */ V(3, 1, 3), - /* 1000 */ V(3, 0, 3), - /* 1001 */ V(3, 0, 3), - /* 1010 */ V(2, 2, 3), - /* 1011 */ V(2, 2, 3), - /* 1100 */ V(1, 2, 2), - /* 1101 */ V(1, 2, 2), - /* 1110 */ V(1, 2, 2), - /* 1111 */ V(1, 2, 2), - - /* 0010 ... */ - /* 00 */ V(2, 1, 1), /* 48 */ - /* 01 */ V(2, 1, 1), - /* 10 */ V(0, 2, 2), - /* 11 */ V(2, 0, 2), - - /* 0000 0000 ... */ - /* 00 */ V(5, 5, 2), /* 52 */ - /* 01 */ V(4, 5, 2), - /* 10 */ V(5, 4, 2), - /* 11 */ V(5, 3, 2), - - /* 0000 0001 ... */ - /* 0 */ V(3, 5, 1), /* 56 */ - /* 1 */ V(4, 4, 1), - - /* 0000 0010 ... */ - /* 0 */ V(2, 5, 1), /* 58 */ - /* 1 */ V(5, 2, 1), - - /* 0000 0101 ... */ - /* 0 */ V(0, 5, 1), /* 60 */ - /* 1 */ V(3, 4, 1), - - /* 0000 0111 ... */ - /* 0 */ V(4, 3, 1), /* 62 */ - /* 1 */ V(3, 3, 1) -]; - -const hufftab8 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ V(1, 2, 4), - /* 0011 */ V(2, 1, 4), - /* 0100 */ V(1, 1, 2), - /* 0101 */ V(1, 1, 2), - /* 0110 */ V(1, 1, 2), - /* 0111 */ V(1, 1, 2), - /* 1000 */ V(0, 1, 3), - /* 1001 */ V(0, 1, 3), - /* 1010 */ V(1, 0, 3), - /* 1011 */ V(1, 0, 3), - /* 1100 */ V(0, 0, 2), - /* 1101 */ V(0, 0, 2), - /* 1110 */ V(0, 0, 2), - /* 1111 */ V(0, 0, 2), - - /* 0000 ... */ - /* 0000 */ PTR(48, 3), /* 16 */ - /* 0001 */ PTR(56, 2), - /* 0010 */ PTR(60, 1), - /* 0011 */ V(1, 5, 4), - /* 0100 */ V(5, 1, 4), - /* 0101 */ PTR(62, 1), - /* 0110 */ PTR(64, 1), - /* 0111 */ V(2, 4, 4), - /* 1000 */ V(4, 2, 4), - /* 1001 */ V(1, 4, 4), - /* 1010 */ V(4, 1, 3), - /* 1011 */ V(4, 1, 3), - /* 1100 */ V(0, 4, 4), - /* 1101 */ V(4, 0, 4), - /* 1110 */ V(2, 3, 4), - /* 1111 */ V(3, 2, 4), - - /* 0001 ... */ - /* 0000 */ V(1, 3, 4), /* 32 */ - /* 0001 */ V(3, 1, 4), - /* 0010 */ V(0, 3, 4), - /* 0011 */ V(3, 0, 4), - /* 0100 */ V(2, 2, 2), - /* 0101 */ V(2, 2, 2), - /* 0110 */ V(2, 2, 2), - /* 0111 */ V(2, 2, 2), - /* 1000 */ V(0, 2, 2), - /* 1001 */ V(0, 2, 2), - /* 1010 */ V(0, 2, 2), - /* 1011 */ V(0, 2, 2), - /* 1100 */ V(2, 0, 2), - /* 1101 */ V(2, 0, 2), - /* 1110 */ V(2, 0, 2), - /* 1111 */ V(2, 0, 2), - - /* 0000 0000 ... */ - /* 000 */ V(5, 5, 3), /* 48 */ - /* 001 */ V(5, 4, 3), - /* 010 */ V(4, 5, 2), - /* 011 */ V(4, 5, 2), - /* 100 */ V(5, 3, 1), - /* 101 */ V(5, 3, 1), - /* 110 */ V(5, 3, 1), - /* 111 */ V(5, 3, 1), - - /* 0000 0001 ... */ - /* 00 */ V(3, 5, 2), /* 56 */ - /* 01 */ V(4, 4, 2), - /* 10 */ V(2, 5, 1), - /* 11 */ V(2, 5, 1), - - /* 0000 0010 ... */ - /* 0 */ V(5, 2, 1), /* 60 */ - /* 1 */ V(0, 5, 1), - - /* 0000 0101 ... */ - /* 0 */ V(3, 4, 1), /* 62 */ - /* 1 */ V(4, 3, 1), - - /* 0000 0110 ... */ - /* 0 */ V(5, 0, 1), /* 64 */ - /* 1 */ V(3, 3, 1) -]; - -const hufftab9 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 3), - /* 0010 */ PTR(40, 2), - /* 0011 */ PTR(44, 2), - /* 0100 */ PTR(48, 1), - /* 0101 */ V(1, 2, 4), - /* 0110 */ V(2, 1, 4), - /* 0111 */ V(2, 0, 4), - /* 1000 */ V(1, 1, 3), - /* 1001 */ V(1, 1, 3), - /* 1010 */ V(0, 1, 3), - /* 1011 */ V(0, 1, 3), - /* 1100 */ V(1, 0, 3), - /* 1101 */ V(1, 0, 3), - /* 1110 */ V(0, 0, 3), - /* 1111 */ V(0, 0, 3), - - /* 0000 ... */ - /* 0000 */ PTR(50, 1), /* 16 */ - /* 0001 */ V(3, 5, 4), - /* 0010 */ V(5, 3, 4), - /* 0011 */ PTR(52, 1), - /* 0100 */ V(4, 4, 4), - /* 0101 */ V(2, 5, 4), - /* 0110 */ V(5, 2, 4), - /* 0111 */ V(1, 5, 4), - /* 1000 */ V(5, 1, 3), - /* 1001 */ V(5, 1, 3), - /* 1010 */ V(3, 4, 3), - /* 1011 */ V(3, 4, 3), - /* 1100 */ V(4, 3, 3), - /* 1101 */ V(4, 3, 3), - /* 1110 */ V(5, 0, 4), - /* 1111 */ V(0, 4, 4), - - /* 0001 ... */ - /* 000 */ V(2, 4, 3), /* 32 */ - /* 001 */ V(4, 2, 3), - /* 010 */ V(3, 3, 3), - /* 011 */ V(4, 0, 3), - /* 100 */ V(1, 4, 2), - /* 101 */ V(1, 4, 2), - /* 110 */ V(4, 1, 2), - /* 111 */ V(4, 1, 2), - - /* 0010 ... */ - /* 00 */ V(2, 3, 2), /* 40 */ - /* 01 */ V(3, 2, 2), - /* 10 */ V(1, 3, 1), - /* 11 */ V(1, 3, 1), - - /* 0011 ... */ - /* 00 */ V(3, 1, 1), /* 44 */ - /* 01 */ V(3, 1, 1), - /* 10 */ V(0, 3, 2), - /* 11 */ V(3, 0, 2), - - /* 0100 ... */ - /* 0 */ V(2, 2, 1), /* 48 */ - /* 1 */ V(0, 2, 1), - - /* 0000 0000 ... */ - /* 0 */ V(5, 5, 1), /* 50 */ - /* 1 */ V(4, 5, 1), - - /* 0000 0011 ... */ - /* 0 */ V(5, 4, 1), /* 52 */ - /* 1 */ V(0, 5, 1) -]; - -const hufftab10 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 2), - /* 0011 */ V(1, 1, 4), - /* 0100 */ V(0, 1, 3), - /* 0101 */ V(0, 1, 3), - /* 0110 */ V(1, 0, 3), - /* 0111 */ V(1, 0, 3), - /* 1000 */ V(0, 0, 1), - /* 1001 */ V(0, 0, 1), - /* 1010 */ V(0, 0, 1), - /* 1011 */ V(0, 0, 1), - /* 1100 */ V(0, 0, 1), - /* 1101 */ V(0, 0, 1), - /* 1110 */ V(0, 0, 1), - /* 1111 */ V(0, 0, 1), - - /* 0000 ... */ - /* 0000 */ PTR(52, 3), /* 16 */ - /* 0001 */ PTR(60, 2), - /* 0010 */ PTR(64, 3), - /* 0011 */ PTR(72, 1), - /* 0100 */ PTR(74, 2), - /* 0101 */ PTR(78, 2), - /* 0110 */ PTR(82, 2), - /* 0111 */ V(1, 7, 4), - /* 1000 */ V(7, 1, 4), - /* 1001 */ PTR(86, 1), - /* 1010 */ PTR(88, 2), - /* 1011 */ PTR(92, 2), - /* 1100 */ V(1, 6, 4), - /* 1101 */ V(6, 1, 4), - /* 1110 */ V(6, 0, 4), - /* 1111 */ PTR(96, 1), - - /* 0001 ... */ - /* 0000 */ PTR(98, 1), /* 32 */ - /* 0001 */ PTR(100, 1), - /* 0010 */ V(1, 4, 4), - /* 0011 */ V(4, 1, 4), - /* 0100 */ V(4, 0, 4), - /* 0101 */ V(2, 3, 4), - /* 0110 */ V(3, 2, 4), - /* 0111 */ V(0, 3, 4), - /* 1000 */ V(1, 3, 3), - /* 1001 */ V(1, 3, 3), - /* 1010 */ V(3, 1, 3), - /* 1011 */ V(3, 1, 3), - /* 1100 */ V(3, 0, 3), - /* 1101 */ V(3, 0, 3), - /* 1110 */ V(2, 2, 3), - /* 1111 */ V(2, 2, 3), - - /* 0010 ... */ - /* 00 */ V(1, 2, 2), /* 48 */ - /* 01 */ V(2, 1, 2), - /* 10 */ V(0, 2, 2), - /* 11 */ V(2, 0, 2), - - /* 0000 0000 ... */ - /* 000 */ V(7, 7, 3), /* 52 */ - /* 001 */ V(6, 7, 3), - /* 010 */ V(7, 6, 3), - /* 011 */ V(5, 7, 3), - /* 100 */ V(7, 5, 3), - /* 101 */ V(6, 6, 3), - /* 110 */ V(4, 7, 2), - /* 111 */ V(4, 7, 2), - - /* 0000 0001 ... */ - /* 00 */ V(7, 4, 2), /* 60 */ - /* 01 */ V(5, 6, 2), - /* 10 */ V(6, 5, 2), - /* 11 */ V(3, 7, 2), - - /* 0000 0010 ... */ - /* 000 */ V(7, 3, 2), /* 64 */ - /* 001 */ V(7, 3, 2), - /* 010 */ V(4, 6, 2), - /* 011 */ V(4, 6, 2), - /* 100 */ V(5, 5, 3), - /* 101 */ V(5, 4, 3), - /* 110 */ V(6, 3, 2), - /* 111 */ V(6, 3, 2), - - /* 0000 0011 ... */ - /* 0 */ V(2, 7, 1), /* 72 */ - /* 1 */ V(7, 2, 1), - - /* 0000 0100 ... */ - /* 00 */ V(6, 4, 2), /* 74 */ - /* 01 */ V(0, 7, 2), - /* 10 */ V(7, 0, 1), - /* 11 */ V(7, 0, 1), - - /* 0000 0101 ... */ - /* 00 */ V(6, 2, 1), /* 78 */ - /* 01 */ V(6, 2, 1), - /* 10 */ V(4, 5, 2), - /* 11 */ V(3, 5, 2), - - /* 0000 0110 ... */ - /* 00 */ V(0, 6, 1), /* 82 */ - /* 01 */ V(0, 6, 1), - /* 10 */ V(5, 3, 2), - /* 11 */ V(4, 4, 2), - - /* 0000 1001 ... */ - /* 0 */ V(3, 6, 1), /* 86 */ - /* 1 */ V(2, 6, 1), - - /* 0000 1010 ... */ - /* 00 */ V(2, 5, 2), /* 88 */ - /* 01 */ V(5, 2, 2), - /* 10 */ V(1, 5, 1), - /* 11 */ V(1, 5, 1), - - /* 0000 1011 ... */ - /* 00 */ V(5, 1, 1), /* 92 */ - /* 01 */ V(5, 1, 1), - /* 10 */ V(3, 4, 2), - /* 11 */ V(4, 3, 2), - - /* 0000 1111 ... */ - /* 0 */ V(0, 5, 1), /* 96 */ - /* 1 */ V(5, 0, 1), - - /* 0001 0000 ... */ - /* 0 */ V(2, 4, 1), /* 98 */ - /* 1 */ V(4, 2, 1), - - /* 0001 0001 ... */ - /* 0 */ V(3, 3, 1), /* 100 */ - /* 1 */ V(0, 4, 1) -]; - -const hufftab11 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ PTR(64, 3), - /* 0100 */ V(1, 2, 4), - /* 0101 */ PTR(72, 1), - /* 0110 */ V(1, 1, 3), - /* 0111 */ V(1, 1, 3), - /* 1000 */ V(0, 1, 3), - /* 1001 */ V(0, 1, 3), - /* 1010 */ V(1, 0, 3), - /* 1011 */ V(1, 0, 3), - /* 1100 */ V(0, 0, 2), - /* 1101 */ V(0, 0, 2), - /* 1110 */ V(0, 0, 2), - /* 1111 */ V(0, 0, 2), - - /* 0000 ... */ - /* 0000 */ PTR(74, 2), /* 16 */ - /* 0001 */ PTR(78, 3), - /* 0010 */ PTR(86, 2), - /* 0011 */ PTR(90, 1), - /* 0100 */ PTR(92, 2), - /* 0101 */ V(2, 7, 4), - /* 0110 */ V(7, 2, 4), - /* 0111 */ PTR(96, 1), - /* 1000 */ V(7, 1, 3), - /* 1001 */ V(7, 1, 3), - /* 1010 */ V(1, 7, 4), - /* 1011 */ V(7, 0, 4), - /* 1100 */ V(3, 6, 4), - /* 1101 */ V(6, 3, 4), - /* 1110 */ V(6, 0, 4), - /* 1111 */ PTR(98, 1), - - /* 0001 ... */ - /* 0000 */ PTR(100, 1), /* 32 */ - /* 0001 */ V(1, 5, 4), - /* 0010 */ V(6, 2, 3), - /* 0011 */ V(6, 2, 3), - /* 0100 */ V(2, 6, 4), - /* 0101 */ V(0, 6, 4), - /* 0110 */ V(1, 6, 3), - /* 0111 */ V(1, 6, 3), - /* 1000 */ V(6, 1, 3), - /* 1001 */ V(6, 1, 3), - /* 1010 */ V(5, 1, 4), - /* 1011 */ V(3, 4, 4), - /* 1100 */ V(5, 0, 4), - /* 1101 */ PTR(102, 1), - /* 1110 */ V(2, 4, 4), - /* 1111 */ V(4, 2, 4), - - /* 0010 ... */ - /* 0000 */ V(1, 4, 4), /* 48 */ - /* 0001 */ V(4, 1, 4), - /* 0010 */ V(0, 4, 4), - /* 0011 */ V(4, 0, 4), - /* 0100 */ V(2, 3, 3), - /* 0101 */ V(2, 3, 3), - /* 0110 */ V(3, 2, 3), - /* 0111 */ V(3, 2, 3), - /* 1000 */ V(1, 3, 2), - /* 1001 */ V(1, 3, 2), - /* 1010 */ V(1, 3, 2), - /* 1011 */ V(1, 3, 2), - /* 1100 */ V(3, 1, 2), - /* 1101 */ V(3, 1, 2), - /* 1110 */ V(3, 1, 2), - /* 1111 */ V(3, 1, 2), - - /* 0011 ... */ - /* 000 */ V(0, 3, 3), /* 64 */ - /* 001 */ V(3, 0, 3), - /* 010 */ V(2, 2, 2), - /* 011 */ V(2, 2, 2), - /* 100 */ V(2, 1, 1), - /* 101 */ V(2, 1, 1), - /* 110 */ V(2, 1, 1), - /* 111 */ V(2, 1, 1), - - /* 0101 ... */ - /* 0 */ V(0, 2, 1), /* 72 */ - /* 1 */ V(2, 0, 1), - - /* 0000 0000 ... */ - /* 00 */ V(7, 7, 2), /* 74 */ - /* 01 */ V(6, 7, 2), - /* 10 */ V(7, 6, 2), - /* 11 */ V(7, 5, 2), - - /* 0000 0001 ... */ - /* 000 */ V(6, 6, 2), /* 78 */ - /* 001 */ V(6, 6, 2), - /* 010 */ V(4, 7, 2), - /* 011 */ V(4, 7, 2), - /* 100 */ V(7, 4, 2), - /* 101 */ V(7, 4, 2), - /* 110 */ V(5, 7, 3), - /* 111 */ V(5, 5, 3), - - /* 0000 0010 ... */ - /* 00 */ V(5, 6, 2), /* 86 */ - /* 01 */ V(6, 5, 2), - /* 10 */ V(3, 7, 1), - /* 11 */ V(3, 7, 1), - - /* 0000 0011 ... */ - /* 0 */ V(7, 3, 1), /* 90 */ - /* 1 */ V(4, 6, 1), - - /* 0000 0100 ... */ - /* 00 */ V(4, 5, 2), /* 92 */ - /* 01 */ V(5, 4, 2), - /* 10 */ V(3, 5, 2), - /* 11 */ V(5, 3, 2), - - /* 0000 0111 ... */ - /* 0 */ V(6, 4, 1), /* 96 */ - /* 1 */ V(0, 7, 1), - - /* 0000 1111 ... */ - /* 0 */ V(4, 4, 1), /* 98 */ - /* 1 */ V(2, 5, 1), - - /* 0001 0000 ... */ - /* 0 */ V(5, 2, 1), /* 100 */ - /* 1 */ V(0, 5, 1), - - /* 0001 1101 ... */ - /* 0 */ V(4, 3, 1), /* 102 */ - /* 1 */ V(3, 3, 1) -]; - -const hufftab12 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ PTR(64, 2), - /* 0100 */ PTR(68, 3), - /* 0101 */ PTR(76, 1), - /* 0110 */ V(1, 2, 4), - /* 0111 */ V(2, 1, 4), - /* 1000 */ PTR(78, 1), - /* 1001 */ V(0, 0, 4), - /* 1010 */ V(1, 1, 3), - /* 1011 */ V(1, 1, 3), - /* 1100 */ V(0, 1, 3), - /* 1101 */ V(0, 1, 3), - /* 1110 */ V(1, 0, 3), - /* 1111 */ V(1, 0, 3), - - /* 0000 ... */ - /* 0000 */ PTR(80, 2), /* 16 */ - /* 0001 */ PTR(84, 1), - /* 0010 */ PTR(86, 1), - /* 0011 */ PTR(88, 1), - /* 0100 */ V(5, 6, 4), - /* 0101 */ V(3, 7, 4), - /* 0110 */ PTR(90, 1), - /* 0111 */ V(2, 7, 4), - /* 1000 */ V(7, 2, 4), - /* 1001 */ V(4, 6, 4), - /* 1010 */ V(6, 4, 4), - /* 1011 */ V(1, 7, 4), - /* 1100 */ V(7, 1, 4), - /* 1101 */ PTR(92, 1), - /* 1110 */ V(3, 6, 4), - /* 1111 */ V(6, 3, 4), - - /* 0001 ... */ - /* 0000 */ V(4, 5, 4), /* 32 */ - /* 0001 */ V(5, 4, 4), - /* 0010 */ V(4, 4, 4), - /* 0011 */ PTR(94, 1), - /* 0100 */ V(2, 6, 3), - /* 0101 */ V(2, 6, 3), - /* 0110 */ V(6, 2, 3), - /* 0111 */ V(6, 2, 3), - /* 1000 */ V(6, 1, 3), - /* 1001 */ V(6, 1, 3), - /* 1010 */ V(1, 6, 4), - /* 1011 */ V(6, 0, 4), - /* 1100 */ V(3, 5, 4), - /* 1101 */ V(5, 3, 4), - /* 1110 */ V(2, 5, 4), - /* 1111 */ V(5, 2, 4), - - /* 0010 ... */ - /* 0000 */ V(1, 5, 3), /* 48 */ - /* 0001 */ V(1, 5, 3), - /* 0010 */ V(5, 1, 3), - /* 0011 */ V(5, 1, 3), - /* 0100 */ V(3, 4, 3), - /* 0101 */ V(3, 4, 3), - /* 0110 */ V(4, 3, 3), - /* 0111 */ V(4, 3, 3), - /* 1000 */ V(5, 0, 4), - /* 1001 */ V(0, 4, 4), - /* 1010 */ V(2, 4, 3), - /* 1011 */ V(2, 4, 3), - /* 1100 */ V(4, 2, 3), - /* 1101 */ V(4, 2, 3), - /* 1110 */ V(1, 4, 3), - /* 1111 */ V(1, 4, 3), - - /* 0011 ... */ - /* 00 */ V(3, 3, 2), /* 64 */ - /* 01 */ V(4, 1, 2), - /* 10 */ V(2, 3, 2), - /* 11 */ V(3, 2, 2), - - /* 0100 ... */ - /* 000 */ V(4, 0, 3), /* 68 */ - /* 001 */ V(0, 3, 3), - /* 010 */ V(3, 0, 2), - /* 011 */ V(3, 0, 2), - /* 100 */ V(1, 3, 1), - /* 101 */ V(1, 3, 1), - /* 110 */ V(1, 3, 1), - /* 111 */ V(1, 3, 1), - - /* 0101 ... */ - /* 0 */ V(3, 1, 1), /* 76 */ - /* 1 */ V(2, 2, 1), - - /* 1000 ... */ - /* 0 */ V(0, 2, 1), /* 78 */ - /* 1 */ V(2, 0, 1), - - /* 0000 0000 ... */ - /* 00 */ V(7, 7, 2), /* 80 */ - /* 01 */ V(6, 7, 2), - /* 10 */ V(7, 6, 1), - /* 11 */ V(7, 6, 1), - - /* 0000 0001 ... */ - /* 0 */ V(5, 7, 1), /* 84 */ - /* 1 */ V(7, 5, 1), - - /* 0000 0010 ... */ - /* 0 */ V(6, 6, 1), /* 86 */ - /* 1 */ V(4, 7, 1), - - /* 0000 0011 ... */ - /* 0 */ V(7, 4, 1), /* 88 */ - /* 1 */ V(6, 5, 1), - - /* 0000 0110 ... */ - /* 0 */ V(7, 3, 1), /* 90 */ - /* 1 */ V(5, 5, 1), - - /* 0000 1101 ... */ - /* 0 */ V(0, 7, 1), /* 92 */ - /* 1 */ V(7, 0, 1), - - /* 0001 0011 ... */ - /* 0 */ V(0, 6, 1), /* 94 */ - /* 1 */ V(0, 5, 1) -]; - -const hufftab13 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ PTR(64, 2), - /* 0100 */ V(1, 1, 4), - /* 0101 */ V(0, 1, 4), - /* 0110 */ V(1, 0, 3), - /* 0111 */ V(1, 0, 3), - /* 1000 */ V(0, 0, 1), - /* 1001 */ V(0, 0, 1), - /* 1010 */ V(0, 0, 1), - /* 1011 */ V(0, 0, 1), - /* 1100 */ V(0, 0, 1), - /* 1101 */ V(0, 0, 1), - /* 1110 */ V(0, 0, 1), - /* 1111 */ V(0, 0, 1), - - /* 0000 ... */ - /* 0000 */ PTR(68, 4), /* 16 */ - /* 0001 */ PTR(84, 4), - /* 0010 */ PTR(100, 4), - /* 0011 */ PTR(116, 4), - /* 0100 */ PTR(132, 4), - /* 0101 */ PTR(148, 4), - /* 0110 */ PTR(164, 3), - /* 0111 */ PTR(172, 3), - /* 1000 */ PTR(180, 3), - /* 1001 */ PTR(188, 3), - /* 1010 */ PTR(196, 3), - /* 1011 */ PTR(204, 3), - /* 1100 */ PTR(212, 1), - /* 1101 */ PTR(214, 2), - /* 1110 */ PTR(218, 3), - /* 1111 */ PTR(226, 1), - - /* 0001 ... */ - /* 0000 */ PTR(228, 2), /* 32 */ - /* 0001 */ PTR(232, 2), - /* 0010 */ PTR(236, 2), - /* 0011 */ PTR(240, 2), - /* 0100 */ V(8, 1, 4), - /* 0101 */ PTR(244, 1), - /* 0110 */ PTR(246, 1), - /* 0111 */ PTR(248, 1), - /* 1000 */ PTR(250, 2), - /* 1001 */ PTR(254, 1), - /* 1010 */ V(1, 5, 4), - /* 1011 */ V(5, 1, 4), - /* 1100 */ PTR(256, 1), - /* 1101 */ PTR(258, 1), - /* 1110 */ PTR(260, 1), - /* 1111 */ V(1, 4, 4), - - /* 0010 ... */ - /* 0000 */ V(4, 1, 3), /* 48 */ - /* 0001 */ V(4, 1, 3), - /* 0010 */ V(0, 4, 4), - /* 0011 */ V(4, 0, 4), - /* 0100 */ V(2, 3, 4), - /* 0101 */ V(3, 2, 4), - /* 0110 */ V(1, 3, 3), - /* 0111 */ V(1, 3, 3), - /* 1000 */ V(3, 1, 3), - /* 1001 */ V(3, 1, 3), - /* 1010 */ V(0, 3, 3), - /* 1011 */ V(0, 3, 3), - /* 1100 */ V(3, 0, 3), - /* 1101 */ V(3, 0, 3), - /* 1110 */ V(2, 2, 3), - /* 1111 */ V(2, 2, 3), - - /* 0011 ... */ - /* 00 */ V(1, 2, 2), /* 64 */ - /* 01 */ V(2, 1, 2), - /* 10 */ V(0, 2, 2), - /* 11 */ V(2, 0, 2), - - /* 0000 0000 ... */ - /* 0000 */ PTR(262, 4), /* 68 */ - /* 0001 */ PTR(278, 4), - /* 0010 */ PTR(294, 4), - /* 0011 */ PTR(310, 3), - /* 0100 */ PTR(318, 2), - /* 0101 */ PTR(322, 2), - /* 0110 */ PTR(326, 3), - /* 0111 */ PTR(334, 2), - /* 1000 */ PTR(338, 1), - /* 1001 */ PTR(340, 2), - /* 1010 */ PTR(344, 2), - /* 1011 */ PTR(348, 2), - /* 1100 */ PTR(352, 2), - /* 1101 */ PTR(356, 2), - /* 1110 */ V(1, 15, 4), - /* 1111 */ V(15, 1, 4), - - /* 0000 0001 ... */ - /* 0000 */ V(15, 0, 4), /* 84 */ - /* 0001 */ PTR(360, 1), - /* 0010 */ PTR(362, 1), - /* 0011 */ PTR(364, 1), - /* 0100 */ V(14, 2, 4), - /* 0101 */ PTR(366, 1), - /* 0110 */ V(1, 14, 4), - /* 0111 */ V(14, 1, 4), - /* 1000 */ PTR(368, 1), - /* 1001 */ PTR(370, 1), - /* 1010 */ PTR(372, 1), - /* 1011 */ PTR(374, 1), - /* 1100 */ PTR(376, 1), - /* 1101 */ PTR(378, 1), - /* 1110 */ V(12, 6, 4), - /* 1111 */ V(3, 13, 4), - - /* 0000 0010 ... */ - /* 0000 */ PTR(380, 1), /* 100 */ - /* 0001 */ V(2, 13, 4), - /* 0010 */ V(13, 2, 4), - /* 0011 */ V(1, 13, 4), - /* 0100 */ V(11, 7, 4), - /* 0101 */ PTR(382, 1), - /* 0110 */ PTR(384, 1), - /* 0111 */ V(12, 3, 4), - /* 1000 */ PTR(386, 1), - /* 1001 */ V(4, 11, 4), - /* 1010 */ V(13, 1, 3), - /* 1011 */ V(13, 1, 3), - /* 1100 */ V(0, 13, 4), - /* 1101 */ V(13, 0, 4), - /* 1110 */ V(8, 10, 4), - /* 1111 */ V(10, 8, 4), - - /* 0000 0011 ... */ - /* 0000 */ V(4, 12, 4), /* 116 */ - /* 0001 */ V(12, 4, 4), - /* 0010 */ V(6, 11, 4), - /* 0011 */ V(11, 6, 4), - /* 0100 */ V(3, 12, 3), - /* 0101 */ V(3, 12, 3), - /* 0110 */ V(2, 12, 3), - /* 0111 */ V(2, 12, 3), - /* 1000 */ V(12, 2, 3), - /* 1001 */ V(12, 2, 3), - /* 1010 */ V(5, 11, 3), - /* 1011 */ V(5, 11, 3), - /* 1100 */ V(11, 5, 4), - /* 1101 */ V(8, 9, 4), - /* 1110 */ V(1, 12, 3), - /* 1111 */ V(1, 12, 3), - - /* 0000 0100 ... */ - /* 0000 */ V(12, 1, 3), /* 132 */ - /* 0001 */ V(12, 1, 3), - /* 0010 */ V(9, 8, 4), - /* 0011 */ V(0, 12, 4), - /* 0100 */ V(12, 0, 3), - /* 0101 */ V(12, 0, 3), - /* 0110 */ V(11, 4, 4), - /* 0111 */ V(6, 10, 4), - /* 1000 */ V(10, 6, 4), - /* 1001 */ V(7, 9, 4), - /* 1010 */ V(3, 11, 3), - /* 1011 */ V(3, 11, 3), - /* 1100 */ V(11, 3, 3), - /* 1101 */ V(11, 3, 3), - /* 1110 */ V(8, 8, 4), - /* 1111 */ V(5, 10, 4), - - /* 0000 0101 ... */ - /* 0000 */ V(2, 11, 3), /* 148 */ - /* 0001 */ V(2, 11, 3), - /* 0010 */ V(10, 5, 4), - /* 0011 */ V(6, 9, 4), - /* 0100 */ V(10, 4, 3), - /* 0101 */ V(10, 4, 3), - /* 0110 */ V(7, 8, 4), - /* 0111 */ V(8, 7, 4), - /* 1000 */ V(9, 4, 3), - /* 1001 */ V(9, 4, 3), - /* 1010 */ V(7, 7, 4), - /* 1011 */ V(7, 6, 4), - /* 1100 */ V(11, 2, 2), - /* 1101 */ V(11, 2, 2), - /* 1110 */ V(11, 2, 2), - /* 1111 */ V(11, 2, 2), - - /* 0000 0110 ... */ - /* 000 */ V(1, 11, 2), /* 164 */ - /* 001 */ V(1, 11, 2), - /* 010 */ V(11, 1, 2), - /* 011 */ V(11, 1, 2), - /* 100 */ V(0, 11, 3), - /* 101 */ V(11, 0, 3), - /* 110 */ V(9, 6, 3), - /* 111 */ V(4, 10, 3), - - /* 0000 0111 ... */ - /* 000 */ V(3, 10, 3), /* 172 */ - /* 001 */ V(10, 3, 3), - /* 010 */ V(5, 9, 3), - /* 011 */ V(9, 5, 3), - /* 100 */ V(2, 10, 2), - /* 101 */ V(2, 10, 2), - /* 110 */ V(10, 2, 2), - /* 111 */ V(10, 2, 2), - - /* 0000 1000 ... */ - /* 000 */ V(1, 10, 2), /* 180 */ - /* 001 */ V(1, 10, 2), - /* 010 */ V(10, 1, 2), - /* 011 */ V(10, 1, 2), - /* 100 */ V(0, 10, 3), - /* 101 */ V(6, 8, 3), - /* 110 */ V(10, 0, 2), - /* 111 */ V(10, 0, 2), - - /* 0000 1001 ... */ - /* 000 */ V(8, 6, 3), /* 188 */ - /* 001 */ V(4, 9, 3), - /* 010 */ V(9, 3, 2), - /* 011 */ V(9, 3, 2), - /* 100 */ V(3, 9, 3), - /* 101 */ V(5, 8, 3), - /* 110 */ V(8, 5, 3), - /* 111 */ V(6, 7, 3), - - /* 0000 1010 ... */ - /* 000 */ V(2, 9, 2), /* 196 */ - /* 001 */ V(2, 9, 2), - /* 010 */ V(9, 2, 2), - /* 011 */ V(9, 2, 2), - /* 100 */ V(5, 7, 3), - /* 101 */ V(7, 5, 3), - /* 110 */ V(3, 8, 2), - /* 111 */ V(3, 8, 2), - - /* 0000 1011 ... */ - /* 000 */ V(8, 3, 2), /* 204 */ - /* 001 */ V(8, 3, 2), - /* 010 */ V(6, 6, 3), - /* 011 */ V(4, 7, 3), - /* 100 */ V(7, 4, 3), - /* 101 */ V(5, 6, 3), - /* 110 */ V(6, 5, 3), - /* 111 */ V(7, 3, 3), - - /* 0000 1100 ... */ - /* 0 */ V(1, 9, 1), /* 212 */ - /* 1 */ V(9, 1, 1), - - /* 0000 1101 ... */ - /* 00 */ V(0, 9, 2), /* 214 */ - /* 01 */ V(9, 0, 2), - /* 10 */ V(4, 8, 2), - /* 11 */ V(8, 4, 2), - - /* 0000 1110 ... */ - /* 000 */ V(7, 2, 2), /* 218 */ - /* 001 */ V(7, 2, 2), - /* 010 */ V(4, 6, 3), - /* 011 */ V(6, 4, 3), - /* 100 */ V(2, 8, 1), - /* 101 */ V(2, 8, 1), - /* 110 */ V(2, 8, 1), - /* 111 */ V(2, 8, 1), - - /* 0000 1111 ... */ - /* 0 */ V(8, 2, 1), /* 226 */ - /* 1 */ V(1, 8, 1), - - /* 0001 0000 ... */ - /* 00 */ V(3, 7, 2), /* 228 */ - /* 01 */ V(2, 7, 2), - /* 10 */ V(1, 7, 1), - /* 11 */ V(1, 7, 1), - - /* 0001 0001 ... */ - /* 00 */ V(7, 1, 1), /* 232 */ - /* 01 */ V(7, 1, 1), - /* 10 */ V(5, 5, 2), - /* 11 */ V(0, 7, 2), - - /* 0001 0010 ... */ - /* 00 */ V(7, 0, 2), /* 236 */ - /* 01 */ V(3, 6, 2), - /* 10 */ V(6, 3, 2), - /* 11 */ V(4, 5, 2), - - /* 0001 0011 ... */ - /* 00 */ V(5, 4, 2), /* 240 */ - /* 01 */ V(2, 6, 2), - /* 10 */ V(6, 2, 2), - /* 11 */ V(3, 5, 2), - - /* 0001 0101 ... */ - /* 0 */ V(0, 8, 1), /* 244 */ - /* 1 */ V(8, 0, 1), - - /* 0001 0110 ... */ - /* 0 */ V(1, 6, 1), /* 246 */ - /* 1 */ V(6, 1, 1), - - /* 0001 0111 ... */ - /* 0 */ V(0, 6, 1), /* 248 */ - /* 1 */ V(6, 0, 1), - - /* 0001 1000 ... */ - /* 00 */ V(5, 3, 2), /* 250 */ - /* 01 */ V(4, 4, 2), - /* 10 */ V(2, 5, 1), - /* 11 */ V(2, 5, 1), - - /* 0001 1001 ... */ - /* 0 */ V(5, 2, 1), /* 254 */ - /* 1 */ V(0, 5, 1), - - /* 0001 1100 ... */ - /* 0 */ V(3, 4, 1), /* 256 */ - /* 1 */ V(4, 3, 1), - - /* 0001 1101 ... */ - /* 0 */ V(5, 0, 1), /* 258 */ - /* 1 */ V(2, 4, 1), - - /* 0001 1110 ... */ - /* 0 */ V(4, 2, 1), /* 260 */ - /* 1 */ V(3, 3, 1), - - /* 0000 0000 0000 ... */ - /* 0000 */ PTR(388, 3), /* 262 */ - /* 0001 */ V(15, 15, 4), - /* 0010 */ V(14, 15, 4), - /* 0011 */ V(13, 15, 4), - /* 0100 */ V(14, 14, 4), - /* 0101 */ V(12, 15, 4), - /* 0110 */ V(13, 14, 4), - /* 0111 */ V(11, 15, 4), - /* 1000 */ V(15, 11, 4), - /* 1001 */ V(12, 14, 4), - /* 1010 */ V(13, 12, 4), - /* 1011 */ PTR(396, 1), - /* 1100 */ V(14, 12, 3), - /* 1101 */ V(14, 12, 3), - /* 1110 */ V(13, 13, 3), - /* 1111 */ V(13, 13, 3), - - /* 0000 0000 0001 ... */ - /* 0000 */ V(15, 10, 4), /* 278 */ - /* 0001 */ V(12, 13, 4), - /* 0010 */ V(11, 14, 3), - /* 0011 */ V(11, 14, 3), - /* 0100 */ V(14, 11, 3), - /* 0101 */ V(14, 11, 3), - /* 0110 */ V(9, 15, 3), - /* 0111 */ V(9, 15, 3), - /* 1000 */ V(15, 9, 3), - /* 1001 */ V(15, 9, 3), - /* 1010 */ V(14, 10, 3), - /* 1011 */ V(14, 10, 3), - /* 1100 */ V(11, 13, 3), - /* 1101 */ V(11, 13, 3), - /* 1110 */ V(13, 11, 3), - /* 1111 */ V(13, 11, 3), - - /* 0000 0000 0010 ... */ - /* 0000 */ V(8, 15, 3), /* 294 */ - /* 0001 */ V(8, 15, 3), - /* 0010 */ V(15, 8, 3), - /* 0011 */ V(15, 8, 3), - /* 0100 */ V(12, 12, 3), - /* 0101 */ V(12, 12, 3), - /* 0110 */ V(10, 14, 4), - /* 0111 */ V(9, 14, 4), - /* 1000 */ V(8, 14, 3), - /* 1001 */ V(8, 14, 3), - /* 1010 */ V(7, 15, 4), - /* 1011 */ V(7, 14, 4), - /* 1100 */ V(15, 7, 2), - /* 1101 */ V(15, 7, 2), - /* 1110 */ V(15, 7, 2), - /* 1111 */ V(15, 7, 2), - - /* 0000 0000 0011 ... */ - /* 000 */ V(13, 10, 2), /* 310 */ - /* 001 */ V(13, 10, 2), - /* 010 */ V(10, 13, 3), - /* 011 */ V(11, 12, 3), - /* 100 */ V(12, 11, 3), - /* 101 */ V(15, 6, 3), - /* 110 */ V(6, 15, 2), - /* 111 */ V(6, 15, 2), - - /* 0000 0000 0100 ... */ - /* 00 */ V(14, 8, 2), /* 318 */ - /* 01 */ V(5, 15, 2), - /* 10 */ V(9, 13, 2), - /* 11 */ V(13, 9, 2), - - /* 0000 0000 0101 ... */ - /* 00 */ V(15, 5, 2), /* 322 */ - /* 01 */ V(14, 7, 2), - /* 10 */ V(10, 12, 2), - /* 11 */ V(11, 11, 2), - - /* 0000 0000 0110 ... */ - /* 000 */ V(4, 15, 2), /* 326 */ - /* 001 */ V(4, 15, 2), - /* 010 */ V(15, 4, 2), - /* 011 */ V(15, 4, 2), - /* 100 */ V(12, 10, 3), - /* 101 */ V(14, 6, 3), - /* 110 */ V(15, 3, 2), - /* 111 */ V(15, 3, 2), - - /* 0000 0000 0111 ... */ - /* 00 */ V(3, 15, 1), /* 334 */ - /* 01 */ V(3, 15, 1), - /* 10 */ V(8, 13, 2), - /* 11 */ V(13, 8, 2), - - /* 0000 0000 1000 ... */ - /* 0 */ V(2, 15, 1), /* 338 */ - /* 1 */ V(15, 2, 1), - - /* 0000 0000 1001 ... */ - /* 00 */ V(6, 14, 2), /* 340 */ - /* 01 */ V(9, 12, 2), - /* 10 */ V(0, 15, 1), - /* 11 */ V(0, 15, 1), - - /* 0000 0000 1010 ... */ - /* 00 */ V(12, 9, 2), /* 344 */ - /* 01 */ V(5, 14, 2), - /* 10 */ V(10, 11, 1), - /* 11 */ V(10, 11, 1), - - /* 0000 0000 1011 ... */ - /* 00 */ V(7, 13, 2), /* 348 */ - /* 01 */ V(13, 7, 2), - /* 10 */ V(4, 14, 1), - /* 11 */ V(4, 14, 1), - - /* 0000 0000 1100 ... */ - /* 00 */ V(12, 8, 2), /* 352 */ - /* 01 */ V(13, 6, 2), - /* 10 */ V(3, 14, 1), - /* 11 */ V(3, 14, 1), - - /* 0000 0000 1101 ... */ - /* 00 */ V(11, 9, 1), /* 356 */ - /* 01 */ V(11, 9, 1), - /* 10 */ V(9, 11, 2), - /* 11 */ V(10, 10, 2), - - /* 0000 0001 0001 ... */ - /* 0 */ V(11, 10, 1), /* 360 */ - /* 1 */ V(14, 5, 1), - - /* 0000 0001 0010 ... */ - /* 0 */ V(14, 4, 1), /* 362 */ - /* 1 */ V(8, 12, 1), - - /* 0000 0001 0011 ... */ - /* 0 */ V(6, 13, 1), /* 364 */ - /* 1 */ V(14, 3, 1), - - /* 0000 0001 0101 ... */ - /* 0 */ V(2, 14, 1), /* 366 */ - /* 1 */ V(0, 14, 1), - - /* 0000 0001 1000 ... */ - /* 0 */ V(14, 0, 1), /* 368 */ - /* 1 */ V(5, 13, 1), - - /* 0000 0001 1001 ... */ - /* 0 */ V(13, 5, 1), /* 370 */ - /* 1 */ V(7, 12, 1), - - /* 0000 0001 1010 ... */ - /* 0 */ V(12, 7, 1), /* 372 */ - /* 1 */ V(4, 13, 1), - - /* 0000 0001 1011 ... */ - /* 0 */ V(8, 11, 1), /* 374 */ - /* 1 */ V(11, 8, 1), - - /* 0000 0001 1100 ... */ - /* 0 */ V(13, 4, 1), /* 376 */ - /* 1 */ V(9, 10, 1), - - /* 0000 0001 1101 ... */ - /* 0 */ V(10, 9, 1), /* 378 */ - /* 1 */ V(6, 12, 1), - - /* 0000 0010 0000 ... */ - /* 0 */ V(13, 3, 1), /* 380 */ - /* 1 */ V(7, 11, 1), - - /* 0000 0010 0101 ... */ - /* 0 */ V(5, 12, 1), /* 382 */ - /* 1 */ V(12, 5, 1), - - /* 0000 0010 0110 ... */ - /* 0 */ V(9, 9, 1), /* 384 */ - /* 1 */ V(7, 10, 1), - - /* 0000 0010 1000 ... */ - /* 0 */ V(10, 7, 1), /* 386 */ - /* 1 */ V(9, 7, 1), - - /* 0000 0000 0000 0000 ... */ - /* 000 */ V(15, 14, 3), /* 388 */ - /* 001 */ V(15, 12, 3), - /* 010 */ V(15, 13, 2), - /* 011 */ V(15, 13, 2), - /* 100 */ V(14, 13, 1), - /* 101 */ V(14, 13, 1), - /* 110 */ V(14, 13, 1), - /* 111 */ V(14, 13, 1), - - /* 0000 0000 0000 1011 ... */ - /* 0 */ V(10, 15, 1), /* 396 */ - /* 1 */ V(14, 9, 1) -]; - -const hufftab15 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ PTR(64, 4), - /* 0100 */ PTR(80, 4), - /* 0101 */ PTR(96, 3), - /* 0110 */ PTR(104, 3), - /* 0111 */ PTR(112, 2), - /* 1000 */ PTR(116, 1), - /* 1001 */ PTR(118, 1), - /* 1010 */ V(1, 1, 3), - /* 1011 */ V(1, 1, 3), - /* 1100 */ V(0, 1, 4), - /* 1101 */ V(1, 0, 4), - /* 1110 */ V(0, 0, 3), - /* 1111 */ V(0, 0, 3), - - /* 0000 ... */ - /* 0000 */ PTR(120, 4), /* 16 */ - /* 0001 */ PTR(136, 4), - /* 0010 */ PTR(152, 4), - /* 0011 */ PTR(168, 4), - /* 0100 */ PTR(184, 4), - /* 0101 */ PTR(200, 3), - /* 0110 */ PTR(208, 3), - /* 0111 */ PTR(216, 4), - /* 1000 */ PTR(232, 3), - /* 1001 */ PTR(240, 3), - /* 1010 */ PTR(248, 3), - /* 1011 */ PTR(256, 3), - /* 1100 */ PTR(264, 2), - /* 1101 */ PTR(268, 3), - /* 1110 */ PTR(276, 3), - /* 1111 */ PTR(284, 2), - - /* 0001 ... */ - /* 0000 */ PTR(288, 2), /* 32 */ - /* 0001 */ PTR(292, 2), - /* 0010 */ PTR(296, 2), - /* 0011 */ PTR(300, 2), - /* 0100 */ PTR(304, 2), - /* 0101 */ PTR(308, 2), - /* 0110 */ PTR(312, 2), - /* 0111 */ PTR(316, 2), - /* 1000 */ PTR(320, 1), - /* 1001 */ PTR(322, 1), - /* 1010 */ PTR(324, 1), - /* 1011 */ PTR(326, 2), - /* 1100 */ PTR(330, 1), - /* 1101 */ PTR(332, 1), - /* 1110 */ PTR(334, 2), - /* 1111 */ PTR(338, 1), - - /* 0010 ... */ - /* 0000 */ PTR(340, 1), /* 48 */ - /* 0001 */ PTR(342, 1), - /* 0010 */ V(9, 1, 4), - /* 0011 */ PTR(344, 1), - /* 0100 */ PTR(346, 1), - /* 0101 */ PTR(348, 1), - /* 0110 */ PTR(350, 1), - /* 0111 */ PTR(352, 1), - /* 1000 */ V(2, 8, 4), - /* 1001 */ V(8, 2, 4), - /* 1010 */ V(1, 8, 4), - /* 1011 */ V(8, 1, 4), - /* 1100 */ PTR(354, 1), - /* 1101 */ PTR(356, 1), - /* 1110 */ PTR(358, 1), - /* 1111 */ PTR(360, 1), - - /* 0011 ... */ - /* 0000 */ V(2, 7, 4), /* 64 */ - /* 0001 */ V(7, 2, 4), - /* 0010 */ V(6, 4, 4), - /* 0011 */ V(1, 7, 4), - /* 0100 */ V(5, 5, 4), - /* 0101 */ V(7, 1, 4), - /* 0110 */ PTR(362, 1), - /* 0111 */ V(3, 6, 4), - /* 1000 */ V(6, 3, 4), - /* 1001 */ V(4, 5, 4), - /* 1010 */ V(5, 4, 4), - /* 1011 */ V(2, 6, 4), - /* 1100 */ V(6, 2, 4), - /* 1101 */ V(1, 6, 4), - /* 1110 */ PTR(364, 1), - /* 1111 */ V(3, 5, 4), - - /* 0100 ... */ - /* 0000 */ V(6, 1, 3), /* 80 */ - /* 0001 */ V(6, 1, 3), - /* 0010 */ V(5, 3, 4), - /* 0011 */ V(4, 4, 4), - /* 0100 */ V(2, 5, 3), - /* 0101 */ V(2, 5, 3), - /* 0110 */ V(5, 2, 3), - /* 0111 */ V(5, 2, 3), - /* 1000 */ V(1, 5, 3), - /* 1001 */ V(1, 5, 3), - /* 1010 */ V(5, 1, 3), - /* 1011 */ V(5, 1, 3), - /* 1100 */ V(0, 5, 4), - /* 1101 */ V(5, 0, 4), - /* 1110 */ V(3, 4, 3), - /* 1111 */ V(3, 4, 3), - - /* 0101 ... */ - /* 000 */ V(4, 3, 3), /* 96 */ - /* 001 */ V(2, 4, 3), - /* 010 */ V(4, 2, 3), - /* 011 */ V(3, 3, 3), - /* 100 */ V(4, 1, 2), - /* 101 */ V(4, 1, 2), - /* 110 */ V(1, 4, 3), - /* 111 */ V(0, 4, 3), - - /* 0110 ... */ - /* 000 */ V(2, 3, 2), /* 104 */ - /* 001 */ V(2, 3, 2), - /* 010 */ V(3, 2, 2), - /* 011 */ V(3, 2, 2), - /* 100 */ V(4, 0, 3), - /* 101 */ V(0, 3, 3), - /* 110 */ V(1, 3, 2), - /* 111 */ V(1, 3, 2), - - /* 0111 ... */ - /* 00 */ V(3, 1, 2), /* 112 */ - /* 01 */ V(3, 0, 2), - /* 10 */ V(2, 2, 1), - /* 11 */ V(2, 2, 1), - - /* 1000 ... */ - /* 0 */ V(1, 2, 1), /* 116 */ - /* 1 */ V(2, 1, 1), - - /* 1001 ... */ - /* 0 */ V(0, 2, 1), /* 118 */ - /* 1 */ V(2, 0, 1), - - /* 0000 0000 ... */ - /* 0000 */ PTR(366, 1), /* 120 */ - /* 0001 */ PTR(368, 1), - /* 0010 */ V(14, 14, 4), - /* 0011 */ PTR(370, 1), - /* 0100 */ PTR(372, 1), - /* 0101 */ PTR(374, 1), - /* 0110 */ V(15, 11, 4), - /* 0111 */ PTR(376, 1), - /* 1000 */ V(13, 13, 4), - /* 1001 */ V(10, 15, 4), - /* 1010 */ V(15, 10, 4), - /* 1011 */ V(11, 14, 4), - /* 1100 */ V(14, 11, 4), - /* 1101 */ V(12, 13, 4), - /* 1110 */ V(13, 12, 4), - /* 1111 */ V(9, 15, 4), - - /* 0000 0001 ... */ - /* 0000 */ V(15, 9, 4), /* 136 */ - /* 0001 */ V(14, 10, 4), - /* 0010 */ V(11, 13, 4), - /* 0011 */ V(13, 11, 4), - /* 0100 */ V(8, 15, 4), - /* 0101 */ V(15, 8, 4), - /* 0110 */ V(12, 12, 4), - /* 0111 */ V(9, 14, 4), - /* 1000 */ V(14, 9, 4), - /* 1001 */ V(7, 15, 4), - /* 1010 */ V(15, 7, 4), - /* 1011 */ V(10, 13, 4), - /* 1100 */ V(13, 10, 4), - /* 1101 */ V(11, 12, 4), - /* 1110 */ V(6, 15, 4), - /* 1111 */ PTR(378, 1), - - /* 0000 0010 ... */ - /* 0000 */ V(12, 11, 3), /* 152 */ - /* 0001 */ V(12, 11, 3), - /* 0010 */ V(15, 6, 3), - /* 0011 */ V(15, 6, 3), - /* 0100 */ V(8, 14, 4), - /* 0101 */ V(14, 8, 4), - /* 0110 */ V(5, 15, 4), - /* 0111 */ V(9, 13, 4), - /* 1000 */ V(15, 5, 3), - /* 1001 */ V(15, 5, 3), - /* 1010 */ V(7, 14, 3), - /* 1011 */ V(7, 14, 3), - /* 1100 */ V(14, 7, 3), - /* 1101 */ V(14, 7, 3), - /* 1110 */ V(10, 12, 3), - /* 1111 */ V(10, 12, 3), - - /* 0000 0011 ... */ - /* 0000 */ V(12, 10, 3), /* 168 */ - /* 0001 */ V(12, 10, 3), - /* 0010 */ V(11, 11, 3), - /* 0011 */ V(11, 11, 3), - /* 0100 */ V(13, 9, 4), - /* 0101 */ V(8, 13, 4), - /* 0110 */ V(4, 15, 3), - /* 0111 */ V(4, 15, 3), - /* 1000 */ V(15, 4, 3), - /* 1001 */ V(15, 4, 3), - /* 1010 */ V(3, 15, 3), - /* 1011 */ V(3, 15, 3), - /* 1100 */ V(15, 3, 3), - /* 1101 */ V(15, 3, 3), - /* 1110 */ V(13, 8, 3), - /* 1111 */ V(13, 8, 3), - - /* 0000 0100 ... */ - /* 0000 */ V(14, 6, 3), /* 184 */ - /* 0001 */ V(14, 6, 3), - /* 0010 */ V(2, 15, 3), - /* 0011 */ V(2, 15, 3), - /* 0100 */ V(15, 2, 3), - /* 0101 */ V(15, 2, 3), - /* 0110 */ V(6, 14, 4), - /* 0111 */ V(15, 0, 4), - /* 1000 */ V(1, 15, 3), - /* 1001 */ V(1, 15, 3), - /* 1010 */ V(15, 1, 3), - /* 1011 */ V(15, 1, 3), - /* 1100 */ V(9, 12, 3), - /* 1101 */ V(9, 12, 3), - /* 1110 */ V(12, 9, 3), - /* 1111 */ V(12, 9, 3), - - /* 0000 0101 ... */ - /* 000 */ V(5, 14, 3), /* 200 */ - /* 001 */ V(10, 11, 3), - /* 010 */ V(11, 10, 3), - /* 011 */ V(14, 5, 3), - /* 100 */ V(7, 13, 3), - /* 101 */ V(13, 7, 3), - /* 110 */ V(4, 14, 3), - /* 111 */ V(14, 4, 3), - - /* 0000 0110 ... */ - /* 000 */ V(8, 12, 3), /* 208 */ - /* 001 */ V(12, 8, 3), - /* 010 */ V(3, 14, 3), - /* 011 */ V(6, 13, 3), - /* 100 */ V(13, 6, 3), - /* 101 */ V(14, 3, 3), - /* 110 */ V(9, 11, 3), - /* 111 */ V(11, 9, 3), - - /* 0000 0111 ... */ - /* 0000 */ V(2, 14, 3), /* 216 */ - /* 0001 */ V(2, 14, 3), - /* 0010 */ V(10, 10, 3), - /* 0011 */ V(10, 10, 3), - /* 0100 */ V(14, 2, 3), - /* 0101 */ V(14, 2, 3), - /* 0110 */ V(1, 14, 3), - /* 0111 */ V(1, 14, 3), - /* 1000 */ V(14, 1, 3), - /* 1001 */ V(14, 1, 3), - /* 1010 */ V(0, 14, 4), - /* 1011 */ V(14, 0, 4), - /* 1100 */ V(5, 13, 3), - /* 1101 */ V(5, 13, 3), - /* 1110 */ V(13, 5, 3), - /* 1111 */ V(13, 5, 3), - - /* 0000 1000 ... */ - /* 000 */ V(7, 12, 3), /* 232 */ - /* 001 */ V(12, 7, 3), - /* 010 */ V(4, 13, 3), - /* 011 */ V(8, 11, 3), - /* 100 */ V(13, 4, 2), - /* 101 */ V(13, 4, 2), - /* 110 */ V(11, 8, 3), - /* 111 */ V(9, 10, 3), - - /* 0000 1001 ... */ - /* 000 */ V(10, 9, 3), /* 240 */ - /* 001 */ V(6, 12, 3), - /* 010 */ V(12, 6, 3), - /* 011 */ V(3, 13, 3), - /* 100 */ V(13, 3, 2), - /* 101 */ V(13, 3, 2), - /* 110 */ V(13, 2, 2), - /* 111 */ V(13, 2, 2), - - /* 0000 1010 ... */ - /* 000 */ V(2, 13, 3), /* 248 */ - /* 001 */ V(0, 13, 3), - /* 010 */ V(1, 13, 2), - /* 011 */ V(1, 13, 2), - /* 100 */ V(7, 11, 2), - /* 101 */ V(7, 11, 2), - /* 110 */ V(11, 7, 2), - /* 111 */ V(11, 7, 2), - - /* 0000 1011 ... */ - /* 000 */ V(13, 1, 2), /* 256 */ - /* 001 */ V(13, 1, 2), - /* 010 */ V(5, 12, 3), - /* 011 */ V(13, 0, 3), - /* 100 */ V(12, 5, 2), - /* 101 */ V(12, 5, 2), - /* 110 */ V(8, 10, 2), - /* 111 */ V(8, 10, 2), - - /* 0000 1100 ... */ - /* 00 */ V(10, 8, 2), /* 264 */ - /* 01 */ V(4, 12, 2), - /* 10 */ V(12, 4, 2), - /* 11 */ V(6, 11, 2), - - /* 0000 1101 ... */ - /* 000 */ V(11, 6, 2), /* 268 */ - /* 001 */ V(11, 6, 2), - /* 010 */ V(9, 9, 3), - /* 011 */ V(0, 12, 3), - /* 100 */ V(3, 12, 2), - /* 101 */ V(3, 12, 2), - /* 110 */ V(12, 3, 2), - /* 111 */ V(12, 3, 2), - - /* 0000 1110 ... */ - /* 000 */ V(7, 10, 2), /* 276 */ - /* 001 */ V(7, 10, 2), - /* 010 */ V(10, 7, 2), - /* 011 */ V(10, 7, 2), - /* 100 */ V(10, 6, 2), - /* 101 */ V(10, 6, 2), - /* 110 */ V(12, 0, 3), - /* 111 */ V(0, 11, 3), - - /* 0000 1111 ... */ - /* 00 */ V(12, 2, 1), /* 284 */ - /* 01 */ V(12, 2, 1), - /* 10 */ V(2, 12, 2), - /* 11 */ V(5, 11, 2), - - /* 0001 0000 ... */ - /* 00 */ V(11, 5, 2), /* 288 */ - /* 01 */ V(1, 12, 2), - /* 10 */ V(8, 9, 2), - /* 11 */ V(9, 8, 2), - - /* 0001 0001 ... */ - /* 00 */ V(12, 1, 2), /* 292 */ - /* 01 */ V(4, 11, 2), - /* 10 */ V(11, 4, 2), - /* 11 */ V(6, 10, 2), - - /* 0001 0010 ... */ - /* 00 */ V(3, 11, 2), /* 296 */ - /* 01 */ V(7, 9, 2), - /* 10 */ V(11, 3, 1), - /* 11 */ V(11, 3, 1), - - /* 0001 0011 ... */ - /* 00 */ V(9, 7, 2), /* 300 */ - /* 01 */ V(8, 8, 2), - /* 10 */ V(2, 11, 2), - /* 11 */ V(5, 10, 2), - - /* 0001 0100 ... */ - /* 00 */ V(11, 2, 1), /* 304 */ - /* 01 */ V(11, 2, 1), - /* 10 */ V(10, 5, 2), - /* 11 */ V(1, 11, 2), - - /* 0001 0101 ... */ - /* 00 */ V(11, 1, 1), /* 308 */ - /* 01 */ V(11, 1, 1), - /* 10 */ V(11, 0, 2), - /* 11 */ V(6, 9, 2), - - /* 0001 0110 ... */ - /* 00 */ V(9, 6, 2), /* 312 */ - /* 01 */ V(4, 10, 2), - /* 10 */ V(10, 4, 2), - /* 11 */ V(7, 8, 2), - - /* 0001 0111 ... */ - /* 00 */ V(8, 7, 2), /* 316 */ - /* 01 */ V(3, 10, 2), - /* 10 */ V(10, 3, 1), - /* 11 */ V(10, 3, 1), - - /* 0001 1000 ... */ - /* 0 */ V(5, 9, 1), /* 320 */ - /* 1 */ V(9, 5, 1), - - /* 0001 1001 ... */ - /* 0 */ V(2, 10, 1), /* 322 */ - /* 1 */ V(10, 2, 1), - - /* 0001 1010 ... */ - /* 0 */ V(1, 10, 1), /* 324 */ - /* 1 */ V(10, 1, 1), - - /* 0001 1011 ... */ - /* 00 */ V(0, 10, 2), /* 326 */ - /* 01 */ V(10, 0, 2), - /* 10 */ V(6, 8, 1), - /* 11 */ V(6, 8, 1), - - /* 0001 1100 ... */ - /* 0 */ V(8, 6, 1), /* 330 */ - /* 1 */ V(4, 9, 1), - - /* 0001 1101 ... */ - /* 0 */ V(9, 4, 1), /* 332 */ - /* 1 */ V(3, 9, 1), - - /* 0001 1110 ... */ - /* 00 */ V(9, 3, 1), /* 334 */ - /* 01 */ V(9, 3, 1), - /* 10 */ V(7, 7, 2), - /* 11 */ V(0, 9, 2), - - /* 0001 1111 ... */ - /* 0 */ V(5, 8, 1), /* 338 */ - /* 1 */ V(8, 5, 1), - - /* 0010 0000 ... */ - /* 0 */ V(2, 9, 1), /* 340 */ - /* 1 */ V(6, 7, 1), - - /* 0010 0001 ... */ - /* 0 */ V(7, 6, 1), /* 342 */ - /* 1 */ V(9, 2, 1), - - /* 0010 0011 ... */ - /* 0 */ V(1, 9, 1), /* 344 */ - /* 1 */ V(9, 0, 1), - - /* 0010 0100 ... */ - /* 0 */ V(4, 8, 1), /* 346 */ - /* 1 */ V(8, 4, 1), - - /* 0010 0101 ... */ - /* 0 */ V(5, 7, 1), /* 348 */ - /* 1 */ V(7, 5, 1), - - /* 0010 0110 ... */ - /* 0 */ V(3, 8, 1), /* 350 */ - /* 1 */ V(8, 3, 1), - - /* 0010 0111 ... */ - /* 0 */ V(6, 6, 1), /* 352 */ - /* 1 */ V(4, 7, 1), - - /* 0010 1100 ... */ - /* 0 */ V(7, 4, 1), /* 354 */ - /* 1 */ V(0, 8, 1), - - /* 0010 1101 ... */ - /* 0 */ V(8, 0, 1), /* 356 */ - /* 1 */ V(5, 6, 1), - - /* 0010 1110 ... */ - /* 0 */ V(6, 5, 1), /* 358 */ - /* 1 */ V(3, 7, 1), - - /* 0010 1111 ... */ - /* 0 */ V(7, 3, 1), /* 360 */ - /* 1 */ V(4, 6, 1), - - /* 0011 0110 ... */ - /* 0 */ V(0, 7, 1), /* 362 */ - /* 1 */ V(7, 0, 1), - - /* 0011 1110 ... */ - /* 0 */ V(0, 6, 1), /* 364 */ - /* 1 */ V(6, 0, 1), - - /* 0000 0000 0000 ... */ - /* 0 */ V(15, 15, 1), /* 366 */ - /* 1 */ V(14, 15, 1), - - /* 0000 0000 0001 ... */ - /* 0 */ V(15, 14, 1), /* 368 */ - /* 1 */ V(13, 15, 1), - - /* 0000 0000 0011 ... */ - /* 0 */ V(15, 13, 1), /* 370 */ - /* 1 */ V(12, 15, 1), - - /* 0000 0000 0100 ... */ - /* 0 */ V(15, 12, 1), /* 372 */ - /* 1 */ V(13, 14, 1), - - /* 0000 0000 0101 ... */ - /* 0 */ V(14, 13, 1), /* 374 */ - /* 1 */ V(11, 15, 1), - - /* 0000 0000 0111 ... */ - /* 0 */ V(12, 14, 1), /* 376 */ - /* 1 */ V(14, 12, 1), - - /* 0000 0001 1111 ... */ - /* 0 */ V(10, 14, 1), /* 378 */ - /* 1 */ V(0, 15, 1) -]; - -const hufftab16 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ PTR(64, 2), - /* 0100 */ V(1, 1, 4), - /* 0101 */ V(0, 1, 4), - /* 0110 */ V(1, 0, 3), - /* 0111 */ V(1, 0, 3), - /* 1000 */ V(0, 0, 1), - /* 1001 */ V(0, 0, 1), - /* 1010 */ V(0, 0, 1), - /* 1011 */ V(0, 0, 1), - /* 1100 */ V(0, 0, 1), - /* 1101 */ V(0, 0, 1), - /* 1110 */ V(0, 0, 1), - /* 1111 */ V(0, 0, 1), - - /* 0000 ... */ - /* 0000 */ PTR(68, 3), /* 16 */ - /* 0001 */ PTR(76, 3), - /* 0010 */ PTR(84, 2), - /* 0011 */ V(15, 15, 4), - /* 0100 */ PTR(88, 2), - /* 0101 */ PTR(92, 1), - /* 0110 */ PTR(94, 4), - /* 0111 */ V(15, 2, 4), - /* 1000 */ PTR(110, 1), - /* 1001 */ V(1, 15, 4), - /* 1010 */ V(15, 1, 4), - /* 1011 */ PTR(112, 4), - /* 1100 */ PTR(128, 4), - /* 1101 */ PTR(144, 4), - /* 1110 */ PTR(160, 4), - /* 1111 */ PTR(176, 4), - - /* 0001 ... */ - /* 0000 */ PTR(192, 4), /* 32 */ - /* 0001 */ PTR(208, 3), - /* 0010 */ PTR(216, 3), - /* 0011 */ PTR(224, 3), - /* 0100 */ PTR(232, 3), - /* 0101 */ PTR(240, 3), - /* 0110 */ PTR(248, 3), - /* 0111 */ PTR(256, 3), - /* 1000 */ PTR(264, 2), - /* 1001 */ PTR(268, 2), - /* 1010 */ PTR(272, 1), - /* 1011 */ PTR(274, 2), - /* 1100 */ PTR(278, 2), - /* 1101 */ PTR(282, 1), - /* 1110 */ V(5, 1, 4), - /* 1111 */ PTR(284, 1), - - /* 0010 ... */ - /* 0000 */ PTR(286, 1), /* 48 */ - /* 0001 */ PTR(288, 1), - /* 0010 */ PTR(290, 1), - /* 0011 */ V(1, 4, 4), - /* 0100 */ V(4, 1, 4), - /* 0101 */ PTR(292, 1), - /* 0110 */ V(2, 3, 4), - /* 0111 */ V(3, 2, 4), - /* 1000 */ V(1, 3, 3), - /* 1001 */ V(1, 3, 3), - /* 1010 */ V(3, 1, 3), - /* 1011 */ V(3, 1, 3), - /* 1100 */ V(0, 3, 4), - /* 1101 */ V(3, 0, 4), - /* 1110 */ V(2, 2, 3), - /* 1111 */ V(2, 2, 3), - - /* 0011 ... */ - /* 00 */ V(1, 2, 2), /* 64 */ - /* 01 */ V(2, 1, 2), - /* 10 */ V(0, 2, 2), - /* 11 */ V(2, 0, 2), - - /* 0000 0000 ... */ - /* 000 */ V(14, 15, 3), /* 68 */ - /* 001 */ V(15, 14, 3), - /* 010 */ V(13, 15, 3), - /* 011 */ V(15, 13, 3), - /* 100 */ V(12, 15, 3), - /* 101 */ V(15, 12, 3), - /* 110 */ V(11, 15, 3), - /* 111 */ V(15, 11, 3), - - /* 0000 0001 ... */ - /* 000 */ V(10, 15, 2), /* 76 */ - /* 001 */ V(10, 15, 2), - /* 010 */ V(15, 10, 3), - /* 011 */ V(9, 15, 3), - /* 100 */ V(15, 9, 3), - /* 101 */ V(15, 8, 3), - /* 110 */ V(8, 15, 2), - /* 111 */ V(8, 15, 2), - - /* 0000 0010 ... */ - /* 00 */ V(7, 15, 2), /* 84 */ - /* 01 */ V(15, 7, 2), - /* 10 */ V(6, 15, 2), - /* 11 */ V(15, 6, 2), - - /* 0000 0100 ... */ - /* 00 */ V(5, 15, 2), /* 88 */ - /* 01 */ V(15, 5, 2), - /* 10 */ V(4, 15, 1), - /* 11 */ V(4, 15, 1), - - /* 0000 0101 ... */ - /* 0 */ V(15, 4, 1), /* 92 */ - /* 1 */ V(15, 3, 1), - - /* 0000 0110 ... */ - /* 0000 */ V(15, 0, 1), /* 94 */ - /* 0001 */ V(15, 0, 1), - /* 0010 */ V(15, 0, 1), - /* 0011 */ V(15, 0, 1), - /* 0100 */ V(15, 0, 1), - /* 0101 */ V(15, 0, 1), - /* 0110 */ V(15, 0, 1), - /* 0111 */ V(15, 0, 1), - /* 1000 */ V(3, 15, 2), - /* 1001 */ V(3, 15, 2), - /* 1010 */ V(3, 15, 2), - /* 1011 */ V(3, 15, 2), - /* 1100 */ PTR(294, 4), - /* 1101 */ PTR(310, 3), - /* 1110 */ PTR(318, 3), - /* 1111 */ PTR(326, 3), - - /* 0000 1000 ... */ - /* 0 */ V(2, 15, 1), /* 110 */ - /* 1 */ V(0, 15, 1), - - /* 0000 1011 ... */ - /* 0000 */ PTR(334, 2), /* 112 */ - /* 0001 */ PTR(338, 2), - /* 0010 */ PTR(342, 2), - /* 0011 */ PTR(346, 1), - /* 0100 */ PTR(348, 2), - /* 0101 */ PTR(352, 2), - /* 0110 */ PTR(356, 1), - /* 0111 */ PTR(358, 2), - /* 1000 */ PTR(362, 2), - /* 1001 */ PTR(366, 2), - /* 1010 */ PTR(370, 2), - /* 1011 */ V(14, 3, 4), - /* 1100 */ PTR(374, 1), - /* 1101 */ PTR(376, 1), - /* 1110 */ PTR(378, 1), - /* 1111 */ PTR(380, 1), - - /* 0000 1100 ... */ - /* 0000 */ PTR(382, 1), /* 128 */ - /* 0001 */ PTR(384, 1), - /* 0010 */ PTR(386, 1), - /* 0011 */ V(0, 13, 4), - /* 0100 */ PTR(388, 1), - /* 0101 */ PTR(390, 1), - /* 0110 */ PTR(392, 1), - /* 0111 */ V(3, 12, 4), - /* 1000 */ PTR(394, 1), - /* 1001 */ V(1, 12, 4), - /* 1010 */ V(12, 0, 4), - /* 1011 */ PTR(396, 1), - /* 1100 */ V(14, 2, 3), - /* 1101 */ V(14, 2, 3), - /* 1110 */ V(2, 14, 4), - /* 1111 */ V(1, 14, 4), - - /* 0000 1101 ... */ - /* 0000 */ V(13, 3, 4), /* 144 */ - /* 0001 */ V(2, 13, 4), - /* 0010 */ V(13, 2, 4), - /* 0011 */ V(13, 1, 4), - /* 0100 */ V(3, 11, 4), - /* 0101 */ PTR(398, 1), - /* 0110 */ V(1, 13, 3), - /* 0111 */ V(1, 13, 3), - /* 1000 */ V(12, 4, 4), - /* 1001 */ V(6, 11, 4), - /* 1010 */ V(12, 3, 4), - /* 1011 */ V(10, 7, 4), - /* 1100 */ V(2, 12, 3), - /* 1101 */ V(2, 12, 3), - /* 1110 */ V(12, 2, 4), - /* 1111 */ V(11, 5, 4), - - /* 0000 1110 ... */ - /* 0000 */ V(12, 1, 4), /* 160 */ - /* 0001 */ V(0, 12, 4), - /* 0010 */ V(4, 11, 4), - /* 0011 */ V(11, 4, 4), - /* 0100 */ V(6, 10, 4), - /* 0101 */ V(10, 6, 4), - /* 0110 */ V(11, 3, 3), - /* 0111 */ V(11, 3, 3), - /* 1000 */ V(5, 10, 4), - /* 1001 */ V(10, 5, 4), - /* 1010 */ V(2, 11, 3), - /* 1011 */ V(2, 11, 3), - /* 1100 */ V(11, 2, 3), - /* 1101 */ V(11, 2, 3), - /* 1110 */ V(1, 11, 3), - /* 1111 */ V(1, 11, 3), - - /* 0000 1111 ... */ - /* 0000 */ V(11, 1, 3), /* 176 */ - /* 0001 */ V(11, 1, 3), - /* 0010 */ V(0, 11, 4), - /* 0011 */ V(11, 0, 4), - /* 0100 */ V(6, 9, 4), - /* 0101 */ V(9, 6, 4), - /* 0110 */ V(4, 10, 4), - /* 0111 */ V(10, 4, 4), - /* 1000 */ V(7, 8, 4), - /* 1001 */ V(8, 7, 4), - /* 1010 */ V(10, 3, 3), - /* 1011 */ V(10, 3, 3), - /* 1100 */ V(3, 10, 4), - /* 1101 */ V(5, 9, 4), - /* 1110 */ V(2, 10, 3), - /* 1111 */ V(2, 10, 3), - - /* 0001 0000 ... */ - /* 0000 */ V(9, 5, 4), /* 192 */ - /* 0001 */ V(6, 8, 4), - /* 0010 */ V(10, 1, 3), - /* 0011 */ V(10, 1, 3), - /* 0100 */ V(8, 6, 4), - /* 0101 */ V(7, 7, 4), - /* 0110 */ V(9, 4, 3), - /* 0111 */ V(9, 4, 3), - /* 1000 */ V(4, 9, 4), - /* 1001 */ V(5, 7, 4), - /* 1010 */ V(6, 7, 3), - /* 1011 */ V(6, 7, 3), - /* 1100 */ V(10, 2, 2), - /* 1101 */ V(10, 2, 2), - /* 1110 */ V(10, 2, 2), - /* 1111 */ V(10, 2, 2), - - /* 0001 0001 ... */ - /* 000 */ V(1, 10, 2), /* 208 */ - /* 001 */ V(1, 10, 2), - /* 010 */ V(0, 10, 3), - /* 011 */ V(10, 0, 3), - /* 100 */ V(3, 9, 3), - /* 101 */ V(9, 3, 3), - /* 110 */ V(5, 8, 3), - /* 111 */ V(8, 5, 3), - - /* 0001 0010 ... */ - /* 000 */ V(2, 9, 2), /* 216 */ - /* 001 */ V(2, 9, 2), - /* 010 */ V(9, 2, 2), - /* 011 */ V(9, 2, 2), - /* 100 */ V(7, 6, 3), - /* 101 */ V(0, 9, 3), - /* 110 */ V(1, 9, 2), - /* 111 */ V(1, 9, 2), - - /* 0001 0011 ... */ - /* 000 */ V(9, 1, 2), /* 224 */ - /* 001 */ V(9, 1, 2), - /* 010 */ V(9, 0, 3), - /* 011 */ V(4, 8, 3), - /* 100 */ V(8, 4, 3), - /* 101 */ V(7, 5, 3), - /* 110 */ V(3, 8, 3), - /* 111 */ V(8, 3, 3), - - /* 0001 0100 ... */ - /* 000 */ V(6, 6, 3), /* 232 */ - /* 001 */ V(2, 8, 3), - /* 010 */ V(8, 2, 2), - /* 011 */ V(8, 2, 2), - /* 100 */ V(4, 7, 3), - /* 101 */ V(7, 4, 3), - /* 110 */ V(1, 8, 2), - /* 111 */ V(1, 8, 2), - - /* 0001 0101 ... */ - /* 000 */ V(8, 1, 2), /* 240 */ - /* 001 */ V(8, 1, 2), - /* 010 */ V(8, 0, 2), - /* 011 */ V(8, 0, 2), - /* 100 */ V(0, 8, 3), - /* 101 */ V(5, 6, 3), - /* 110 */ V(3, 7, 2), - /* 111 */ V(3, 7, 2), - - /* 0001 0110 ... */ - /* 000 */ V(7, 3, 2), /* 248 */ - /* 001 */ V(7, 3, 2), - /* 010 */ V(6, 5, 3), - /* 011 */ V(4, 6, 3), - /* 100 */ V(2, 7, 2), - /* 101 */ V(2, 7, 2), - /* 110 */ V(7, 2, 2), - /* 111 */ V(7, 2, 2), - - /* 0001 0111 ... */ - /* 000 */ V(6, 4, 3), /* 256 */ - /* 001 */ V(5, 5, 3), - /* 010 */ V(0, 7, 2), - /* 011 */ V(0, 7, 2), - /* 100 */ V(1, 7, 1), - /* 101 */ V(1, 7, 1), - /* 110 */ V(1, 7, 1), - /* 111 */ V(1, 7, 1), - - /* 0001 1000 ... */ - /* 00 */ V(7, 1, 1), /* 264 */ - /* 01 */ V(7, 1, 1), - /* 10 */ V(7, 0, 2), - /* 11 */ V(3, 6, 2), - - /* 0001 1001 ... */ - /* 00 */ V(6, 3, 2), /* 268 */ - /* 01 */ V(4, 5, 2), - /* 10 */ V(5, 4, 2), - /* 11 */ V(2, 6, 2), - - /* 0001 1010 ... */ - /* 0 */ V(6, 2, 1), /* 272 */ - /* 1 */ V(1, 6, 1), - - /* 0001 1011 ... */ - /* 00 */ V(6, 1, 1), /* 274 */ - /* 01 */ V(6, 1, 1), - /* 10 */ V(0, 6, 2), - /* 11 */ V(6, 0, 2), - - /* 0001 1100 ... */ - /* 00 */ V(5, 3, 1), /* 278 */ - /* 01 */ V(5, 3, 1), - /* 10 */ V(3, 5, 2), - /* 11 */ V(4, 4, 2), - - /* 0001 1101 ... */ - /* 0 */ V(2, 5, 1), /* 282 */ - /* 1 */ V(5, 2, 1), - - /* 0001 1111 ... */ - /* 0 */ V(1, 5, 1), /* 284 */ - /* 1 */ V(0, 5, 1), - - /* 0010 0000 ... */ - /* 0 */ V(3, 4, 1), /* 286 */ - /* 1 */ V(4, 3, 1), - - /* 0010 0001 ... */ - /* 0 */ V(5, 0, 1), /* 288 */ - /* 1 */ V(2, 4, 1), - - /* 0010 0010 ... */ - /* 0 */ V(4, 2, 1), /* 290 */ - /* 1 */ V(3, 3, 1), - - /* 0010 0101 ... */ - /* 0 */ V(0, 4, 1), /* 292 */ - /* 1 */ V(4, 0, 1), - - /* 0000 0110 1100 ... */ - /* 0000 */ V(12, 14, 4), /* 294 */ - /* 0001 */ PTR(400, 1), - /* 0010 */ V(13, 14, 3), - /* 0011 */ V(13, 14, 3), - /* 0100 */ V(14, 9, 3), - /* 0101 */ V(14, 9, 3), - /* 0110 */ V(14, 10, 4), - /* 0111 */ V(13, 9, 4), - /* 1000 */ V(14, 14, 2), - /* 1001 */ V(14, 14, 2), - /* 1010 */ V(14, 14, 2), - /* 1011 */ V(14, 14, 2), - /* 1100 */ V(14, 13, 3), - /* 1101 */ V(14, 13, 3), - /* 1110 */ V(14, 11, 3), - /* 1111 */ V(14, 11, 3), - - /* 0000 0110 1101 ... */ - /* 000 */ V(11, 14, 2), /* 310 */ - /* 001 */ V(11, 14, 2), - /* 010 */ V(12, 13, 2), - /* 011 */ V(12, 13, 2), - /* 100 */ V(13, 12, 3), - /* 101 */ V(13, 11, 3), - /* 110 */ V(10, 14, 2), - /* 111 */ V(10, 14, 2), - - /* 0000 0110 1110 ... */ - /* 000 */ V(12, 12, 2), /* 318 */ - /* 001 */ V(12, 12, 2), - /* 010 */ V(10, 13, 3), - /* 011 */ V(13, 10, 3), - /* 100 */ V(7, 14, 3), - /* 101 */ V(10, 12, 3), - /* 110 */ V(12, 10, 2), - /* 111 */ V(12, 10, 2), - - /* 0000 0110 1111 ... */ - /* 000 */ V(12, 9, 3), /* 326 */ - /* 001 */ V(7, 13, 3), - /* 010 */ V(5, 14, 2), - /* 011 */ V(5, 14, 2), - /* 100 */ V(11, 13, 1), - /* 101 */ V(11, 13, 1), - /* 110 */ V(11, 13, 1), - /* 111 */ V(11, 13, 1), - - /* 0000 1011 0000 ... */ - /* 00 */ V(9, 14, 1), /* 334 */ - /* 01 */ V(9, 14, 1), - /* 10 */ V(11, 12, 2), - /* 11 */ V(12, 11, 2), - - /* 0000 1011 0001 ... */ - /* 00 */ V(8, 14, 2), /* 338 */ - /* 01 */ V(14, 8, 2), - /* 10 */ V(9, 13, 2), - /* 11 */ V(14, 7, 2), - - /* 0000 1011 0010 ... */ - /* 00 */ V(11, 11, 2), /* 342 */ - /* 01 */ V(8, 13, 2), - /* 10 */ V(13, 8, 2), - /* 11 */ V(6, 14, 2), - - /* 0000 1011 0011 ... */ - /* 0 */ V(14, 6, 1), /* 346 */ - /* 1 */ V(9, 12, 1), - - /* 0000 1011 0100 ... */ - /* 00 */ V(10, 11, 2), /* 348 */ - /* 01 */ V(11, 10, 2), - /* 10 */ V(14, 5, 2), - /* 11 */ V(13, 7, 2), - - /* 0000 1011 0101 ... */ - /* 00 */ V(4, 14, 1), /* 352 */ - /* 01 */ V(4, 14, 1), - /* 10 */ V(14, 4, 2), - /* 11 */ V(8, 12, 2), - - /* 0000 1011 0110 ... */ - /* 0 */ V(12, 8, 1), /* 356 */ - /* 1 */ V(3, 14, 1), - - /* 0000 1011 0111 ... */ - /* 00 */ V(6, 13, 1), /* 358 */ - /* 01 */ V(6, 13, 1), - /* 10 */ V(13, 6, 2), - /* 11 */ V(9, 11, 2), - - /* 0000 1011 1000 ... */ - /* 00 */ V(11, 9, 2), /* 362 */ - /* 01 */ V(10, 10, 2), - /* 10 */ V(14, 1, 1), - /* 11 */ V(14, 1, 1), - - /* 0000 1011 1001 ... */ - /* 00 */ V(13, 4, 1), /* 366 */ - /* 01 */ V(13, 4, 1), - /* 10 */ V(11, 8, 2), - /* 11 */ V(10, 9, 2), - - /* 0000 1011 1010 ... */ - /* 00 */ V(7, 11, 1), /* 370 */ - /* 01 */ V(7, 11, 1), - /* 10 */ V(11, 7, 2), - /* 11 */ V(13, 0, 2), - - /* 0000 1011 1100 ... */ - /* 0 */ V(0, 14, 1), /* 374 */ - /* 1 */ V(14, 0, 1), - - /* 0000 1011 1101 ... */ - /* 0 */ V(5, 13, 1), /* 376 */ - /* 1 */ V(13, 5, 1), - - /* 0000 1011 1110 ... */ - /* 0 */ V(7, 12, 1), /* 378 */ - /* 1 */ V(12, 7, 1), - - /* 0000 1011 1111 ... */ - /* 0 */ V(4, 13, 1), /* 380 */ - /* 1 */ V(8, 11, 1), - - /* 0000 1100 0000 ... */ - /* 0 */ V(9, 10, 1), /* 382 */ - /* 1 */ V(6, 12, 1), - - /* 0000 1100 0001 ... */ - /* 0 */ V(12, 6, 1), /* 384 */ - /* 1 */ V(3, 13, 1), - - /* 0000 1100 0010 ... */ - /* 0 */ V(5, 12, 1), /* 386 */ - /* 1 */ V(12, 5, 1), - - /* 0000 1100 0100 ... */ - /* 0 */ V(8, 10, 1), /* 388 */ - /* 1 */ V(10, 8, 1), - - /* 0000 1100 0101 ... */ - /* 0 */ V(9, 9, 1), /* 390 */ - /* 1 */ V(4, 12, 1), - - /* 0000 1100 0110 ... */ - /* 0 */ V(11, 6, 1), /* 392 */ - /* 1 */ V(7, 10, 1), - - /* 0000 1100 1000 ... */ - /* 0 */ V(5, 11, 1), /* 394 */ - /* 1 */ V(8, 9, 1), - - /* 0000 1100 1011 ... */ - /* 0 */ V(9, 8, 1), /* 396 */ - /* 1 */ V(7, 9, 1), - - /* 0000 1101 0101 ... */ - /* 0 */ V(9, 7, 1), /* 398 */ - /* 1 */ V(8, 8, 1), - - /* 0000 0110 1100 0001 ... */ - /* 0 */ V(14, 12, 1), /* 400 */ - /* 1 */ V(13, 13, 1) -]; - -const hufftab24 = [ - /* 0000 */ PTR(16, 4), - /* 0001 */ PTR(32, 4), - /* 0010 */ PTR(48, 4), - /* 0011 */ V(15, 15, 4), - /* 0100 */ PTR(64, 4), - /* 0101 */ PTR(80, 4), - /* 0110 */ PTR(96, 4), - /* 0111 */ PTR(112, 4), - /* 1000 */ PTR(128, 4), - /* 1001 */ PTR(144, 4), - /* 1010 */ PTR(160, 3), - /* 1011 */ PTR(168, 2), - /* 1100 */ V(1, 1, 4), - /* 1101 */ V(0, 1, 4), - /* 1110 */ V(1, 0, 4), - /* 1111 */ V(0, 0, 4), - - /* 0000 ... */ - /* 0000 */ V(14, 15, 4), /* 16 */ - /* 0001 */ V(15, 14, 4), - /* 0010 */ V(13, 15, 4), - /* 0011 */ V(15, 13, 4), - /* 0100 */ V(12, 15, 4), - /* 0101 */ V(15, 12, 4), - /* 0110 */ V(11, 15, 4), - /* 0111 */ V(15, 11, 4), - /* 1000 */ V(15, 10, 3), - /* 1001 */ V(15, 10, 3), - /* 1010 */ V(10, 15, 4), - /* 1011 */ V(9, 15, 4), - /* 1100 */ V(15, 9, 3), - /* 1101 */ V(15, 9, 3), - /* 1110 */ V(15, 8, 3), - /* 1111 */ V(15, 8, 3), - - /* 0001 ... */ - /* 0000 */ V(8, 15, 4), /* 32 */ - /* 0001 */ V(7, 15, 4), - /* 0010 */ V(15, 7, 3), - /* 0011 */ V(15, 7, 3), - /* 0100 */ V(6, 15, 3), - /* 0101 */ V(6, 15, 3), - /* 0110 */ V(15, 6, 3), - /* 0111 */ V(15, 6, 3), - /* 1000 */ V(5, 15, 3), - /* 1001 */ V(5, 15, 3), - /* 1010 */ V(15, 5, 3), - /* 1011 */ V(15, 5, 3), - /* 1100 */ V(4, 15, 3), - /* 1101 */ V(4, 15, 3), - /* 1110 */ V(15, 4, 3), - /* 1111 */ V(15, 4, 3), - - /* 0010 ... */ - /* 0000 */ V(3, 15, 3), /* 48 */ - /* 0001 */ V(3, 15, 3), - /* 0010 */ V(15, 3, 3), - /* 0011 */ V(15, 3, 3), - /* 0100 */ V(2, 15, 3), - /* 0101 */ V(2, 15, 3), - /* 0110 */ V(15, 2, 3), - /* 0111 */ V(15, 2, 3), - /* 1000 */ V(15, 1, 3), - /* 1001 */ V(15, 1, 3), - /* 1010 */ V(1, 15, 4), - /* 1011 */ V(15, 0, 4), - /* 1100 */ PTR(172, 3), - /* 1101 */ PTR(180, 3), - /* 1110 */ PTR(188, 3), - /* 1111 */ PTR(196, 3), - - /* 0100 ... */ - /* 0000 */ PTR(204, 4), /* 64 */ - /* 0001 */ PTR(220, 3), - /* 0010 */ PTR(228, 3), - /* 0011 */ PTR(236, 3), - /* 0100 */ PTR(244, 2), - /* 0101 */ PTR(248, 2), - /* 0110 */ PTR(252, 2), - /* 0111 */ PTR(256, 2), - /* 1000 */ PTR(260, 2), - /* 1001 */ PTR(264, 2), - /* 1010 */ PTR(268, 2), - /* 1011 */ PTR(272, 2), - /* 1100 */ PTR(276, 2), - /* 1101 */ PTR(280, 3), - /* 1110 */ PTR(288, 2), - /* 1111 */ PTR(292, 2), - - /* 0101 ... */ - /* 0000 */ PTR(296, 2), /* 80 */ - /* 0001 */ PTR(300, 3), - /* 0010 */ PTR(308, 2), - /* 0011 */ PTR(312, 3), - /* 0100 */ PTR(320, 1), - /* 0101 */ PTR(322, 2), - /* 0110 */ PTR(326, 2), - /* 0111 */ PTR(330, 1), - /* 1000 */ PTR(332, 2), - /* 1001 */ PTR(336, 1), - /* 1010 */ PTR(338, 1), - /* 1011 */ PTR(340, 1), - /* 1100 */ PTR(342, 1), - /* 1101 */ PTR(344, 1), - /* 1110 */ PTR(346, 1), - /* 1111 */ PTR(348, 1), - - /* 0110 ... */ - /* 0000 */ PTR(350, 1), /* 96 */ - /* 0001 */ PTR(352, 1), - /* 0010 */ PTR(354, 1), - /* 0011 */ PTR(356, 1), - /* 0100 */ PTR(358, 1), - /* 0101 */ PTR(360, 1), - /* 0110 */ PTR(362, 1), - /* 0111 */ PTR(364, 1), - /* 1000 */ PTR(366, 1), - /* 1001 */ PTR(368, 1), - /* 1010 */ PTR(370, 2), - /* 1011 */ PTR(374, 1), - /* 1100 */ PTR(376, 2), - /* 1101 */ V(7, 3, 4), - /* 1110 */ PTR(380, 1), - /* 1111 */ V(7, 2, 4), - - /* 0111 ... */ - /* 0000 */ V(4, 6, 4), /* 112 */ - /* 0001 */ V(6, 4, 4), - /* 0010 */ V(5, 5, 4), - /* 0011 */ V(7, 1, 4), - /* 0100 */ V(3, 6, 4), - /* 0101 */ V(6, 3, 4), - /* 0110 */ V(4, 5, 4), - /* 0111 */ V(5, 4, 4), - /* 1000 */ V(2, 6, 4), - /* 1001 */ V(6, 2, 4), - /* 1010 */ V(1, 6, 4), - /* 1011 */ V(6, 1, 4), - /* 1100 */ PTR(382, 1), - /* 1101 */ V(3, 5, 4), - /* 1110 */ V(5, 3, 4), - /* 1111 */ V(4, 4, 4), - - /* 1000 ... */ - /* 0000 */ V(2, 5, 4), /* 128 */ - /* 0001 */ V(5, 2, 4), - /* 0010 */ V(1, 5, 4), - /* 0011 */ PTR(384, 1), - /* 0100 */ V(5, 1, 3), - /* 0101 */ V(5, 1, 3), - /* 0110 */ V(3, 4, 4), - /* 0111 */ V(4, 3, 4), - /* 1000 */ V(2, 4, 3), - /* 1001 */ V(2, 4, 3), - /* 1010 */ V(4, 2, 3), - /* 1011 */ V(4, 2, 3), - /* 1100 */ V(3, 3, 3), - /* 1101 */ V(3, 3, 3), - /* 1110 */ V(1, 4, 3), - /* 1111 */ V(1, 4, 3), - - /* 1001 ... */ - /* 0000 */ V(4, 1, 3), /* 144 */ - /* 0001 */ V(4, 1, 3), - /* 0010 */ V(0, 4, 4), - /* 0011 */ V(4, 0, 4), - /* 0100 */ V(2, 3, 3), - /* 0101 */ V(2, 3, 3), - /* 0110 */ V(3, 2, 3), - /* 0111 */ V(3, 2, 3), - /* 1000 */ V(1, 3, 2), - /* 1001 */ V(1, 3, 2), - /* 1010 */ V(1, 3, 2), - /* 1011 */ V(1, 3, 2), - /* 1100 */ V(3, 1, 2), - /* 1101 */ V(3, 1, 2), - /* 1110 */ V(3, 1, 2), - /* 1111 */ V(3, 1, 2), - - /* 1010 ... */ - /* 000 */ V(0, 3, 3), /* 160 */ - /* 001 */ V(3, 0, 3), - /* 010 */ V(2, 2, 2), - /* 011 */ V(2, 2, 2), - /* 100 */ V(1, 2, 1), - /* 101 */ V(1, 2, 1), - /* 110 */ V(1, 2, 1), - /* 111 */ V(1, 2, 1), - - /* 1011 ... */ - /* 00 */ V(2, 1, 1), /* 168 */ - /* 01 */ V(2, 1, 1), - /* 10 */ V(0, 2, 2), - /* 11 */ V(2, 0, 2), - - /* 0010 1100 ... */ - /* 000 */ V(0, 15, 1), /* 172 */ - /* 001 */ V(0, 15, 1), - /* 010 */ V(0, 15, 1), - /* 011 */ V(0, 15, 1), - /* 100 */ V(14, 14, 3), - /* 101 */ V(13, 14, 3), - /* 110 */ V(14, 13, 3), - /* 111 */ V(12, 14, 3), - - /* 0010 1101 ... */ - /* 000 */ V(14, 12, 3), /* 180 */ - /* 001 */ V(13, 13, 3), - /* 010 */ V(11, 14, 3), - /* 011 */ V(14, 11, 3), - /* 100 */ V(12, 13, 3), - /* 101 */ V(13, 12, 3), - /* 110 */ V(10, 14, 3), - /* 111 */ V(14, 10, 3), - - /* 0010 1110 ... */ - /* 000 */ V(11, 13, 3), /* 188 */ - /* 001 */ V(13, 11, 3), - /* 010 */ V(12, 12, 3), - /* 011 */ V(9, 14, 3), - /* 100 */ V(14, 9, 3), - /* 101 */ V(10, 13, 3), - /* 110 */ V(13, 10, 3), - /* 111 */ V(11, 12, 3), - - /* 0010 1111 ... */ - /* 000 */ V(12, 11, 3), /* 196 */ - /* 001 */ V(8, 14, 3), - /* 010 */ V(14, 8, 3), - /* 011 */ V(9, 13, 3), - /* 100 */ V(13, 9, 3), - /* 101 */ V(7, 14, 3), - /* 110 */ V(14, 7, 3), - /* 111 */ V(10, 12, 3), - - /* 0100 0000 ... */ - /* 0000 */ V(12, 10, 3), /* 204 */ - /* 0001 */ V(12, 10, 3), - /* 0010 */ V(11, 11, 3), - /* 0011 */ V(11, 11, 3), - /* 0100 */ V(8, 13, 3), - /* 0101 */ V(8, 13, 3), - /* 0110 */ V(13, 8, 3), - /* 0111 */ V(13, 8, 3), - /* 1000 */ V(0, 14, 4), - /* 1001 */ V(14, 0, 4), - /* 1010 */ V(0, 13, 3), - /* 1011 */ V(0, 13, 3), - /* 1100 */ V(14, 6, 2), - /* 1101 */ V(14, 6, 2), - /* 1110 */ V(14, 6, 2), - /* 1111 */ V(14, 6, 2), - - /* 0100 0001 ... */ - /* 000 */ V(6, 14, 3), /* 220 */ - /* 001 */ V(9, 12, 3), - /* 010 */ V(12, 9, 2), - /* 011 */ V(12, 9, 2), - /* 100 */ V(5, 14, 2), - /* 101 */ V(5, 14, 2), - /* 110 */ V(11, 10, 2), - /* 111 */ V(11, 10, 2), - - /* 0100 0010 ... */ - /* 000 */ V(14, 5, 2), /* 228 */ - /* 001 */ V(14, 5, 2), - /* 010 */ V(10, 11, 3), - /* 011 */ V(7, 13, 3), - /* 100 */ V(13, 7, 2), - /* 101 */ V(13, 7, 2), - /* 110 */ V(14, 4, 2), - /* 111 */ V(14, 4, 2), - - /* 0100 0011 ... */ - /* 000 */ V(8, 12, 2), /* 236 */ - /* 001 */ V(8, 12, 2), - /* 010 */ V(12, 8, 2), - /* 011 */ V(12, 8, 2), - /* 100 */ V(4, 14, 3), - /* 101 */ V(2, 14, 3), - /* 110 */ V(3, 14, 2), - /* 111 */ V(3, 14, 2), - - /* 0100 0100 ... */ - /* 00 */ V(6, 13, 2), /* 244 */ - /* 01 */ V(13, 6, 2), - /* 10 */ V(14, 3, 2), - /* 11 */ V(9, 11, 2), - - /* 0100 0101 ... */ - /* 00 */ V(11, 9, 2), /* 248 */ - /* 01 */ V(10, 10, 2), - /* 10 */ V(14, 2, 2), - /* 11 */ V(1, 14, 2), - - /* 0100 0110 ... */ - /* 00 */ V(14, 1, 2), /* 252 */ - /* 01 */ V(5, 13, 2), - /* 10 */ V(13, 5, 2), - /* 11 */ V(7, 12, 2), - - /* 0100 0111 ... */ - /* 00 */ V(12, 7, 2), /* 256 */ - /* 01 */ V(4, 13, 2), - /* 10 */ V(8, 11, 2), - /* 11 */ V(11, 8, 2), - - /* 0100 1000 ... */ - /* 00 */ V(13, 4, 2), /* 260 */ - /* 01 */ V(9, 10, 2), - /* 10 */ V(10, 9, 2), - /* 11 */ V(6, 12, 2), - - /* 0100 1001 ... */ - /* 00 */ V(12, 6, 2), /* 264 */ - /* 01 */ V(3, 13, 2), - /* 10 */ V(13, 3, 2), - /* 11 */ V(2, 13, 2), - - /* 0100 1010 ... */ - /* 00 */ V(13, 2, 2), /* 268 */ - /* 01 */ V(1, 13, 2), - /* 10 */ V(7, 11, 2), - /* 11 */ V(11, 7, 2), - - /* 0100 1011 ... */ - /* 00 */ V(13, 1, 2), /* 272 */ - /* 01 */ V(5, 12, 2), - /* 10 */ V(12, 5, 2), - /* 11 */ V(8, 10, 2), - - /* 0100 1100 ... */ - /* 00 */ V(10, 8, 2), /* 276 */ - /* 01 */ V(9, 9, 2), - /* 10 */ V(4, 12, 2), - /* 11 */ V(12, 4, 2), - - /* 0100 1101 ... */ - /* 000 */ V(6, 11, 2), /* 280 */ - /* 001 */ V(6, 11, 2), - /* 010 */ V(11, 6, 2), - /* 011 */ V(11, 6, 2), - /* 100 */ V(13, 0, 3), - /* 101 */ V(0, 12, 3), - /* 110 */ V(3, 12, 2), - /* 111 */ V(3, 12, 2), - - /* 0100 1110 ... */ - /* 00 */ V(12, 3, 2), /* 288 */ - /* 01 */ V(7, 10, 2), - /* 10 */ V(10, 7, 2), - /* 11 */ V(2, 12, 2), - - /* 0100 1111 ... */ - /* 00 */ V(12, 2, 2), /* 292 */ - /* 01 */ V(5, 11, 2), - /* 10 */ V(11, 5, 2), - /* 11 */ V(1, 12, 2), - - /* 0101 0000 ... */ - /* 00 */ V(8, 9, 2), /* 296 */ - /* 01 */ V(9, 8, 2), - /* 10 */ V(12, 1, 2), - /* 11 */ V(4, 11, 2), - - /* 0101 0001 ... */ - /* 000 */ V(12, 0, 3), /* 300 */ - /* 001 */ V(0, 11, 3), - /* 010 */ V(3, 11, 2), - /* 011 */ V(3, 11, 2), - /* 100 */ V(11, 0, 3), - /* 101 */ V(0, 10, 3), - /* 110 */ V(1, 10, 2), - /* 111 */ V(1, 10, 2), - - /* 0101 0010 ... */ - /* 00 */ V(11, 4, 1), /* 308 */ - /* 01 */ V(11, 4, 1), - /* 10 */ V(6, 10, 2), - /* 11 */ V(10, 6, 2), - - /* 0101 0011 ... */ - /* 000 */ V(7, 9, 2), /* 312 */ - /* 001 */ V(7, 9, 2), - /* 010 */ V(9, 7, 2), - /* 011 */ V(9, 7, 2), - /* 100 */ V(10, 0, 3), - /* 101 */ V(0, 9, 3), - /* 110 */ V(9, 0, 2), - /* 111 */ V(9, 0, 2), - - /* 0101 0100 ... */ - /* 0 */ V(11, 3, 1), /* 320 */ - /* 1 */ V(8, 8, 1), - - /* 0101 0101 ... */ - /* 00 */ V(2, 11, 2), /* 322 */ - /* 01 */ V(5, 10, 2), - /* 10 */ V(11, 2, 1), - /* 11 */ V(11, 2, 1), - - /* 0101 0110 ... */ - /* 00 */ V(10, 5, 2), /* 326 */ - /* 01 */ V(1, 11, 2), - /* 10 */ V(11, 1, 2), - /* 11 */ V(6, 9, 2), - - /* 0101 0111 ... */ - /* 0 */ V(9, 6, 1), /* 330 */ - /* 1 */ V(10, 4, 1), - - /* 0101 1000 ... */ - /* 00 */ V(4, 10, 2), /* 332 */ - /* 01 */ V(7, 8, 2), - /* 10 */ V(8, 7, 1), - /* 11 */ V(8, 7, 1), - - /* 0101 1001 ... */ - /* 0 */ V(3, 10, 1), /* 336 */ - /* 1 */ V(10, 3, 1), - - /* 0101 1010 ... */ - /* 0 */ V(5, 9, 1), /* 338 */ - /* 1 */ V(9, 5, 1), - - /* 0101 1011 ... */ - /* 0 */ V(2, 10, 1), /* 340 */ - /* 1 */ V(10, 2, 1), - - /* 0101 1100 ... */ - /* 0 */ V(10, 1, 1), /* 342 */ - /* 1 */ V(6, 8, 1), - - /* 0101 1101 ... */ - /* 0 */ V(8, 6, 1), /* 344 */ - /* 1 */ V(7, 7, 1), - - /* 0101 1110 ... */ - /* 0 */ V(4, 9, 1), /* 346 */ - /* 1 */ V(9, 4, 1), - - /* 0101 1111 ... */ - /* 0 */ V(3, 9, 1), /* 348 */ - /* 1 */ V(9, 3, 1), - - /* 0110 0000 ... */ - /* 0 */ V(5, 8, 1), /* 350 */ - /* 1 */ V(8, 5, 1), - - /* 0110 0001 ... */ - /* 0 */ V(2, 9, 1), /* 352 */ - /* 1 */ V(6, 7, 1), - - /* 0110 0010 ... */ - /* 0 */ V(7, 6, 1), /* 354 */ - /* 1 */ V(9, 2, 1), - - /* 0110 0011 ... */ - /* 0 */ V(1, 9, 1), /* 356 */ - /* 1 */ V(9, 1, 1), - - /* 0110 0100 ... */ - /* 0 */ V(4, 8, 1), /* 358 */ - /* 1 */ V(8, 4, 1), - - /* 0110 0101 ... */ - /* 0 */ V(5, 7, 1), /* 360 */ - /* 1 */ V(7, 5, 1), - - /* 0110 0110 ... */ - /* 0 */ V(3, 8, 1), /* 362 */ - /* 1 */ V(8, 3, 1), - - /* 0110 0111 ... */ - /* 0 */ V(6, 6, 1), /* 364 */ - /* 1 */ V(2, 8, 1), - - /* 0110 1000 ... */ - /* 0 */ V(8, 2, 1), /* 366 */ - /* 1 */ V(1, 8, 1), - - /* 0110 1001 ... */ - /* 0 */ V(4, 7, 1), /* 368 */ - /* 1 */ V(7, 4, 1), - - /* 0110 1010 ... */ - /* 00 */ V(8, 1, 1), /* 370 */ - /* 01 */ V(8, 1, 1), - /* 10 */ V(0, 8, 2), - /* 11 */ V(8, 0, 2), - - /* 0110 1011 ... */ - /* 0 */ V(5, 6, 1), /* 374 */ - /* 1 */ V(6, 5, 1), - - /* 0110 1100 ... */ - /* 00 */ V(1, 7, 1), /* 376 */ - /* 01 */ V(1, 7, 1), - /* 10 */ V(0, 7, 2), - /* 11 */ V(7, 0, 2), - - /* 0110 1110 ... */ - /* 0 */ V(3, 7, 1), /* 380 */ - /* 1 */ V(2, 7, 1), - - /* 0111 1100 ... */ - /* 0 */ V(0, 6, 1), /* 382 */ - /* 1 */ V(6, 0, 1), - - /* 1000 0011 ... */ - /* 0 */ V(0, 5, 1), /* 384 */ - /* 1 */ V(5, 0, 1) -]; - -/* hufftable constructor */ -function MP3Hufftable(table, linbits, startbits) { - this.table = table; - this.linbits = linbits; - this.startbits = startbits; -}; - -/* external tables */ -exports.huff_quad_table = [ hufftabA, hufftabB ]; -exports.huff_pair_table = [ - /* 0 */ new MP3Hufftable(hufftab0, 0, 0), - /* 1 */ new MP3Hufftable(hufftab1, 0, 3), - /* 2 */ new MP3Hufftable(hufftab2, 0, 3), - /* 3 */ new MP3Hufftable(hufftab3, 0, 3), - /* 4 */ null, //new MP3Hufftable(0 /* not used */), - /* 5 */ new MP3Hufftable(hufftab5, 0, 3), - /* 6 */ new MP3Hufftable(hufftab6, 0, 4), - /* 7 */ new MP3Hufftable(hufftab7, 0, 4), - /* 8 */ new MP3Hufftable(hufftab8, 0, 4), - /* 9 */ new MP3Hufftable(hufftab9, 0, 4), - /* 10 */ new MP3Hufftable(hufftab10, 0, 4), - /* 11 */ new MP3Hufftable(hufftab11, 0, 4), - /* 12 */ new MP3Hufftable(hufftab12, 0, 4), - /* 13 */ new MP3Hufftable(hufftab13, 0, 4), - /* 14 */ null, //new MP3Hufftable(0 /* not used */), - /* 15 */ new MP3Hufftable(hufftab15, 0, 4), - /* 16 */ new MP3Hufftable(hufftab16, 1, 4), - /* 17 */ new MP3Hufftable(hufftab16, 2, 4), - /* 18 */ new MP3Hufftable(hufftab16, 3, 4), - /* 19 */ new MP3Hufftable(hufftab16, 4, 4), - /* 20 */ new MP3Hufftable(hufftab16, 6, 4), - /* 21 */ new MP3Hufftable(hufftab16, 8, 4), - /* 22 */ new MP3Hufftable(hufftab16, 10, 4), - /* 23 */ new MP3Hufftable(hufftab16, 13, 4), - /* 24 */ new MP3Hufftable(hufftab24, 4, 4), - /* 25 */ new MP3Hufftable(hufftab24, 5, 4), - /* 26 */ new MP3Hufftable(hufftab24, 6, 4), - /* 27 */ new MP3Hufftable(hufftab24, 7, 4), - /* 28 */ new MP3Hufftable(hufftab24, 8, 4), - /* 29 */ new MP3Hufftable(hufftab24, 9, 4), - /* 30 */ new MP3Hufftable(hufftab24, 11, 4), - /* 31 */ new MP3Hufftable(hufftab24, 13, 4) -]; - -},{}],7:[function(require,module,exports){ - -const ENCODINGS = ['latin1', 'utf16-bom', 'utf16-be', 'utf8']; - -var ID3Stream = AV.Base.extend({ - constructor: function(header, stream) { - this.header = header; - this.stream = stream; - this.offset = 0; - }, - - read: function() { - if (!this.data) { - this.data = {}; - - // read all frames - var frame; - while (frame = this.readFrame()) { - // if we already have an instance of this key, add it to an array - if (frame.key in this.data) { - if (!Array.isArray(this.data[frame.key])) - this.data[frame.key] = [this.data[frame.key]]; - - this.data[frame.key].push(frame.value); - } else { - this.data[frame.key] = frame.value; - } - } - } - - return this.data; - }, - - readFrame: function() { - if (this.offset >= this.header.length) - return null; - - // get the header - var header = this.readHeader(); - var decoder = header.identifier; - - if (header.identifier.charCodeAt(0) === 0) { - this.offset += this.header.length + 1; - return null; - } - - // map common frame names to a single type - if (!this.frameTypes[decoder]) { - for (var key in this.map) { - if (this.map[key].indexOf(decoder) !== -1) { - decoder = key; - break; - } - } - } - - if (this.frameTypes[decoder]) { - // decode the frame - var frame = this.decodeFrame(header, this.frameTypes[decoder]), - keys = Object.keys(frame); - - // if it only returned one key, use that as the value - if (keys.length === 1) - frame = frame[keys[0]]; - - var result = { - value: frame - }; - - } else { - // No frame type found, treat it as binary - var result = { - value: this.stream.readBuffer(Math.min(header.length, this.header.length - this.offset)) - }; - } - - result.key = this.names[header.identifier] ? this.names[header.identifier] : header.identifier; - - // special sauce for cover art, which should just be a buffer - if (result.key === 'coverArt') - result.value = result.value.data; - - this.offset += 10 + header.length; - return result; - }, - - decodeFrame: function(header, fields) { - var stream = this.stream, - start = stream.offset; - - var encoding = 0, ret = {}; - var len = Object.keys(fields).length, i = 0; - - for (var key in fields) { - var type = fields[key]; - var rest = header.length - (stream.offset - start); - i++; - - // check for special field names - switch (key) { - case 'encoding': - encoding = stream.readUInt8(); - continue; - - case 'language': - ret.language = stream.readString(3); - continue; - } - - // check types - switch (type) { - case 'latin1': - ret[key] = stream.readString(i === len ? rest : null, 'latin1'); - break; - - case 'string': - ret[key] = stream.readString(i === len ? rest : null, ENCODINGS[encoding]); - break; - - case 'binary': - ret[key] = stream.readBuffer(rest) - break; - - case 'int16': - ret[key] = stream.readInt16(); - break; - - case 'int8': - ret[key] = stream.readInt8(); - break; - - case 'int24': - ret[key] = stream.readInt24(); - break; - - case 'int32': - ret[key] = stream.readInt32(); - break; - - case 'int32+': - ret[key] = stream.readInt32(); - if (rest > 4) - throw new Error('Seriously dude? Stop playing this song and get a life!'); - - break; - - case 'date': - var val = stream.readString(8); - ret[key] = new Date(val.slice(0, 4), val.slice(4, 6) - 1, val.slice(6, 8)); - break; - - case 'frame_id': - ret[key] = stream.readString(4); - break; - - default: - throw new Error('Unknown key type ' + type); - } - } - - // Just in case something went wrong... - var rest = header.length - (stream.offset - start); - if (rest > 0) - stream.advance(rest); - - return ret; - } -}); - -// ID3 v2.3 and v2.4 support -exports.ID3v23Stream = ID3Stream.extend({ - readHeader: function() { - var identifier = this.stream.readString(4); - var length = 0; - - if (this.header.major === 4) { - for (var i = 0; i < 4; i++) - length = (length << 7) + (this.stream.readUInt8() & 0x7f); - } else { - length = this.stream.readUInt32(); - } - - return { - identifier: identifier, - length: length, - flags: this.stream.readUInt16() - }; - }, - - map: { - text: [ - // Identification Frames - 'TIT1', 'TIT2', 'TIT3', 'TALB', 'TOAL', 'TRCK', 'TPOS', 'TSST', 'TSRC', - - // Involved Persons Frames - 'TPE1', 'TPE2', 'TPE3', 'TPE4', 'TOPE', 'TEXT', 'TOLY', 'TCOM', 'TMCL', 'TIPL', 'TENC', - - // Derived and Subjective Properties Frames - 'TBPM', 'TLEN', 'TKEY', 'TLAN', 'TCON', 'TFLT', 'TMED', 'TMOO', - - // Rights and Licence Frames - 'TCOP', 'TPRO', 'TPUB', 'TOWN', 'TRSN', 'TRSO', - - // Other Text Frames - 'TOFN', 'TDLY', 'TDEN', 'TDOR', 'TDRC', 'TDRL', 'TDTG', 'TSSE', 'TSOA', 'TSOP', 'TSOT', - - // Deprecated Text Frames - 'TDAT', 'TIME', 'TORY', 'TRDA', 'TSIZ', 'TYER', - - // Non-standard iTunes Frames - 'TCMP', 'TSO2', 'TSOC' - ], - - url: [ - 'WCOM', 'WCOP', 'WOAF', 'WOAR', 'WOAS', 'WORS', 'WPAY', 'WPUB' - ] - }, - - frameTypes: { - text: { - encoding: 1, - value: 'string' - }, - - url: { - value: 'latin1' - }, - - TXXX: { - encoding: 1, - description: 'string', - value: 'string' - }, - - WXXX: { - encoding: 1, - description: 'string', - value: 'latin1', - }, - - USLT: { - encoding: 1, - language: 1, - description: 'string', - value: 'string' - }, - - COMM: { - encoding: 1, - language: 1, - description: 'string', - value: 'string' - }, - - APIC: { - encoding: 1, - mime: 'latin1', - type: 'int8', - description: 'string', - data: 'binary' - }, - - UFID: { - owner: 'latin1', - identifier: 'binary' - }, - - MCDI: { - value: 'binary' - }, - - PRIV: { - owner: 'latin1', - value: 'binary' - }, - - GEOB: { - encoding: 1, - mime: 'latin1', - filename: 'string', - description: 'string', - data: 'binary' - }, - - PCNT: { - value: 'int32+' - }, - - POPM: { - email: 'latin1', - rating: 'int8', - counter: 'int32+' - }, - - AENC: { - owner: 'latin1', - previewStart: 'int16', - previewLength: 'int16', - encryptionInfo: 'binary' - }, - - ETCO: { - format: 'int8', - data: 'binary' // TODO - }, - - MLLT: { - framesBetweenReference: 'int16', - bytesBetweenReference: 'int24', - millisecondsBetweenReference: 'int24', - bitsForBytesDeviation: 'int8', - bitsForMillisecondsDev: 'int8', - data: 'binary' // TODO - }, - - SYTC: { - format: 'int8', - tempoData: 'binary' // TODO - }, - - SYLT: { - encoding: 1, - language: 1, - format: 'int8', - contentType: 'int8', - description: 'string', - data: 'binary' // TODO - }, - - RVA2: { - identification: 'latin1', - data: 'binary' // TODO - }, - - EQU2: { - interpolationMethod: 'int8', - identification: 'latin1', - data: 'binary' // TODO - }, - - RVRB: { - left: 'int16', - right: 'int16', - bouncesLeft: 'int8', - bouncesRight: 'int8', - feedbackLL: 'int8', - feedbackLR: 'int8', - feedbackRR: 'int8', - feedbackRL: 'int8', - premixLR: 'int8', - premixRL: 'int8' - }, - - RBUF: { - size: 'int24', - flag: 'int8', - offset: 'int32' - }, - - LINK: { - identifier: 'frame_id', - url: 'latin1', - data: 'binary' // TODO stringlist? - }, - - POSS: { - format: 'int8', - position: 'binary' // TODO - }, - - USER: { - encoding: 1, - language: 1, - value: 'string' - }, - - OWNE: { - encoding: 1, - price: 'latin1', - purchaseDate: 'date', - seller: 'string' - }, - - COMR: { - encoding: 1, - price: 'latin1', - validUntil: 'date', - contactURL: 'latin1', - receivedAs: 'int8', - seller: 'string', - description: 'string', - logoMime: 'latin1', - logo: 'binary' - }, - - ENCR: { - owner: 'latin1', - methodSymbol: 'int8', - data: 'binary' - }, - - GRID: { - owner: 'latin1', - groupSymbol: 'int8', - data: 'binary' - }, - - SIGN: { - groupSymbol: 'int8', - signature: 'binary' - }, - - SEEK: { - value: 'int32' - }, - - ASPI: { - dataStart: 'int32', - dataLength: 'int32', - numPoints: 'int16', - bitsPerPoint: 'int8', - data: 'binary' // TODO - }, - - // Deprecated ID3 v2.3 frames - IPLS: { - encoding: 1, - value: 'string' // list? - }, - - RVAD: { - adjustment: 'int8', - bits: 'int8', - data: 'binary' // TODO - }, - - EQUA: { - adjustmentBits: 'int8', - data: 'binary' // TODO - } - }, - - names: { - // Identification Frames - 'TIT1': 'grouping', - 'TIT2': 'title', - 'TIT3': 'subtitle', - 'TALB': 'album', - 'TOAL': 'originalAlbumTitle', - 'TRCK': 'trackNumber', - 'TPOS': 'diskNumber', - 'TSST': 'setSubtitle', - 'TSRC': 'ISRC', - - // Involved Persons Frames - 'TPE1': 'artist', - 'TPE2': 'albumArtist', - 'TPE3': 'conductor', - 'TPE4': 'modifiedBy', - 'TOPE': 'originalArtist', - 'TEXT': 'lyricist', - 'TOLY': 'originalLyricist', - 'TCOM': 'composer', - 'TMCL': 'musicianCreditsList', - 'TIPL': 'involvedPeopleList', - 'TENC': 'encodedBy', - - // Derived and Subjective Properties Frames - 'TBPM': 'tempo', - 'TLEN': 'length', - 'TKEY': 'initialKey', - 'TLAN': 'language', - 'TCON': 'genre', - 'TFLT': 'fileType', - 'TMED': 'mediaType', - 'TMOO': 'mood', - - // Rights and Licence Frames - 'TCOP': 'copyright', - 'TPRO': 'producedNotice', - 'TPUB': 'publisher', - 'TOWN': 'fileOwner', - 'TRSN': 'internetRadioStationName', - 'TRSO': 'internetRadioStationOwner', - - // Other Text Frames - 'TOFN': 'originalFilename', - 'TDLY': 'playlistDelay', - 'TDEN': 'encodingTime', - 'TDOR': 'originalReleaseTime', - 'TDRC': 'recordingTime', - 'TDRL': 'releaseTime', - 'TDTG': 'taggingTime', - 'TSSE': 'encodedWith', - 'TSOA': 'albumSortOrder', - 'TSOP': 'performerSortOrder', - 'TSOT': 'titleSortOrder', - - // User defined text information - 'TXXX': 'userText', - - // Unsynchronised lyrics/text transcription - 'USLT': 'lyrics', - - // Attached Picture Frame - 'APIC': 'coverArt', - - // Unique Identifier Frame - 'UFID': 'uniqueIdentifier', - - // Music CD Identifier Frame - 'MCDI': 'CDIdentifier', - - // Comment Frame - 'COMM': 'comments', - - // URL link frames - 'WCOM': 'commercialInformation', - 'WCOP': 'copyrightInformation', - 'WOAF': 'officialAudioFileWebpage', - 'WOAR': 'officialArtistWebpage', - 'WOAS': 'officialAudioSourceWebpage', - 'WORS': 'officialInternetRadioStationHomepage', - 'WPAY': 'payment', - 'WPUB': 'officialPublisherWebpage', - - // User Defined URL Link Frame - 'WXXX': 'url', - - 'PRIV': 'private', - 'GEOB': 'generalEncapsulatedObject', - 'PCNT': 'playCount', - 'POPM': 'rating', - 'AENC': 'audioEncryption', - 'ETCO': 'eventTimingCodes', - 'MLLT': 'MPEGLocationLookupTable', - 'SYTC': 'synchronisedTempoCodes', - 'SYLT': 'synchronisedLyrics', - 'RVA2': 'volumeAdjustment', - 'EQU2': 'equalization', - 'RVRB': 'reverb', - 'RBUF': 'recommendedBufferSize', - 'LINK': 'link', - 'POSS': 'positionSynchronisation', - 'USER': 'termsOfUse', - 'OWNE': 'ownership', - 'COMR': 'commercial', - 'ENCR': 'encryption', - 'GRID': 'groupIdentifier', - 'SIGN': 'signature', - 'SEEK': 'seek', - 'ASPI': 'audioSeekPointIndex', - - // Deprecated ID3 v2.3 frames - 'TDAT': 'date', - 'TIME': 'time', - 'TORY': 'originalReleaseYear', - 'TRDA': 'recordingDates', - 'TSIZ': 'size', - 'TYER': 'year', - 'IPLS': 'involvedPeopleList', - 'RVAD': 'volumeAdjustment', - 'EQUA': 'equalization', - - // Non-standard iTunes frames - 'TCMP': 'compilation', - 'TSO2': 'albumArtistSortOrder', - 'TSOC': 'composerSortOrder' - } -}); - -// ID3 v2.2 support -exports.ID3v22Stream = exports.ID3v23Stream.extend({ - readHeader: function() { - var id = this.stream.readString(3); - - if (this.frameReplacements[id] && !this.frameTypes[id]) - this.frameTypes[id] = this.frameReplacements[id]; - - return { - identifier: this.replacements[id] || id, - length: this.stream.readUInt24() - }; - }, - - // map 3 char ID3 v2.2 names to 4 char ID3 v2.3/4 names - replacements: { - 'UFI': 'UFID', - 'TT1': 'TIT1', - 'TT2': 'TIT2', - 'TT3': 'TIT3', - 'TP1': 'TPE1', - 'TP2': 'TPE2', - 'TP3': 'TPE3', - 'TP4': 'TPE4', - 'TCM': 'TCOM', - 'TXT': 'TEXT', - 'TLA': 'TLAN', - 'TCO': 'TCON', - 'TAL': 'TALB', - 'TPA': 'TPOS', - 'TRK': 'TRCK', - 'TRC': 'TSRC', - 'TYE': 'TYER', - 'TDA': 'TDAT', - 'TIM': 'TIME', - 'TRD': 'TRDA', - 'TMT': 'TMED', - 'TFT': 'TFLT', - 'TBP': 'TBPM', - 'TCR': 'TCOP', - 'TPB': 'TPUB', - 'TEN': 'TENC', - 'TSS': 'TSSE', - 'TOF': 'TOFN', - 'TLE': 'TLEN', - 'TSI': 'TSIZ', - 'TDY': 'TDLY', - 'TKE': 'TKEY', - 'TOT': 'TOAL', - 'TOA': 'TOPE', - 'TOL': 'TOLY', - 'TOR': 'TORY', - 'TXX': 'TXXX', - - 'WAF': 'WOAF', - 'WAR': 'WOAR', - 'WAS': 'WOAS', - 'WCM': 'WCOM', - 'WCP': 'WCOP', - 'WPB': 'WPUB', - 'WXX': 'WXXX', - - 'IPL': 'IPLS', - 'MCI': 'MCDI', - 'ETC': 'ETCO', - 'MLL': 'MLLT', - 'STC': 'SYTC', - 'ULT': 'USLT', - 'SLT': 'SYLT', - 'COM': 'COMM', - 'RVA': 'RVAD', - 'EQU': 'EQUA', - 'REV': 'RVRB', - - 'GEO': 'GEOB', - 'CNT': 'PCNT', - 'POP': 'POPM', - 'BUF': 'RBUF', - 'CRA': 'AENC', - 'LNK': 'LINK', - - // iTunes stuff - 'TST': 'TSOT', - 'TSP': 'TSOP', - 'TSA': 'TSOA', - 'TCP': 'TCMP', - 'TS2': 'TSO2', - 'TSC': 'TSOC' - }, - - // replacements for ID3 v2.3/4 frames - frameReplacements: { - PIC: { - encoding: 1, - format: 'int24', - type: 'int8', - description: 'string', - data: 'binary' - }, - - CRM: { - owner: 'latin1', - description: 'latin1', - data: 'binary' - } - } -}); -},{}],8:[function(require,module,exports){ -function IMDCT() { - this.tmp_imdct36 = new Float64Array(18); - this.tmp_dctIV = new Float64Array(18); - this.tmp_sdctII = new Float64Array(9); -} - -// perform X[18]->x[36] IMDCT using Szu-Wei Lee's fast algorithm -IMDCT.prototype.imdct36 = function(x, y) { - var tmp = this.tmp_imdct36; - - /* DCT-IV */ - this.dctIV(x, tmp); - - // convert 18-point DCT-IV to 36-point IMDCT - for (var i = 0; i < 9; ++i) { - y[i] = tmp[9 + i]; - } - for (var i = 9; i < 27; ++i) { - y[i] = -tmp[36 - (9 + i) - 1]; - } - for (var i = 27; i < 36; ++i) { - y[i] = -tmp[i - 27]; - } -}; - -var dctIV_scale = []; -for(i = 0; i < 18; i++) { - dctIV_scale[i] = 2 * Math.cos(Math.PI * (2 * i + 1) / (4 * 18)); -} - -IMDCT.prototype.dctIV = function(y, X) { - var tmp = this.tmp_dctIV; - - // scaling - for (var i = 0; i < 18; ++i) { - tmp[i] = y[i] * dctIV_scale[i]; - } - - // SDCT-II - this.sdctII(tmp, X); - - // scale reduction and output accumulation - X[0] /= 2; - for (var i = 1; i < 18; ++i) { - X[i] = X[i] / 2 - X[i - 1]; - } -}; - -var sdctII_scale = []; -for (var i = 0; i < 9; ++i) { - sdctII_scale[i] = 2 * Math.cos(Math.PI * (2 * i + 1) / (2 * 18)); -} - -IMDCT.prototype.sdctII = function(x, X) { - // divide the 18-point SDCT-II into two 9-point SDCT-IIs - var tmp = this.tmp_sdctII; - - // even input butterfly - for (var i = 0; i < 9; ++i) { - tmp[i] = x[i] + x[18 - i - 1]; - } - - fastsdct(tmp, X, 0); - - // odd input butterfly and scaling - for (var i = 0; i < 9; ++i) { - tmp[i] = (x[i] - x[18 - i - 1]) * sdctII_scale[i]; - } - - fastsdct(tmp, X, 1); - - // output accumulation - for (var i = 3; i < 18; i += 2) { - X[i] -= X[i - 2]; - } -}; - -var c0 = 2 * Math.cos( 1 * Math.PI / 18); -var c1 = 2 * Math.cos( 3 * Math.PI / 18); -var c2 = 2 * Math.cos( 4 * Math.PI / 18); -var c3 = 2 * Math.cos( 5 * Math.PI / 18); -var c4 = 2 * Math.cos( 7 * Math.PI / 18); -var c5 = 2 * Math.cos( 8 * Math.PI / 18); -var c6 = 2 * Math.cos(16 * Math.PI / 18); - -function fastsdct(x, y, offset) { - var a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; - var a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25; - var m0, m1, m2, m3, m4, m5, m6, m7; - - a0 = x[3] + x[5]; - a1 = x[3] - x[5]; - a2 = x[6] + x[2]; - a3 = x[6] - x[2]; - a4 = x[1] + x[7]; - a5 = x[1] - x[7]; - a6 = x[8] + x[0]; - a7 = x[8] - x[0]; - - a8 = a0 + a2; - a9 = a0 - a2; - a10 = a0 - a6; - a11 = a2 - a6; - a12 = a8 + a6; - a13 = a1 - a3; - a14 = a13 + a7; - a15 = a3 + a7; - a16 = a1 - a7; - a17 = a1 + a3; - - m0 = a17 * -c3; - m1 = a16 * -c0; - m2 = a15 * -c4; - m3 = a14 * -c1; - m4 = a5 * -c1; - m5 = a11 * -c6; - m6 = a10 * -c5; - m7 = a9 * -c2; - - a18 = x[4] + a4; - a19 = 2 * x[4] - a4; - a20 = a19 + m5; - a21 = a19 - m5; - a22 = a19 + m6; - a23 = m4 + m2; - a24 = m4 - m2; - a25 = m4 + m1; - - // output to every other slot for convenience - y[offset + 0] = a18 + a12; - y[offset + 2] = m0 - a25; - y[offset + 4] = m7 - a20; - y[offset + 6] = m3; - y[offset + 8] = a21 - m6; - y[offset + 10] = a24 - m1; - y[offset + 12] = a12 - 2 * a18; - y[offset + 14] = a23 + m0; - y[offset + 16] = a22 + m7; -} - -IMDCT.S = [ - /* 0 */ [ 0.608761429, - -0.923879533, - -0.130526192, - 0.991444861, - -0.382683432, - -0.793353340 ], - - /* 6 */ [ -0.793353340, - 0.382683432, - 0.991444861, - 0.130526192, - -0.923879533, - -0.608761429 ], - - /* 1 */ [ 0.382683432, - -0.923879533, - 0.923879533, - -0.382683432, - -0.382683432, - 0.923879533 ], - - /* 7 */ [ -0.923879533, - -0.382683432, - 0.382683432, - 0.923879533, - 0.923879533, - 0.382683432 ], - - /* 2 */ [ 0.130526192, - -0.382683432, - 0.608761429, - -0.793353340, - 0.923879533, - -0.991444861 ], - - /* 8 */ [ -0.991444861, - -0.923879533, - -0.793353340, - -0.608761429, - -0.382683432, - -0.130526192 ] -]; - -module.exports = IMDCT; - -},{}],9:[function(require,module,exports){ -var tables = require('./tables'); -var MP3FrameHeader = require('./header'); -var MP3Frame = require('./frame'); -var utils = require('./utils'); - -function Layer1() { - this.allocation = utils.makeArray([2, 32], Uint8Array); - this.scalefactor = utils.makeArray([2, 32], Uint8Array); -} - -MP3Frame.layers[1] = Layer1; - -// linear scaling table -const LINEAR_TABLE = new Float32Array([ - 1.33333333333333, 1.14285714285714, 1.06666666666667, - 1.03225806451613, 1.01587301587302, 1.00787401574803, - 1.00392156862745, 1.00195694716243, 1.00097751710655, - 1.00048851978505, 1.00024420024420, 1.00012208521548, - 1.00006103888177, 1.00003051850948 -]); - -Layer1.prototype.decode = function(stream, frame) { - var header = frame.header; - var nch = header.nchannels(); - - var bound = 32; - if (header.mode === MP3FrameHeader.MODE.JOINT_STEREO) { - header.flags |= MP3FrameHeader.FLAGS.I_STEREO; - bound = 4 + header.mode_extension * 4; - } - - if (header.flags & MP3FrameHeader.FLAGS.PROTECTION) { - // TODO: crc check - } - - // decode bit allocations - var allocation = this.allocation; - for (var sb = 0; sb < bound; sb++) { - for (var ch = 0; ch < nch; ch++) { - var nb = stream.read(4); - if (nb === 15) - throw new Error("forbidden bit allocation value"); - - allocation[ch][sb] = nb ? nb + 1 : 0; - } - } - - for (var sb = bound; sb < 32; sb++) { - var nb = stream.read(4); - if (nb === 15) - throw new Error("forbidden bit allocation value"); - - allocation[0][sb] = - allocation[1][sb] = nb ? nb + 1 : 0; - } - - // decode scalefactors - var scalefactor = this.scalefactor; - for (var sb = 0; sb < 32; sb++) { - for (var ch = 0; ch < nch; ch++) { - if (allocation[ch][sb]) { - scalefactor[ch][sb] = stream.read(6); - - /* - * Scalefactor index 63 does not appear in Table B.1 of - * ISO/IEC 11172-3. Nonetheless, other implementations accept it, - * so we do as well - */ - } - } - } - - // decode samples - for (var s = 0; s < 12; s++) { - for (var sb = 0; sb < bound; sb++) { - for (var ch = 0; ch < nch; ch++) { - var nb = allocation[ch][sb]; - frame.sbsample[ch][s][sb] = nb ? this.sample(stream, nb) * tables.SF_TABLE[scalefactor[ch][sb]] : 0; - } - } - - for (var sb = bound; sb < 32; sb++) { - var nb = allocation[0][sb]; - if (nb) { - var sample = this.sample(stream, nb); - - for (var ch = 0; ch < nch; ch++) { - frame.sbsample[ch][s][sb] = sample * tables.SF_TABLE[scalefactor[ch][sb]]; - } - } else { - for (var ch = 0; ch < nch; ch++) { - frame.sbsample[ch][s][sb] = 0; - } - } - } - } -}; - -Layer1.prototype.sample = function(stream, nb) { - var sample = stream.read(nb); - - // invert most significant bit, and form a 2's complement sample - sample ^= 1 << (nb - 1); - sample |= -(sample & (1 << (nb - 1))); - sample /= (1 << (nb - 1)); - - // requantize the sample - // s'' = (2^nb / (2^nb - 1)) * (s''' + 2^(-nb + 1)) - sample += 1 >> (nb - 1); - return sample * LINEAR_TABLE[nb - 2]; -}; - -module.exports = Layer1; - -},{"./frame":4,"./header":5,"./tables":14,"./utils":15}],10:[function(require,module,exports){ -var tables = require('./tables'); -var MP3FrameHeader = require('./header'); -var MP3Frame = require('./frame'); -var utils = require('./utils'); - -function Layer2() { - this.samples = new Float64Array(3); - this.allocation = utils.makeArray([2, 32], Uint8Array); - this.scfsi = utils.makeArray([2, 32], Uint8Array); - this.scalefactor = utils.makeArray([2, 32, 3], Uint8Array); -} - -MP3Frame.layers[2] = Layer2; - -// possible quantization per subband table -const SBQUANT = [ - // ISO/IEC 11172-3 Table B.2a - { sblimit: 27, offsets: - [ 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0 ] }, - - // ISO/IEC 11172-3 Table B.2b - { sblimit: 30, offsets: - [ 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0 ] }, - - // ISO/IEC 11172-3 Table B.2c - { sblimit: 8, offsets: - [ 5, 5, 2, 2, 2, 2, 2, 2 ] }, - - // ISO/IEC 11172-3 Table B.2d - { sblimit: 12, offsets: - [ 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ] }, - - // ISO/IEC 13818-3 Table B.1 - { sblimit: 30, offsets: - [ 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] } -]; - -// bit allocation table -const BITALLOC = [ - { nbal: 2, offset: 0 }, // 0 - { nbal: 2, offset: 3 }, // 1 - { nbal: 3, offset: 3 }, // 2 - { nbal: 3, offset: 1 }, // 3 - { nbal: 4, offset: 2 }, // 4 - { nbal: 4, offset: 3 }, // 5 - { nbal: 4, offset: 4 }, // 6 - { nbal: 4, offset: 5 } // 7 -]; - -// offsets into quantization class table -const OFFSETS = [ - [ 0, 1, 16 ], // 0 - [ 0, 1, 2, 3, 4, 5, 16 ], // 1 - [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], // 2 - [ 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], // 3 - [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 ], // 4 - [ 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ] // 5 -]; - - - -/* - * These are the Layer II classes of quantization. - * The table is derived from Table B.4 of ISO/IEC 11172-3. - */ -const QC_TABLE = [ - { nlevels: 3, group: 2, bits: 5, C: 1.33333333333, D: 0.50000000000 }, - { nlevels: 5, group: 3, bits: 7, C: 1.60000000000, D: 0.50000000000 }, - { nlevels: 7, group: 0, bits: 3, C: 1.14285714286, D: 0.25000000000 }, - { nlevels: 9, group: 4, bits: 10, C: 1.77777777777, D: 0.50000000000 }, - { nlevels: 15, group: 0, bits: 4, C: 1.06666666666, D: 0.12500000000 }, - { nlevels: 31, group: 0, bits: 5, C: 1.03225806452, D: 0.06250000000 }, - { nlevels: 63, group: 0, bits: 6, C: 1.01587301587, D: 0.03125000000 }, - { nlevels: 127, group: 0, bits: 7, C: 1.00787401575, D: 0.01562500000 }, - { nlevels: 255, group: 0, bits: 8, C: 1.00392156863, D: 0.00781250000 }, - { nlevels: 511, group: 0, bits: 9, C: 1.00195694716, D: 0.00390625000 }, - { nlevels: 1023, group: 0, bits: 10, C: 1.00097751711, D: 0.00195312500 }, - { nlevels: 2047, group: 0, bits: 11, C: 1.00048851979, D: 0.00097656250 }, - { nlevels: 4095, group: 0, bits: 12, C: 1.00024420024, D: 0.00048828125 }, - { nlevels: 8191, group: 0, bits: 13, C: 1.00012208522, D: 0.00024414063 }, - { nlevels: 16383, group: 0, bits: 14, C: 1.00006103888, D: 0.00012207031 }, - { nlevels: 32767, group: 0, bits: 15, C: 1.00003051851, D: 0.00006103516 }, - { nlevels: 65535, group: 0, bits: 16, C: 1.00001525902, D: 0.00003051758 } -]; - -Layer2.prototype.decode = function(stream, frame) { - var header = frame.header; - var nch = header.nchannels(); - var index; - - if (header.flags & MP3FrameHeader.FLAGS.LSF_EXT) { - index = 4; - } else if (header.flags & MP3FrameHeader.FLAGS.FREEFORMAT) { - index = header.samplerate === 48000 ? 0 : 1; - } else { - var bitrate_per_channel = header.bitrate; - - if (nch === 2) { - bitrate_per_channel /= 2; - - /* - * ISO/IEC 11172-3 allows only single channel mode for 32, 48, 56, and - * 80 kbps bitrates in Layer II, but some encoders ignore this - * restriction, so we ignore it as well. - */ - } else { - /* - * ISO/IEC 11172-3 does not allow single channel mode for 224, 256, - * 320, or 384 kbps bitrates in Layer II. - */ - if (bitrate_per_channel > 192000) - throw new Error('bad bitrate/mode combination'); - } - - if (bitrate_per_channel <= 48000) - index = header.samplerate === 32000 ? 3 : 2; - else if (bitrate_per_channel <= 80000) - index = 0; - else - index = header.samplerate === 48000 ? 0 : 1; - } - - var sblimit = SBQUANT[index].sblimit; - var offsets = SBQUANT[index].offsets; - - var bound = 32; - if (header.mode === MP3FrameHeader.MODE.JOINT_STEREO) { - header.flags |= MP3FrameHeader.FLAGS.I_STEREO; - bound = 4 + header.mode_extension * 4; - } - - if (bound > sblimit) - bound = sblimit; - - // decode bit allocations - var allocation = this.allocation; - for (var sb = 0; sb < bound; sb++) { - var nbal = BITALLOC[offsets[sb]].nbal; - - for (var ch = 0; ch < nch; ch++) - allocation[ch][sb] = stream.read(nbal); - } - - for (var sb = bound; sb < sblimit; sb++) { - var nbal = BITALLOC[offsets[sb]].nbal; - - allocation[0][sb] = - allocation[1][sb] = stream.read(nbal); - } - - // decode scalefactor selection info - var scfsi = this.scfsi; - for (var sb = 0; sb < sblimit; sb++) { - for (var ch = 0; ch < nch; ch++) { - if (allocation[ch][sb]) - scfsi[ch][sb] = stream.read(2); - } - } - - if (header.flags & MP3FrameHeader.FLAGS.PROTECTION) { - // TODO: crc check - } - - // decode scalefactors - var scalefactor = this.scalefactor; - for (var sb = 0; sb < sblimit; sb++) { - for (var ch = 0; ch < nch; ch++) { - if (allocation[ch][sb]) { - scalefactor[ch][sb][0] = stream.read(6); - - switch (scfsi[ch][sb]) { - case 2: - scalefactor[ch][sb][2] = - scalefactor[ch][sb][1] = scalefactor[ch][sb][0]; - break; - - case 0: - scalefactor[ch][sb][1] = stream.read(6); - // fall through - - case 1: - case 3: - scalefactor[ch][sb][2] = stream.read(6); - } - - if (scfsi[ch][sb] & 1) - scalefactor[ch][sb][1] = scalefactor[ch][sb][scfsi[ch][sb] - 1]; - - /* - * Scalefactor index 63 does not appear in Table B.1 of - * ISO/IEC 11172-3. Nonetheless, other implementations accept it, - * so we do as well. - */ - } - } - } - - // decode samples - for (var gr = 0; gr < 12; gr++) { - // normal - for (var sb = 0; sb < bound; sb++) { - for (var ch = 0; ch < nch; ch++) { - if (index = allocation[ch][sb]) { - index = OFFSETS[BITALLOC[offsets[sb]].offset][index - 1]; - this.decodeSamples(stream, QC_TABLE[index]); - - var scale = tables.SF_TABLE[scalefactor[ch][sb][gr >> 2]]; - for (var s = 0; s < 3; s++) { - frame.sbsample[ch][3 * gr + s][sb] = this.samples[s] * scale; - } - } else { - for (var s = 0; s < 3; s++) { - frame.sbsample[ch][3 * gr + s][sb] = 0; - } - } - } - } - - // joint stereo - for (var sb = bound; sb < sblimit; sb++) { - if (index = allocation[0][sb]) { - index = OFFSETS[BITALLOC[offsets[sb]].offset][index - 1]; - this.decodeSamples(stream, QC_TABLE[index]); - - for (var ch = 0; ch < nch; ch++) { - var scale = tables.SF_TABLE[scalefactor[ch][sb][gr >> 2]]; - for (var s = 0; s < 3; s++) { - frame.sbsample[ch][3 * gr + s][sb] = this.samples[s] * scale; - } - } - } else { - for (var ch = 0; ch < nch; ch++) { - for (var s = 0; s < 3; s++) { - frame.sbsample[ch][3 * gr + s][sb] = 0; - } - } - } - } - - // the rest - for (var ch = 0; ch < nch; ch++) { - for (var s = 0; s < 3; s++) { - for (var sb = sblimit; sb < 32; sb++) { - frame.sbsample[ch][3 * gr + s][sb] = 0; - } - } - } - } -}; - -Layer2.prototype.decodeSamples = function(stream, quantclass) { - var sample = this.samples; - var nb = quantclass.group; - - if (nb) { - // degrouping - var c = stream.read(quantclass.bits); - var nlevels = quantclass.nlevels; - - for (var s = 0; s < 3; s++) { - sample[s] = c % nlevels; - c = c / nlevels | 0; - } - } else { - nb = quantclass.bits; - for (var s = 0; s < 3; s++) { - sample[s] = stream.read(nb); - } - } - - for (var s = 0; s < 3; s++) { - // invert most significant bit, and form a 2's complement sample - var requantized = sample[s] ^ (1 << (nb - 1)); - requantized |= -(requantized & (1 << (nb - 1))); - requantized /= (1 << (nb - 1)); - - // requantize the sample - sample[s] = (requantized + quantclass.D) * quantclass.C; - } -}; - -module.exports = Layer2; - -},{"./frame":4,"./header":5,"./tables":14,"./utils":15}],11:[function(require,module,exports){ -var tables = require('./tables'); -var MP3FrameHeader = require('./header'); -var MP3Frame = require('./frame'); -var huffman = require('./huffman'); -var IMDCT = require('./imdct'); -var utils = require('./utils'); - -function MP3SideInfo() { - this.main_data_begin = null; - this.private_bits = null; - this.gr = [new MP3Granule(), new MP3Granule()]; - this.scfsi = new Uint8Array(2); -} - -function MP3Granule() { - this.ch = [new MP3Channel(), new MP3Channel()]; -} - -function MP3Channel() { - // from side info - this.part2_3_length = null; - this.big_values = null; - this.global_gain = null; - this.scalefac_compress = null; - - this.flags = null; - this.block_type = null; - this.table_select = new Uint8Array(3); - this.subblock_gain = new Uint8Array(3); - this.region0_count = null; - this.region1_count = null; - - // from main_data - this.scalefac = new Uint8Array(39); -} - -function Layer3() { - this.imdct = new IMDCT(); - this.si = new MP3SideInfo(); - - // preallocate reusable typed arrays for performance - this.xr = [new Float64Array(576), new Float64Array(576)]; - this._exponents = new Int32Array(39); - this.reqcache = new Float64Array(16); - this.modes = new Int16Array(39); - this.output = new Float64Array(36); - - this.tmp = utils.makeArray([32, 3, 6]); - this.tmp2 = new Float64Array(32 * 3 * 6); -} - -MP3Frame.layers[3] = Layer3; - -Layer3.prototype.decode = function(stream, frame) { - var header = frame.header; - var next_md_begin = 0; - var md_len = 0; - - var nch = header.nchannels(); - var si_len = (header.flags & MP3FrameHeader.FLAGS.LSF_EXT) ? (nch === 1 ? 9 : 17) : (nch === 1 ? 17 : 32); - - // check frame sanity - if (stream.next_frame - stream.nextByte() < si_len) { - stream.md_len = 0; - throw new Error('Bad frame length'); - } - - // check CRC word - if (header.flags & MP3FrameHeader.FLAGS.PROTECTION) { - // TODO: crc check - } - - // decode frame side information - var sideInfo = this.sideInfo(stream, nch, header.flags & MP3FrameHeader.FLAGS.LSF_EXT); - var si = sideInfo.si; - var data_bitlen = sideInfo.data_bitlen; - var priv_bitlen = sideInfo.priv_bitlen; - - header.flags |= priv_bitlen; - header.private_bits |= si.private_bits; - - // find main_data of next frame - var peek = stream.copy(); - peek.seek(stream.next_frame * 8); - - var nextHeader = peek.read(16); - if ((nextHeader & 0xffe6) === 0xffe2) { // syncword | layer - if ((nextHeader & 1) === 0) // protection bit - peek.advance(16); // crc check - - peek.advance(16); // skip the rest of the header - next_md_begin = peek.read((nextHeader & 8) ? 9 : 8); - } - - // find main_data of this frame - var frame_space = stream.next_frame - stream.nextByte(); - - if (next_md_begin > si.main_data_begin + frame_space) - next_md_begin = 0; - - var md_len = si.main_data_begin + frame_space - next_md_begin; - var frame_used = 0; - var ptr; - - if (si.main_data_begin === 0) { - ptr = stream.stream; - stream.md_len = 0; - frame_used = md_len; - } else { - if (si.main_data_begin > stream.md_len) { - throw new Error('bad main_data_begin pointer'); - } else { - var old_md_len = stream.md_len; - - if (md_len > si.main_data_begin) { - if (stream.md_len + md_len - si.main_data_begin > MP3FrameHeader.BUFFER_MDLEN) { - throw new Error("Assertion failed: (stream.md_len + md_len - si.main_data_begin <= MAD_MP3FrameHeader.BUFFER_MDLEN)"); - } - - frame_used = md_len - si.main_data_begin; - this.memcpy(stream.main_data, stream.md_len, stream.stream.stream, stream.nextByte(), frame_used); - stream.md_len += frame_used; - } - - ptr = new AV.Bitstream(AV.Stream.fromBuffer(new AV.Buffer(stream.main_data))); - ptr.advance((old_md_len - si.main_data_begin) * 8); - } - } - - var frame_free = frame_space - frame_used; - - // decode main_data - this.decodeMainData(ptr, frame, si, nch); - - // preload main_data buffer with up to 511 bytes for next frame(s) - if (frame_free >= next_md_begin) { - this.memcpy(stream.main_data, 0, stream.stream.stream, stream.next_frame - next_md_begin, next_md_begin); - stream.md_len = next_md_begin; - } else { - if (md_len < si.main_data_begin) { - var extra = si.main_data_begin - md_len; - if (extra + frame_free > next_md_begin) - extra = next_md_begin - frame_free; - - if (extra < stream.md_len) { - this.memcpy(stream.main_data, 0, stream.main_data, stream.md_len - extra, extra); - stream.md_len = extra; - } - } else { - stream.md_len = 0; - } - - this.memcpy(stream.main_data, stream.md_len, stream.stream.stream, stream.next_frame - frame_free, frame_free); - stream.md_len += frame_free; - } -}; - -Layer3.prototype.memcpy = function(dst, dstOffset, pSrc, srcOffset, length) { - var subarr; - if (pSrc.subarray) - subarr = pSrc.subarray(srcOffset, srcOffset + length); - else - subarr = pSrc.peekBuffer(srcOffset - pSrc.offset, length).data; - - // oh my, memcpy actually exists in JavaScript? - dst.set(subarr, dstOffset); - return dst; -}; - -Layer3.prototype.sideInfo = function(stream, nch, lsf) { - var si = this.si; - var data_bitlen = 0; - var priv_bitlen = lsf ? ((nch === 1) ? 1 : 2) : ((nch === 1) ? 5 : 3); - - si.main_data_begin = stream.read(lsf ? 8 : 9); - si.private_bits = stream.read(priv_bitlen); - - var ngr = 1; - if (!lsf) { - ngr = 2; - for (var ch = 0; ch < nch; ++ch) - si.scfsi[ch] = stream.read(4); - } - - for (var gr = 0; gr < ngr; gr++) { - var granule = si.gr[gr]; - - for (var ch = 0; ch < nch; ch++) { - var channel = granule.ch[ch]; - - channel.part2_3_length = stream.read(12); - channel.big_values = stream.read(9); - channel.global_gain = stream.read(8); - channel.scalefac_compress = stream.read(lsf ? 9 : 4); - - data_bitlen += channel.part2_3_length; - - if (channel.big_values > 288) - throw new Error('bad big_values count'); - - channel.flags = 0; - - // window_switching_flag - if (stream.read(1)) { - channel.block_type = stream.read(2); - - if (channel.block_type === 0) - throw new Error('reserved block_type'); - - if (!lsf && channel.block_type === 2 && si.scfsi[ch]) - throw new Error('bad scalefactor selection info'); - - channel.region0_count = 7; - channel.region1_count = 36; - - if (stream.read(1)) - channel.flags |= tables.MIXED_BLOCK_FLAG; - else if (channel.block_type === 2) - channel.region0_count = 8; - - for (var i = 0; i < 2; i++) - channel.table_select[i] = stream.read(5); - - for (var i = 0; i < 3; i++) - channel.subblock_gain[i] = stream.read(3); - } else { - channel.block_type = 0; - - for (var i = 0; i < 3; i++) - channel.table_select[i] = stream.read(5); - - channel.region0_count = stream.read(4); - channel.region1_count = stream.read(3); - } - - // [preflag,] scalefac_scale, count1table_select - channel.flags |= stream.read(lsf ? 2 : 3); - } - } - - return { - si: si, - data_bitlen: data_bitlen, - priv_bitlen: priv_bitlen - }; -}; - -Layer3.prototype.decodeMainData = function(stream, frame, si, nch) { - var header = frame.header; - var sfreq = header.samplerate; - - if (header.flags & MP3FrameHeader.FLAGS.MPEG_2_5_EXT) - sfreq *= 2; - - // 48000 => 0, 44100 => 1, 32000 => 2, - // 24000 => 3, 22050 => 4, 16000 => 5 - var sfreqi = ((sfreq >> 7) & 0x000f) + ((sfreq >> 15) & 0x0001) - 8; - - if (header.flags & MP3FrameHeader.FLAGS.MPEG_2_5_EXT) - sfreqi += 3; - - // scalefactors, Huffman decoding, requantization - var ngr = (header.flags & MP3FrameHeader.FLAGS.LSF_EXT) ? 1 : 2; - var xr = this.xr; - - for (var gr = 0; gr < ngr; ++gr) { - var granule = si.gr[gr]; - var sfbwidth = []; - var l = 0; - - for (var ch = 0; ch < nch; ++ch) { - var channel = granule.ch[ch]; - var part2_length; - - sfbwidth[ch] = tables.SFBWIDTH_TABLE[sfreqi].l; - if (channel.block_type === 2) { - sfbwidth[ch] = (channel.flags & tables.MIXED_BLOCK_FLAG) ? tables.SFBWIDTH_TABLE[sfreqi].m : tables.SFBWIDTH_TABLE[sfreqi].s; - } - - if (header.flags & MP3FrameHeader.FLAGS.LSF_EXT) { - part2_length = this.scalefactors_lsf(stream, channel, ch === 0 ? 0 : si.gr[1].ch[1], header.mode_extension); - } else { - part2_length = this.scalefactors(stream, channel, si.gr[0].ch[ch], gr === 0 ? 0 : si.scfsi[ch]); - } - - this.huffmanDecode(stream, xr[ch], channel, sfbwidth[ch], part2_length); - } - - // joint stereo processing - if (header.mode === MP3FrameHeader.MODE.JOINT_STEREO && header.mode_extension !== 0) - this.stereo(xr, si.gr, gr, header, sfbwidth[0]); - - // reordering, alias reduction, IMDCT, overlap-add, frequency inversion - for (var ch = 0; ch < nch; ch++) { - var channel = granule.ch[ch]; - var sample = frame.sbsample[ch].slice(18 * gr); - - var sb, l = 0, i, sblimit; - var output = this.output; - - if (channel.block_type === 2) { - this.reorder(xr[ch], channel, sfbwidth[ch]); - - /* - * According to ISO/IEC 11172-3, "Alias reduction is not applied for - * granules with block_type === 2 (short block)." However, other - * sources suggest alias reduction should indeed be performed on the - * lower two subbands of mixed blocks. Most other implementations do - * this, so by default we will too. - */ - if (channel.flags & tables.MIXED_BLOCK_FLAG) - this.aliasreduce(xr[ch], 36); - } else { - this.aliasreduce(xr[ch], 576); - } - - // subbands 0-1 - if (channel.block_type !== 2 || (channel.flags & tables.MIXED_BLOCK_FLAG)) { - var block_type = channel.block_type; - if (channel.flags & tables.MIXED_BLOCK_FLAG) - block_type = 0; - - // long blocks - for (var sb = 0; sb < 2; ++sb, l += 18) { - this.imdct_l(xr[ch].subarray(l, l + 18), output, block_type); - this.overlap(output, frame.overlap[ch][sb], sample, sb); - } - } else { - // short blocks - for (var sb = 0; sb < 2; ++sb, l += 18) { - this.imdct_s(xr[ch].subarray(l, l + 18), output); - this.overlap(output, frame.overlap[ch][sb], sample, sb); - } - } - - this.freqinver(sample, 1); - - // (nonzero) subbands 2-31 - var i = 576; - while (i > 36 && xr[ch][i - 1] === 0) { - --i; - } - - sblimit = 32 - (((576 - i) / 18) << 0); - - if (channel.block_type !== 2) { - // long blocks - for (var sb = 2; sb < sblimit; ++sb, l += 18) { - this.imdct_l(xr[ch].subarray(l, l + 18), output, channel.block_type); - this.overlap(output, frame.overlap[ch][sb], sample, sb); - - if (sb & 1) - this.freqinver(sample, sb); - } - } else { - // short blocks - for (var sb = 2; sb < sblimit; ++sb, l += 18) { - this.imdct_s(xr[ch].subarray(l, l + 18), output); - this.overlap(output, frame.overlap[ch][sb], sample, sb); - - if (sb & 1) - this.freqinver(sample, sb); - } - } - - // remaining (zero) subbands - for (var sb = sblimit; sb < 32; ++sb) { - this.overlap_z(frame.overlap[ch][sb], sample, sb); - - if (sb & 1) - this.freqinver(sample, sb); - } - } - } -}; - -Layer3.prototype.scalefactors = function(stream, channel, gr0ch, scfsi) { - var start = stream.offset(); - var slen1 = tables.SFLEN_TABLE[channel.scalefac_compress].slen1; - var slen2 = tables.SFLEN_TABLE[channel.scalefac_compress].slen2; - var sfbi; - - if (channel.block_type === 2) { - sfbi = 0; - - var nsfb = (channel.flags & tables.MIXED_BLOCK_FLAG) ? 8 + 3 * 3 : 6 * 3; - while (nsfb--) - channel.scalefac[sfbi++] = stream.read(slen1); - - nsfb = 6 * 3; - while (nsfb--) - channel.scalefac[sfbi++] = stream.read(slen2); - - nsfb = 1 * 3; - while (nsfb--) - channel.scalefac[sfbi++] = 0; - } else { - if (scfsi & 0x8) { - for (var sfbi = 0; sfbi < 6; ++sfbi) - channel.scalefac[sfbi] = gr0ch.scalefac[sfbi]; - } else { - for (var sfbi = 0; sfbi < 6; ++sfbi) - channel.scalefac[sfbi] = stream.read(slen1); - } - - if (scfsi & 0x4) { - for (var sfbi = 6; sfbi < 11; ++sfbi) - channel.scalefac[sfbi] = gr0ch.scalefac[sfbi]; - } else { - for (var sfbi = 6; sfbi < 11; ++sfbi) - channel.scalefac[sfbi] = stream.read(slen1); - } - - if (scfsi & 0x2) { - for (var sfbi = 11; sfbi < 16; ++sfbi) - channel.scalefac[sfbi] = gr0ch.scalefac[sfbi]; - } else { - for (var sfbi = 11; sfbi < 16; ++sfbi) - channel.scalefac[sfbi] = stream.read(slen2); - } - - if (scfsi & 0x1) { - for (var sfbi = 16; sfbi < 21; ++sfbi) - channel.scalefac[sfbi] = gr0ch.scalefac[sfbi]; - } else { - for (var sfbi = 16; sfbi < 21; ++sfbi) - channel.scalefac[sfbi] = stream.read(slen2); - } - - channel.scalefac[21] = 0; - } - - return stream.offset() - start; -}; - -Layer3.prototype.scalefactors_lsf = function(stream, channel, gr1ch, mode_extension) { - var start = stream.offset(); - var scalefac_compress = channel.scalefac_compress; - var index = channel.block_type === 2 ? (channel.flags & tables.MIXED_BLOCK_FLAG ? 2 : 1) : 0; - var slen = new Int32Array(4); - var nsfb; - - if (!((mode_extension & tables.I_STEREO) && gr1ch)) { - if (scalefac_compress < 400) { - slen[0] = (scalefac_compress >>> 4) / 5; - slen[1] = (scalefac_compress >>> 4) % 5; - slen[2] = (scalefac_compress % 16) >>> 2; - slen[3] = scalefac_compress % 4; - - nsfb = tables.NSFB_TABLE[0][index]; - } else if (scalefac_compress < 500) { - scalefac_compress -= 400; - - slen[0] = (scalefac_compress >>> 2) / 5; - slen[1] = (scalefac_compress >>> 2) % 5; - slen[2] = scalefac_compress % 4; - slen[3] = 0; - - nsfb = tables.NSFB_TABLE[1][index]; - } else { - scalefac_compress -= 500; - - slen[0] = scalefac_compress / 3; - slen[1] = scalefac_compress % 3; - slen[2] = 0; - slen[3] = 0; - - channel.flags |= tables.PREFLAG; - nsfb = tables.NSFB_TABLE[2][index]; - } - - var n = 0; - for (var part = 0; part < 4; part++) { - for (var i = 0; i < nsfb[part]; i++) { - channel.scalefac[n++] = stream.read(slen[part]); - } - } - - while (n < 39) { - channel.scalefac[n++] = 0; - } - } else { // (mode_extension & tables.I_STEREO) && gr1ch (i.e. ch == 1) - scalefac_compress >>>= 1; - - if (scalefac_compress < 180) { - slen[0] = scalefac_compress / 36; - slen[1] = (scalefac_compress % 36) / 6; - slen[2] = (scalefac_compress % 36) % 6; - slen[3] = 0; - - nsfb = tables.NSFB_TABLE[3][index]; - } else if (scalefac_compress < 244) { - scalefac_compress -= 180; - - slen[0] = (scalefac_compress % 64) >>> 4; - slen[1] = (scalefac_compress % 16) >>> 2; - slen[2] = scalefac_compress % 4; - slen[3] = 0; - - nsfb = tables.NSFB_TABLE[4][index]; - } else { - scalefac_compress -= 244; - - slen[0] = scalefac_compress / 3; - slen[1] = scalefac_compress % 3; - slen[2] = 0; - slen[3] = 0; - - nsfb = tables.NSFB_TABLE[5][index]; - } - - var n = 0; - for (var part = 0; part < 4; ++part) { - var max = (1 << slen[part]) - 1; - for (var i = 0; i < nsfb[part]; ++i) { - var is_pos = stream.read(slen[part]); - - channel.scalefac[n] = is_pos; - gr1ch.scalefac[n++] = is_pos === max ? 1 : 0; - } - } - - while (n < 39) { - channel.scalefac[n] = 0; - gr1ch.scalefac[n++] = 0; // apparently not illegal - } - } - - return stream.offset() - start; -}; - -Layer3.prototype.huffmanDecode = function(stream, xr, channel, sfbwidth, part2_length) { - var exponents = this._exponents; - var sfbwidthptr = 0; - - var bits_left = channel.part2_3_length - part2_length; - if (bits_left < 0) - throw new Error('bad audio data length'); - - this.exponents(channel, sfbwidth, exponents); - - var peek = stream.copy(); - stream.advance(bits_left); - - /* align bit reads to byte boundaries */ - var cachesz = 8 - peek.bitPosition; - cachesz += ((32 - 1 - 24) + (24 - cachesz)) & ~7; - - var bitcache = peek.read(cachesz); - bits_left -= cachesz; - - var xrptr = 0; - - // big_values - var region = 0; - var reqcache = this.reqcache; - - var sfbound = xrptr + sfbwidth[sfbwidthptr++]; - var rcount = channel.region0_count + 1; - - var entry = huffman.huff_pair_table[channel.table_select[region]]; - var table = entry.table; - var linbits = entry.linbits; - var startbits = entry.startbits; - - if (typeof table === 'undefined') - throw new Error('bad Huffman table select'); - - var expptr = 0; - var exp = exponents[expptr++]; - var reqhits = 0; - var big_values = channel.big_values; - - while (big_values-- && cachesz + bits_left > 0) { - if (xrptr === sfbound) { - sfbound += sfbwidth[sfbwidthptr++]; - - // change table if region boundary - if (--rcount === 0) { - if (region === 0) - rcount = channel.region1_count + 1; - else - rcount = 0; // all remaining - - entry = huffman.huff_pair_table[channel.table_select[++region]]; - table = entry.table; - linbits = entry.linbits; - startbits = entry.startbits; - - if (typeof table === 'undefined') - throw new Error('bad Huffman table select'); - } - - if (exp !== exponents[expptr]) { - exp = exponents[expptr]; - reqhits = 0; - } - - ++expptr; - } - - if (cachesz < 21) { - var bits = ((32 - 1 - 21) + (21 - cachesz)) & ~7; - bitcache = (bitcache << bits) | peek.read(bits); - cachesz += bits; - bits_left -= bits; - } - - var clumpsz = startbits; - var pair = table[ (((bitcache) >> ((cachesz) - (clumpsz))) & ((1 << (clumpsz)) - 1))]; - - while (!pair.final) { - cachesz -= clumpsz; - clumpsz = pair.ptr.bits; - pair = table[pair.ptr.offset + (((bitcache) >> ((cachesz) - (clumpsz))) & ((1 << (clumpsz)) - 1))]; - } - - cachesz -= pair.value.hlen; - - if (linbits) { - var value = pair.value.x; - var x_final = false; - - switch (value) { - case 0: - xr[xrptr] = 0; - break; - - case 15: - if (cachesz < linbits + 2) { - bitcache = (bitcache << 16) | peek.read(16); - cachesz += 16; - bits_left -= 16; - } - - value += (((bitcache) >> ((cachesz) - (linbits))) & ((1 << (linbits)) - 1)); - cachesz -= linbits; - - requantized = this.requantize(value, exp); - x_final = true; // simulating goto, yay - break; - - default: - if (reqhits & (1 << value)) { - requantized = reqcache[value]; - } else { - reqhits |= (1 << value); - requantized = reqcache[value] = this.requantize(value, exp); - } - - x_final = true; - } - - if(x_final) { - xr[xrptr] = ((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized; - } - - value = pair.value.y; - var y_final = false; - - switch (value) { - case 0: - xr[xrptr + 1] = 0; - break; - - case 15: - if (cachesz < linbits + 1) { - bitcache = (bitcache << 16) | peek.read(16); - cachesz += 16; - bits_left -= 16; - } - - value += (((bitcache) >> ((cachesz) - (linbits))) & ((1 << (linbits)) - 1)); - cachesz -= linbits; - - requantized = this.requantize(value, exp); - y_final = true; - break; // simulating goto, yayzor - - default: - if (reqhits & (1 << value)) { - requantized = reqcache[value]; - } else { - reqhits |= (1 << value); - reqcache[value] = this.requantize(value, exp); - requantized = reqcache[value]; - } - - y_final = true; - } - - if(y_final) { - xr[xrptr + 1] = ((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized; - } - - } else { - var value = pair.value.x; - - if (value === 0) { - xr[xrptr] = 0; - } else { - if (reqhits & (1 << value)) - requantized = reqcache[value]; - else { - reqhits |= (1 << value); - requantized = reqcache[value] = this.requantize(value, exp); - } - - xr[xrptr] = ((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized; - } - - value = pair.value.y; - - if (value === 0) { - xr[xrptr + 1] = 0; - } else { - if (reqhits & (1 << value)) - requantized = reqcache[value]; - else { - reqhits |= (1 << value); - requantized = reqcache[value] = this.requantize(value, exp); - } - - xr[xrptr + 1] = ((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized; - } - } - - xrptr += 2; - } - - if (cachesz + bits_left < 0) - throw new Error('Huffman data overrun'); - - // count1 - var table = huffman.huff_quad_table[channel.flags & tables.COUNT1TABLE_SELECT]; - var requantized = this.requantize(1, exp); - - while (cachesz + bits_left > 0 && xrptr <= 572) { - if (cachesz < 10) { - bitcache = (bitcache << 16) | peek.read(16); - cachesz += 16; - bits_left -= 16; - } - - var quad = table[(((bitcache) >> ((cachesz) - (4))) & ((1 << (4)) - 1))]; - - // quad tables guaranteed to have at most one extra lookup - if (!quad.final) { - cachesz -= 4; - quad = table[quad.ptr.offset + (((bitcache) >> ((cachesz) - (quad.ptr.bits))) & ((1 << (quad.ptr.bits)) - 1))]; - } - - cachesz -= quad.value.hlen; - - if (xrptr === sfbound) { - sfbound += sfbwidth[sfbwidthptr++]; - - if (exp !== exponents[expptr]) { - exp = exponents[expptr]; - requantized = this.requantize(1, exp); - } - - ++expptr; - } - - // v (0..1) - xr[xrptr] = quad.value.v ? (((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized) : 0; - - // w (0..1) - xr[xrptr + 1] = quad.value.w ? (((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized) : 0; - - xrptr += 2; - if (xrptr === sfbound) { - sfbound += sfbwidth[sfbwidthptr++]; - - if (exp !== exponents[expptr]) { - exp = exponents[expptr]; - requantized = this.requantize(1, exp); - } - - ++expptr; - } - - // x (0..1) - xr[xrptr] = quad.value.x ? (((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized) : 0; - - // y (0..1) - xr[xrptr + 1] = quad.value.y ? (((bitcache) & (1 << ((cachesz--) - 1))) ? -requantized : requantized) : 0; - - xrptr += 2; - - if (cachesz + bits_left < 0) { - // technically the bitstream is misformatted, but apparently - // some encoders are just a bit sloppy with stuffing bits - xrptr -= 4; - } - } - - if (-bits_left > MP3FrameHeader.BUFFER_GUARD * 8) { - throw new Error("assertion failed: (-bits_left <= MP3FrameHeader.BUFFER_GUARD * CHAR_BIT)"); - } - - // rzero - while (xrptr < 576) { - xr[xrptr] = 0; - xr[xrptr + 1] = 0; - xrptr += 2; - } -}; - -Layer3.prototype.requantize = function(value, exp) { - // usual (x >> 0) tricks to make sure frac and exp stay integers - var frac = (exp % 4) >> 0; // assumes sign(frac) === sign(exp) - exp = (exp / 4) >> 0; - - var requantized = Math.pow(value, 4.0 / 3.0); - requantized *= Math.pow(2.0, (exp / 4.0)); - - if (frac) { - requantized *= Math.pow(2.0, (frac / 4.0)); - } - - if (exp < 0) { - requantized /= Math.pow(2.0, -exp * (3.0 / 4.0)); - } - - return requantized; -}; - -Layer3.prototype.exponents = function(channel, sfbwidth, exponents) { - var gain = channel.global_gain - 210; - var scalefac_multiplier = (channel.flags & tables.SCALEFAC_SCALE) ? 2 : 1; - - if (channel.block_type === 2) { - var sfbi = 0, l = 0; - - if (channel.flags & tables.MIXED_BLOCK_FLAG) { - var premask = (channel.flags & tables.PREFLAG) ? ~0 : 0; - - // long block subbands 0-1 - while (l < 36) { - exponents[sfbi] = gain - ((channel.scalefac[sfbi] + (tables.PRETAB[sfbi] & premask)) << scalefac_multiplier); - l += sfbwidth[sfbi++]; - } - } - - // this is probably wrong for 8000 Hz short/mixed blocks - var gain0 = gain - 8 * channel.subblock_gain[0]; - var gain1 = gain - 8 * channel.subblock_gain[1]; - var gain2 = gain - 8 * channel.subblock_gain[2]; - - while (l < 576) { - exponents[sfbi + 0] = gain0 - (channel.scalefac[sfbi + 0] << scalefac_multiplier); - exponents[sfbi + 1] = gain1 - (channel.scalefac[sfbi + 1] << scalefac_multiplier); - exponents[sfbi + 2] = gain2 - (channel.scalefac[sfbi + 2] << scalefac_multiplier); - - l += 3 * sfbwidth[sfbi]; - sfbi += 3; - } - } else { - if (channel.flags & tables.PREFLAG) { - for (var sfbi = 0; sfbi < 22; sfbi++) { - exponents[sfbi] = gain - ((channel.scalefac[sfbi] + tables.PRETAB[sfbi]) << scalefac_multiplier); - } - } else { - for (var sfbi = 0; sfbi < 22; sfbi++) { - exponents[sfbi] = gain - (channel.scalefac[sfbi] << scalefac_multiplier); - } - } - } -}; - -Layer3.prototype.stereo = function(xr, granules, gr, header, sfbwidth) { - var granule = granules[gr]; - var modes = this.modes; - var sfbi, l, n, i; - - if (granule.ch[0].block_type !== granule.ch[1].block_type || (granule.ch[0].flags & tables.MIXED_BLOCK_FLAG) !== (granule.ch[1].flags & tables.MIXED_BLOCK_FLAG)) - throw new Error('incompatible stereo block_type'); - - for (var i = 0; i < 39; i++) - modes[i] = header.mode_extension; - - // intensity stereo - if (header.mode_extension & tables.I_STEREO) { - var right_ch = granule.ch[1]; - var right_xr = xr[1]; - - header.flags |= MP3FrameHeader.FLAGS.tables.I_STEREO; - - // first determine which scalefactor bands are to be processed - if (right_ch.block_type === 2) { - var lower, start, max, bound = new Uint32Array(3), w; - - lower = start = max = bound[0] = bound[1] = bound[2] = 0; - sfbi = l = 0; - - if (right_ch.flags & tables.MIXED_BLOCK_FLAG) { - while (l < 36) { - n = sfbwidth[sfbi++]; - - for (var i = 0; i < n; ++i) { - if (right_xr[i]) { - lower = sfbi; - break; - } - } - - right_xr += n; - l += n; - } - - start = sfbi; - } - - var w = 0; - while (l < 576) { - n = sfbwidth[sfbi++]; - - for (i = 0; i < n; ++i) { - if (right_xr[i]) { - max = bound[w] = sfbi; - break; - } - } - - right_xr += n; - l += n; - w = (w + 1) % 3; - } - - if (max) - lower = start; - - // long blocks - for (i = 0; i < lower; ++i) - modes[i] = header.mode_extension & ~tables.I_STEREO; - - // short blocks - w = 0; - for (i = start; i < max; ++i) { - if (i < bound[w]) - modes[i] = header.mode_extension & ~tables.I_STEREO; - - w = (w + 1) % 3; - } - } else { - var bound = 0; - for (sfbi = l = 0; l < 576; l += n) { - n = sfbwidth[sfbi++]; - - for (i = 0; i < n; ++i) { - if (right_xr[i]) { - bound = sfbi; - break; - } - } - - right_xr += n; - } - - for (i = 0; i < bound; ++i) - modes[i] = header.mode_extension & ~tables.I_STEREO; - } - - // now do the actual processing - if (header.flags & MP3FrameHeader.FLAGS.LSF_EXT) { - var illegal_pos = granules[gr + 1].ch[1].scalefac; - - // intensity_scale - var lsf_scale = IS_Ltables.SF_TABLE[right_ch.scalefac_compress & 0x1]; - - for (sfbi = l = 0; l < 576; ++sfbi, l += n) { - n = sfbwidth[sfbi]; - - if (!(modes[sfbi] & tables.I_STEREO)) - continue; - - if (illegal_pos[sfbi]) { - modes[sfbi] &= ~tables.I_STEREO; - continue; - } - - is_pos = right_ch.scalefac[sfbi]; - - for (i = 0; i < n; ++i) { - var left = xr[0][l + i]; - - if (is_pos === 0) { - xr[1][l + i] = left; - } else { - var opposite = left * lsf_scale[(is_pos - 1) / 2]; - - if (is_pos & 1) { - xr[0][l + i] = opposite; - xr[1][l + i] = left; - } - else { - xr[1][l + i] = opposite; - } - } - } - } - } else { - for (sfbi = l = 0; l < 576; ++sfbi, l += n) { - n = sfbwidth[sfbi]; - - if (!(modes[sfbi] & tables.I_STEREO)) - continue; - - is_pos = right_ch.scalefac[sfbi]; - - if (is_pos >= 7) { // illegal intensity position - modes[sfbi] &= ~tables.I_STEREO; - continue; - } - - for (i = 0; i < n; ++i) { - var left = xr[0][l + i]; - xr[0][l + i] = left * tables.IS_TABLE[is_pos]; - xr[1][l + i] = left * tables.IS_TABLE[6 - is_pos]; - } - } - } - } - - // middle/side stereo - if (header.mode_extension & tables.MS_STEREO) { - header.flags |= tables.MS_STEREO; - - var invsqrt2 = tables.ROOT_TABLE[3 + -2]; - - for (sfbi = l = 0; l < 576; ++sfbi, l += n) { - n = sfbwidth[sfbi]; - - if (modes[sfbi] !== tables.MS_STEREO) - continue; - - for (i = 0; i < n; ++i) { - var m = xr[0][l + i]; - var s = xr[1][l + i]; - - xr[0][l + i] = (m + s) * invsqrt2; // l = (m + s) / sqrt(2) - xr[1][l + i] = (m - s) * invsqrt2; // r = (m - s) / sqrt(2) - } - } - } -}; - -Layer3.prototype.aliasreduce = function(xr, lines) { - for (var xrPointer = 18; xrPointer < lines; xrPointer += 18) { - for (var i = 0; i < 8; ++i) { - var a = xr[xrPointer - i - 1]; - var b = xr[xrPointer + i]; - - xr[xrPointer - i - 1] = a * tables.CS[i] - b * tables.CA[i]; - xr[xrPointer + i] = b * tables.CS[i] + a * tables.CA[i]; - } - } -}; - -// perform IMDCT and windowing for long blocks -Layer3.prototype.imdct_l = function (X, z, block_type) { - // IMDCT - this.imdct.imdct36(X, z); - - // windowing - switch (block_type) { - case 0: // normal window - for (var i = 0; i < 36; ++i) z[i] = z[i] * tables.WINDOW_L[i]; - break; - - case 1: // start block - for (var i = 0; i < 18; ++i) z[i] = z[i] * tables.WINDOW_L[i]; - for (var i = 24; i < 30; ++i) z[i] = z[i] * tables.WINDOW_S[i - 18]; - for (var i = 30; i < 36; ++i) z[i] = 0; - break; - - case 3: // stop block - for (var i = 0; i < 6; ++i) z[i] = 0; - for (var i = 6; i < 12; ++i) z[i] = z[i] * tables.WINDOW_S[i - 6]; - for (var i = 18; i < 36; ++i) z[i] = z[i] * tables.WINDOW_L[i]; - break; - } -}; - -/* - * perform IMDCT and windowing for short blocks - */ -Layer3.prototype.imdct_s = function (X, z) { - var yptr = 0; - var wptr; - var Xptr = 0; - - var y = new Float64Array(36); - var hi, lo; - - // IMDCT - for (var w = 0; w < 3; ++w) { - var sptr = 0; - - for (var i = 0; i < 3; ++i) { - lo = X[Xptr + 0] * IMDCT.S[sptr][0] + - X[Xptr + 1] * IMDCT.S[sptr][1] + - X[Xptr + 2] * IMDCT.S[sptr][2] + - X[Xptr + 3] * IMDCT.S[sptr][3] + - X[Xptr + 4] * IMDCT.S[sptr][4] + - X[Xptr + 5] * IMDCT.S[sptr][5]; - - - y[yptr + i + 0] = lo; - y[yptr + 5 - i] = -y[yptr + i + 0]; - - ++sptr; - - lo = X[Xptr + 0] * IMDCT.S[sptr][0] + - X[Xptr + 1] * IMDCT.S[sptr][1] + - X[Xptr + 2] * IMDCT.S[sptr][2] + - X[Xptr + 3] * IMDCT.S[sptr][3] + - X[Xptr + 4] * IMDCT.S[sptr][4] + - X[Xptr + 5] * IMDCT.S[sptr][5]; - - y[yptr + i + 6] = lo; - y[yptr + 11 - i] = y[yptr + i + 6]; - - ++sptr; - } - - yptr += 12; - Xptr += 6; - } - - // windowing, overlapping and concatenation - yptr = 0; - var wptr = 0; - - for (var i = 0; i < 6; ++i) { - z[i + 0] = 0; - z[i + 6] = y[yptr + 0 + 0] * tables.WINDOW_S[wptr + 0]; - - lo = y[yptr + 0 + 6] * tables.WINDOW_S[wptr + 6] + - y[yptr + 12 + 0] * tables.WINDOW_S[wptr + 0]; - - z[i + 12] = lo; - - lo = y[yptr + 12 + 6] * tables.WINDOW_S[wptr + 6] + - y[yptr + 24 + 0] * tables.WINDOW_S[wptr + 0]; - - z[i + 18] = lo; - z[i + 24] = y[yptr + 24 + 6] * tables.WINDOW_S[wptr + 6]; - z[i + 30] = 0; - - ++yptr; - ++wptr; - } -}; - -Layer3.prototype.overlap = function (output, overlap, sample, sb) { - for (var i = 0; i < 18; ++i) { - sample[i][sb] = output[i] + overlap[i]; - overlap[i] = output[i + 18]; - } -}; - -Layer3.prototype.freqinver = function (sample, sb) { - for (var i = 1; i < 18; i += 2) - sample[i][sb] = -sample[i][sb]; -}; - -Layer3.prototype.overlap_z = function (overlap, sample, sb) { - for (var i = 0; i < 18; ++i) { - sample[i][sb] = overlap[i]; - overlap[i] = 0; - } -}; - -Layer3.prototype.reorder = function (xr, channel, sfbwidth) { - var sfbwidthPointer = 0; - var tmp = this.tmp; - var sbw = new Uint32Array(3); - var sw = new Uint32Array(3); - - // this is probably wrong for 8000 Hz mixed blocks - - var sb = 0; - if (channel.flags & tables.MIXED_BLOCK_FLAG) { - var sb = 2; - - var l = 0; - while (l < 36) - l += sfbwidth[sfbwidthPointer++]; - } - - for (var w = 0; w < 3; ++w) { - sbw[w] = sb; - sw[w] = 0; - } - - f = sfbwidth[sfbwidthPointer++]; - w = 0; - - for (var l = 18 * sb; l < 576; ++l) { - if (f-- === 0) { - f = sfbwidth[sfbwidthPointer++] - 1; - w = (w + 1) % 3; - } - - tmp[sbw[w]][w][sw[w]++] = xr[l]; - - if (sw[w] === 6) { - sw[w] = 0; - ++sbw[w]; - } - } - - var tmp2 = this.tmp2; - var ptr = 0; - - for (var i = 0; i < 32; i++) { - for (var j = 0; j < 3; j++) { - for (var k = 0; k < 6; k++) { - tmp2[ptr++] = tmp[i][j][k]; - } - } - } - - var len = (576 - 18 * sb); - for (var i = 0; i < len; i++) { - xr[18 * sb + i] = tmp2[sb + i]; - } -}; - -module.exports = Layer3; - -},{"./frame":4,"./header":5,"./huffman":6,"./imdct":8,"./tables":14,"./utils":15}],12:[function(require,module,exports){ -var MP3FrameHeader = require('./header'); - -function MP3Stream(stream) { - this.stream = stream; // actual bitstream - this.sync = false; // stream sync found - this.freerate = 0; // free bitrate (fixed) - this.this_frame = stream.stream.offset; // start of current frame - this.next_frame = stream.stream.offset; // start of next frame - - this.main_data = new Uint8Array(MP3FrameHeader.BUFFER_MDLEN); // actual audio data - this.md_len = 0; // length of main data - - // copy methods from actual stream - for (var key in stream) { - if (typeof stream[key] === 'function') - this[key] = stream[key].bind(stream); - } -} - -MP3Stream.prototype.getU8 = function(offset) { - var stream = this.stream.stream; - return stream.peekUInt8(offset - stream.offset); -}; - -MP3Stream.prototype.nextByte = function() { - var stream = this.stream; - return stream.bitPosition === 0 ? stream.stream.offset : stream.stream.offset + 1; -}; - -MP3Stream.prototype.doSync = function() { - var stream = this.stream.stream; - this.align(); - - while (this.available(16) && !(stream.peekUInt8(0) === 0xff && (stream.peekUInt8(1) & 0xe0) === 0xe0)) { - this.advance(8); - } - - if (!this.available(MP3FrameHeader.BUFFER_GUARD)) - return false; - - return true; -}; - -MP3Stream.prototype.reset = function(byteOffset) { - this.seek(byteOffset * 8); - this.next_frame = byteOffset; - this.sync = true; -}; - -module.exports = MP3Stream; - -},{"./header":5}],13:[function(require,module,exports){ -var utils = require('./utils'); - -function MP3Synth() { - this.filter = utils.makeArray([2, 2, 2, 16, 8]); // polyphase filterbank outputs - this.phase = 0; - - this.pcm = { - samplerate: 0, - channels: 0, - length: 0, - samples: [new Float64Array(1152), new Float64Array(1152)] - }; -} - -/* costab[i] = cos(PI / (2 * 32) * i) */ -const costab1 = 0.998795456; -const costab2 = 0.995184727; -const costab3 = 0.989176510; -const costab4 = 0.980785280; -const costab5 = 0.970031253; -const costab6 = 0.956940336; -const costab7 = 0.941544065; -const costab8 = 0.923879533; -const costab9 = 0.903989293; -const costab10 = 0.881921264; -const costab11 = 0.857728610; -const costab12 = 0.831469612; -const costab13 = 0.803207531; -const costab14 = 0.773010453; -const costab15 = 0.740951125; -const costab16 = 0.707106781; -const costab17 = 0.671558955; -const costab18 = 0.634393284; -const costab19 = 0.595699304; -const costab20 = 0.555570233; -const costab21 = 0.514102744; -const costab22 = 0.471396737; -const costab23 = 0.427555093; -const costab24 = 0.382683432; -const costab25 = 0.336889853; -const costab26 = 0.290284677; -const costab27 = 0.242980180; -const costab28 = 0.195090322; -const costab29 = 0.146730474; -const costab30 = 0.098017140; -const costab31 = 0.049067674; - -/* - * NAME: dct32() - * DESCRIPTION: perform fast in[32].out[32] DCT - */ -MP3Synth.dct32 = function (_in, slot, lo, hi) { - var t0, t1, t2, t3, t4, t5, t6, t7; - var t8, t9, t10, t11, t12, t13, t14, t15; - var t16, t17, t18, t19, t20, t21, t22, t23; - var t24, t25, t26, t27, t28, t29, t30, t31; - var t32, t33, t34, t35, t36, t37, t38, t39; - var t40, t41, t42, t43, t44, t45, t46, t47; - var t48, t49, t50, t51, t52, t53, t54, t55; - var t56, t57, t58, t59, t60, t61, t62, t63; - var t64, t65, t66, t67, t68, t69, t70, t71; - var t72, t73, t74, t75, t76, t77, t78, t79; - var t80, t81, t82, t83, t84, t85, t86, t87; - var t88, t89, t90, t91, t92, t93, t94, t95; - var t96, t97, t98, t99, t100, t101, t102, t103; - var t104, t105, t106, t107, t108, t109, t110, t111; - var t112, t113, t114, t115, t116, t117, t118, t119; - var t120, t121, t122, t123, t124, t125, t126, t127; - var t128, t129, t130, t131, t132, t133, t134, t135; - var t136, t137, t138, t139, t140, t141, t142, t143; - var t144, t145, t146, t147, t148, t149, t150, t151; - var t152, t153, t154, t155, t156, t157, t158, t159; - var t160, t161, t162, t163, t164, t165, t166, t167; - var t168, t169, t170, t171, t172, t173, t174, t175; - var t176; - - t0 = _in[0] + _in[31]; t16 = ((_in[0] - _in[31]) * (costab1)); - t1 = _in[15] + _in[16]; t17 = ((_in[15] - _in[16]) * (costab31)); - - t41 = t16 + t17; - t59 = ((t16 - t17) * (costab2)); - t33 = t0 + t1; - t50 = ((t0 - t1) * ( costab2)); - - t2 = _in[7] + _in[24]; t18 = ((_in[7] - _in[24]) * (costab15)); - t3 = _in[8] + _in[23]; t19 = ((_in[8] - _in[23]) * (costab17)); - - t42 = t18 + t19; - t60 = ((t18 - t19) * (costab30)); - t34 = t2 + t3; - t51 = ((t2 - t3) * ( costab30)); - - t4 = _in[3] + _in[28]; t20 = ((_in[3] - _in[28]) * (costab7)); - t5 = _in[12] + _in[19]; t21 = ((_in[12] - _in[19]) * (costab25)); - - t43 = t20 + t21; - t61 = ((t20 - t21) * (costab14)); - t35 = t4 + t5; - t52 = ((t4 - t5) * ( costab14)); - - t6 = _in[4] + _in[27]; t22 = ((_in[4] - _in[27]) * (costab9)); - t7 = _in[11] + _in[20]; t23 = ((_in[11] - _in[20]) * (costab23)); - - t44 = t22 + t23; - t62 = ((t22 - t23) * (costab18)); - t36 = t6 + t7; - t53 = ((t6 - t7) * ( costab18)); - - t8 = _in[1] + _in[30]; t24 = ((_in[1] - _in[30]) * (costab3)); - t9 = _in[14] + _in[17]; t25 = ((_in[14] - _in[17]) * (costab29)); - - t45 = t24 + t25; - t63 = ((t24 - t25) * (costab6)); - t37 = t8 + t9; - t54 = ((t8 - t9) * ( costab6)); - - t10 = _in[6] + _in[25]; t26 = ((_in[6] - _in[25]) * (costab13)); - t11 = _in[9] + _in[22]; t27 = ((_in[9] - _in[22]) * (costab19)); - - t46 = t26 + t27; - t64 = ((t26 - t27) * (costab26)); - t38 = t10 + t11; - t55 = ((t10 - t11) * (costab26)); - - t12 = _in[2] + _in[29]; t28 = ((_in[2] - _in[29]) * (costab5)); - t13 = _in[13] + _in[18]; t29 = ((_in[13] - _in[18]) * (costab27)); - - t47 = t28 + t29; - t65 = ((t28 - t29) * (costab10)); - t39 = t12 + t13; - t56 = ((t12 - t13) * (costab10)); - - t14 = _in[5] + _in[26]; t30 = ((_in[5] - _in[26]) * (costab11)); - t15 = _in[10] + _in[21]; t31 = ((_in[10] - _in[21]) * (costab21)); - - t48 = t30 + t31; - t66 = ((t30 - t31) * (costab22)); - t40 = t14 + t15; - t57 = ((t14 - t15) * (costab22)); - - t69 = t33 + t34; t89 = ((t33 - t34) * (costab4)); - t70 = t35 + t36; t90 = ((t35 - t36) * (costab28)); - t71 = t37 + t38; t91 = ((t37 - t38) * (costab12)); - t72 = t39 + t40; t92 = ((t39 - t40) * (costab20)); - t73 = t41 + t42; t94 = ((t41 - t42) * (costab4)); - t74 = t43 + t44; t95 = ((t43 - t44) * (costab28)); - t75 = t45 + t46; t96 = ((t45 - t46) * (costab12)); - t76 = t47 + t48; t97 = ((t47 - t48) * (costab20)); - - t78 = t50 + t51; t100 = ((t50 - t51) * (costab4)); - t79 = t52 + t53; t101 = ((t52 - t53) * (costab28)); - t80 = t54 + t55; t102 = ((t54 - t55) * (costab12)); - t81 = t56 + t57; t103 = ((t56 - t57) * (costab20)); - - t83 = t59 + t60; t106 = ((t59 - t60) * (costab4)); - t84 = t61 + t62; t107 = ((t61 - t62) * (costab28)); - t85 = t63 + t64; t108 = ((t63 - t64) * (costab12)); - t86 = t65 + t66; t109 = ((t65 - t66) * (costab20)); - - t113 = t69 + t70; - t114 = t71 + t72; - - /* 0 */ hi[15][slot] = t113 + t114; - /* 16 */ lo[ 0][slot] = ((t113 - t114) * (costab16)); - - t115 = t73 + t74; - t116 = t75 + t76; - - t32 = t115 + t116; - - /* 1 */ hi[14][slot] = t32; - - t118 = t78 + t79; - t119 = t80 + t81; - - t58 = t118 + t119; - - /* 2 */ hi[13][slot] = t58; - - t121 = t83 + t84; - t122 = t85 + t86; - - t67 = t121 + t122; - - t49 = (t67 * 2) - t32; - - /* 3 */ hi[12][slot] = t49; - - t125 = t89 + t90; - t126 = t91 + t92; - - t93 = t125 + t126; - - /* 4 */ hi[11][slot] = t93; - - t128 = t94 + t95; - t129 = t96 + t97; - - t98 = t128 + t129; - - t68 = (t98 * 2) - t49; - - /* 5 */ hi[10][slot] = t68; - - t132 = t100 + t101; - t133 = t102 + t103; - - t104 = t132 + t133; - - t82 = (t104 * 2) - t58; - - /* 6 */ hi[ 9][slot] = t82; - - t136 = t106 + t107; - t137 = t108 + t109; - - t110 = t136 + t137; - - t87 = (t110 * 2) - t67; - - t77 = (t87 * 2) - t68; - - /* 7 */ hi[ 8][slot] = t77; - - t141 = ((t69 - t70) * (costab8)); - t142 = ((t71 - t72) * (costab24)); - t143 = t141 + t142; - - /* 8 */ hi[ 7][slot] = t143; - /* 24 */ lo[ 8][slot] = - (((t141 - t142) * (costab16) * 2)) - t143; - - t144 = ((t73 - t74) * (costab8)); - t145 = ((t75 - t76) * (costab24)); - t146 = t144 + t145; - - t88 = (t146 * 2) - t77; - - /* 9 */ hi[ 6][slot] = t88; - - t148 = ((t78 - t79) * (costab8)); - t149 = ((t80 - t81) * (costab24)); - t150 = t148 + t149; - - t105 = (t150 * 2) - t82; - - /* 10 */ hi[ 5][slot] = t105; - - t152 = ((t83 - t84) * (costab8)); - t153 = ((t85 - t86) * (costab24)); - t154 = t152 + t153; - - t111 = (t154 * 2) - t87; - - t99 = (t111 * 2) - t88; - - /* 11 */ hi[ 4][slot] = t99; - - t157 = ((t89 - t90) * (costab8)); - t158 = ((t91 - t92) * (costab24)); - t159 = t157 + t158; - - t127 = (t159 * 2) - t93; - - /* 12 */ hi[ 3][slot] = t127; - - t160 = (((t125 - t126) * (costab16) * 2)) - t127; - - /* 20 */ lo[ 4][slot] = t160; - /* 28 */ lo[12][slot] = - (((((t157 - t158) * (costab16) * 2) - t159) * 2)) - t160; - - t161 = ((t94 - t95) * (costab8)); - t162 = ((t96 - t97) * (costab24)); - t163 = t161 + t162; - - t130 = (t163 * 2) - t98; - - t112 = (t130 * 2) - t99; - - /* 13 */ hi[ 2][slot] = t112; - - t164 = (((t128 - t129) * (costab16) * 2)) - t130; - - t166 = ((t100 - t101) * (costab8)); - t167 = ((t102 - t103) * (costab24)); - t168 = t166 + t167; - - t134 = (t168 * 2) - t104; - - t120 = (t134 * 2) - t105; - - /* 14 */ hi[ 1][slot] = t120; - - t135 = (((t118 - t119) * (costab16) * 2)) - t120; - - /* 18 */ lo[ 2][slot] = t135; - - t169 = (((t132 - t133) * (costab16) * 2)) - t134; - - t151 = (t169 * 2) - t135; - - /* 22 */ lo[ 6][slot] = t151; - - t170 = (((((t148 - t149) * (costab16) * 2) - t150) * 2)) - t151; - - /* 26 */ lo[10][slot] = t170; - /* 30 */ lo[14][slot] = - (((((((t166 - t167) * (costab16)) * 2 - - t168) * 2) - t169) * 2) - t170); - - t171 = ((t106 - t107) * (costab8)); - t172 = ((t108 - t109) * (costab24)); - t173 = t171 + t172; - - t138 = (t173 * 2) - t110; - t123 = (t138 * 2) - t111; - t139 = (((t121 - t122) * (costab16) * 2)) - t123; - t117 = (t123 * 2) - t112; - - /* 15 */ hi[ 0][slot] = t117; - - t124 = (((t115 - t116) * (costab16) * 2)) - t117; - - /* 17 */ lo[ 1][slot] = t124; - - t131 = (t139 * 2) - t124; - - /* 19 */ lo[ 3][slot] = t131; - - t140 = (t164 * 2) - t131; - - /* 21 */ lo[ 5][slot] = t140; - - t174 = (((t136 - t137) * (costab16) * 2)) - t138; - t155 = (t174 * 2) - t139; - t147 = (t155 * 2) - t140; - - /* 23 */ lo[ 7][slot] = t147; - - t156 = (((((t144 - t145) * (costab16) * 2) - t146) * 2)) - t147; - - /* 25 */ lo[ 9][slot] = t156; - - t175 = (((((t152 - t153) * (costab16) * 2) - t154) * 2)) - t155; - t165 = (t175 * 2) - t156; - - /* 27 */ lo[11][slot] = t165; - - t176 = (((((((t161 - t162) * (costab16) * 2)) - - t163) * 2) - t164) * 2) - t165; - - /* 29 */ lo[13][slot] = t176; - /* 31 */ lo[15][slot] = - (((((((((t171 - t172) * (costab16)) * 2 - - t173) * 2) - t174) * 2) - t175) * 2) - t176); - - /* - * Totals: - * 80 multiplies - * 80 additions - * 119 subtractions - * 49 shifts (not counting SSO) - */ -}; - -/* - * These are the coefficients for the subband synthesis window. This is a - * reordered version of Table B.3 from ISO/IEC 11172-3. - */ -const D = [ - [ 0.000000000, /* 0 */ - -0.000442505, - 0.003250122, - -0.007003784, - 0.031082153, - -0.078628540, - 0.100311279, - -0.572036743, - 1.144989014, - 0.572036743, - 0.100311279, - 0.078628540, - 0.031082153, - 0.007003784, - 0.003250122, - 0.000442505, - - 0.000000000, - -0.000442505, - 0.003250122, - -0.007003784, - 0.031082153, - -0.078628540, - 0.100311279, - -0.572036743, - 1.144989014, - 0.572036743, - 0.100311279, - 0.078628540, - 0.031082153, - 0.007003784, - 0.003250122, - 0.000442505 ], - - [ -0.000015259, /* 1 */ - -0.000473022, - 0.003326416, - -0.007919312, - 0.030517578, - -0.084182739, - 0.090927124, - -0.600219727, - 1.144287109, - 0.543823242, - 0.108856201, - 0.073059082, - 0.031478882, - 0.006118774, - 0.003173828, - 0.000396729, - - -0.000015259, - -0.000473022, - 0.003326416, - -0.007919312, - 0.030517578, - -0.084182739, - 0.090927124, - -0.600219727, - 1.144287109, - 0.543823242, - 0.108856201, - 0.073059082, - 0.031478882, - 0.006118774, - 0.003173828, - 0.000396729 ], - - [ -0.000015259, /* 2 */ - -0.000534058, - 0.003387451, - -0.008865356, - 0.029785156, - -0.089706421, - 0.080688477, - -0.628295898, - 1.142211914, - 0.515609741, - 0.116577148, - 0.067520142, - 0.031738281, - 0.005294800, - 0.003082275, - 0.000366211, - - -0.000015259, - -0.000534058, - 0.003387451, - -0.008865356, - 0.029785156, - -0.089706421, - 0.080688477, - -0.628295898, - 1.142211914, - 0.515609741, - 0.116577148, - 0.067520142, - 0.031738281, - 0.005294800, - 0.003082275, - 0.000366211 ], - - [ -0.000015259, /* 3 */ - -0.000579834, - 0.003433228, - -0.009841919, - 0.028884888, - -0.095169067, - 0.069595337, - -0.656219482, - 1.138763428, - 0.487472534, - 0.123474121, - 0.061996460, - 0.031845093, - 0.004486084, - 0.002990723, - 0.000320435, - - -0.000015259, - -0.000579834, - 0.003433228, - -0.009841919, - 0.028884888, - -0.095169067, - 0.069595337, - -0.656219482, - 1.138763428, - 0.487472534, - 0.123474121, - 0.061996460, - 0.031845093, - 0.004486084, - 0.002990723, - 0.000320435 ], - - [ -0.000015259, /* 4 */ - -0.000625610, - 0.003463745, - -0.010848999, - 0.027801514, - -0.100540161, - 0.057617187, - -0.683914185, - 1.133926392, - 0.459472656, - 0.129577637, - 0.056533813, - 0.031814575, - 0.003723145, - 0.002899170, - 0.000289917, - - -0.000015259, - -0.000625610, - 0.003463745, - -0.010848999, - 0.027801514, - -0.100540161, - 0.057617187, - -0.683914185, - 1.133926392, - 0.459472656, - 0.129577637, - 0.056533813, - 0.031814575, - 0.003723145, - 0.002899170, - 0.000289917 ], - - [ -0.000015259, /* 5 */ - -0.000686646, - 0.003479004, - -0.011886597, - 0.026535034, - -0.105819702, - 0.044784546, - -0.711318970, - 1.127746582, - 0.431655884, - 0.134887695, - 0.051132202, - 0.031661987, - 0.003005981, - 0.002792358, - 0.000259399, - - -0.000015259, - -0.000686646, - 0.003479004, - -0.011886597, - 0.026535034, - -0.105819702, - 0.044784546, - -0.711318970, - 1.127746582, - 0.431655884, - 0.134887695, - 0.051132202, - 0.031661987, - 0.003005981, - 0.002792358, - 0.000259399 ], - - [ -0.000015259, /* 6 */ - -0.000747681, - 0.003479004, - -0.012939453, - 0.025085449, - -0.110946655, - 0.031082153, - -0.738372803, - 1.120223999, - 0.404083252, - 0.139450073, - 0.045837402, - 0.031387329, - 0.002334595, - 0.002685547, - 0.000244141, - - -0.000015259, - -0.000747681, - 0.003479004, - -0.012939453, - 0.025085449, - -0.110946655, - 0.031082153, - -0.738372803, - 1.120223999, - 0.404083252, - 0.139450073, - 0.045837402, - 0.031387329, - 0.002334595, - 0.002685547, - 0.000244141 ], - - [ -0.000030518, /* 7 */ - -0.000808716, - 0.003463745, - -0.014022827, - 0.023422241, - -0.115921021, - 0.016510010, - -0.765029907, - 1.111373901, - 0.376800537, - 0.143264771, - 0.040634155, - 0.031005859, - 0.001693726, - 0.002578735, - 0.000213623, - - -0.000030518, - -0.000808716, - 0.003463745, - -0.014022827, - 0.023422241, - -0.115921021, - 0.016510010, - -0.765029907, - 1.111373901, - 0.376800537, - 0.143264771, - 0.040634155, - 0.031005859, - 0.001693726, - 0.002578735, - 0.000213623 ], - - [ -0.000030518, /* 8 */ - -0.000885010, - 0.003417969, - -0.015121460, - 0.021575928, - -0.120697021, - 0.001068115, - -0.791213989, - 1.101211548, - 0.349868774, - 0.146362305, - 0.035552979, - 0.030532837, - 0.001098633, - 0.002456665, - 0.000198364, - - -0.000030518, - -0.000885010, - 0.003417969, - -0.015121460, - 0.021575928, - -0.120697021, - 0.001068115, - -0.791213989, - 1.101211548, - 0.349868774, - 0.146362305, - 0.035552979, - 0.030532837, - 0.001098633, - 0.002456665, - 0.000198364 ], - - [ -0.000030518, /* 9 */ - -0.000961304, - 0.003372192, - -0.016235352, - 0.019531250, - -0.125259399, - -0.015228271, - -0.816864014, - 1.089782715, - 0.323318481, - 0.148773193, - 0.030609131, - 0.029937744, - 0.000549316, - 0.002349854, - 0.000167847, - - -0.000030518, - -0.000961304, - 0.003372192, - -0.016235352, - 0.019531250, - -0.125259399, - -0.015228271, - -0.816864014, - 1.089782715, - 0.323318481, - 0.148773193, - 0.030609131, - 0.029937744, - 0.000549316, - 0.002349854, - 0.000167847 ], - - [ -0.000030518, /* 10 */ - -0.001037598, - 0.003280640, - -0.017349243, - 0.017257690, - -0.129562378, - -0.032379150, - -0.841949463, - 1.077117920, - 0.297210693, - 0.150497437, - 0.025817871, - 0.029281616, - 0.000030518, - 0.002243042, - 0.000152588, - - -0.000030518, - -0.001037598, - 0.003280640, - -0.017349243, - 0.017257690, - -0.129562378, - -0.032379150, - -0.841949463, - 1.077117920, - 0.297210693, - 0.150497437, - 0.025817871, - 0.029281616, - 0.000030518, - 0.002243042, - 0.000152588 ], - - [ -0.000045776, /* 11 */ - -0.001113892, - 0.003173828, - -0.018463135, - 0.014801025, - -0.133590698, - -0.050354004, - -0.866363525, - 1.063217163, - 0.271591187, - 0.151596069, - 0.021179199, - 0.028533936, - -0.000442505, - 0.002120972, - 0.000137329, - - -0.000045776, - -0.001113892, - 0.003173828, - -0.018463135, - 0.014801025, - -0.133590698, - -0.050354004, - -0.866363525, - 1.063217163, - 0.271591187, - 0.151596069, - 0.021179199, - 0.028533936, - -0.000442505, - 0.002120972, - 0.000137329 ], - - [ -0.000045776, /* 12 */ - -0.001205444, - 0.003051758, - -0.019577026, - 0.012115479, - -0.137298584, - -0.069168091, - -0.890090942, - 1.048156738, - 0.246505737, - 0.152069092, - 0.016708374, - 0.027725220, - -0.000869751, - 0.002014160, - 0.000122070, - - -0.000045776, - -0.001205444, - 0.003051758, - -0.019577026, - 0.012115479, - -0.137298584, - -0.069168091, - -0.890090942, - 1.048156738, - 0.246505737, - 0.152069092, - 0.016708374, - 0.027725220, - -0.000869751, - 0.002014160, - 0.000122070 ], - - [ -0.000061035, /* 13 */ - -0.001296997, - 0.002883911, - -0.020690918, - 0.009231567, - -0.140670776, - -0.088775635, - -0.913055420, - 1.031936646, - 0.221984863, - 0.151962280, - 0.012420654, - 0.026840210, - -0.001266479, - 0.001907349, - 0.000106812, - - -0.000061035, - -0.001296997, - 0.002883911, - -0.020690918, - 0.009231567, - -0.140670776, - -0.088775635, - -0.913055420, - 1.031936646, - 0.221984863, - 0.151962280, - 0.012420654, - 0.026840210, - -0.001266479, - 0.001907349, - 0.000106812 ], - - [ -0.000061035, /* 14 */ - -0.001388550, - 0.002700806, - -0.021789551, - 0.006134033, - -0.143676758, - -0.109161377, - -0.935195923, - 1.014617920, - 0.198059082, - 0.151306152, - 0.008316040, - 0.025909424, - -0.001617432, - 0.001785278, - 0.000106812, - - -0.000061035, - -0.001388550, - 0.002700806, - -0.021789551, - 0.006134033, - -0.143676758, - -0.109161377, - -0.935195923, - 1.014617920, - 0.198059082, - 0.151306152, - 0.008316040, - 0.025909424, - -0.001617432, - 0.001785278, - 0.000106812 ], - - [ -0.000076294, /* 15 */ - -0.001480103, - 0.002487183, - -0.022857666, - 0.002822876, - -0.146255493, - -0.130310059, - -0.956481934, - 0.996246338, - 0.174789429, - 0.150115967, - 0.004394531, - 0.024932861, - -0.001937866, - 0.001693726, - 0.000091553, - - -0.000076294, - -0.001480103, - 0.002487183, - -0.022857666, - 0.002822876, - -0.146255493, - -0.130310059, - -0.956481934, - 0.996246338, - 0.174789429, - 0.150115967, - 0.004394531, - 0.024932861, - -0.001937866, - 0.001693726, - 0.000091553 ], - - [ -0.000076294, /* 16 */ - -0.001586914, - 0.002227783, - -0.023910522, - -0.000686646, - -0.148422241, - -0.152206421, - -0.976852417, - 0.976852417, - 0.152206421, - 0.148422241, - 0.000686646, - 0.023910522, - -0.002227783, - 0.001586914, - 0.000076294, - - -0.000076294, - -0.001586914, - 0.002227783, - -0.023910522, - -0.000686646, - -0.148422241, - -0.152206421, - -0.976852417, - 0.976852417, - 0.152206421, - 0.148422241, - 0.000686646, - 0.023910522, - -0.002227783, - 0.001586914, - 0.000076294 ] -]; - -/* - * perform full frequency PCM synthesis - */ -MP3Synth.prototype.full = function(frame, nch, ns) { - var Dptr, hi, lo, ptr; - - for (var ch = 0; ch < nch; ++ch) { - var sbsample = frame.sbsample[ch]; - var filter = this.filter[ch]; - var phase = this.phase; - var pcm = this.pcm.samples[ch]; - var pcm1Ptr = 0; - var pcm2Ptr = 0; - - for (var s = 0; s < ns; ++s) { - MP3Synth.dct32(sbsample[s], phase >> 1, filter[0][phase & 1], filter[1][phase & 1]); - - var pe = phase & ~1; - var po = ((phase - 1) & 0xf) | 1; - - /* calculate 32 samples */ - var fe = filter[0][ phase & 1]; - var fx = filter[0][~phase & 1]; - var fo = filter[1][~phase & 1]; - - var fePtr = 0; - var fxPtr = 0; - var foPtr = 0; - - Dptr = 0; - - ptr = D[Dptr]; - _fx = fx[fxPtr]; - _fe = fe[fePtr]; - - lo = _fx[0] * ptr[po + 0]; - lo += _fx[1] * ptr[po + 14]; - lo += _fx[2] * ptr[po + 12]; - lo += _fx[3] * ptr[po + 10]; - lo += _fx[4] * ptr[po + 8]; - lo += _fx[5] * ptr[po + 6]; - lo += _fx[6] * ptr[po + 4]; - lo += _fx[7] * ptr[po + 2]; - lo = -lo; - - lo += _fe[0] * ptr[pe + 0]; - lo += _fe[1] * ptr[pe + 14]; - lo += _fe[2] * ptr[pe + 12]; - lo += _fe[3] * ptr[pe + 10]; - lo += _fe[4] * ptr[pe + 8]; - lo += _fe[5] * ptr[pe + 6]; - lo += _fe[6] * ptr[pe + 4]; - lo += _fe[7] * ptr[pe + 2]; - - pcm[pcm1Ptr++] = lo; - pcm2Ptr = pcm1Ptr + 30; - - for (var sb = 1; sb < 16; ++sb) { - ++fePtr; - ++Dptr; - - /* D[32 - sb][i] === -D[sb][31 - i] */ - - ptr = D[Dptr]; - _fo = fo[foPtr]; - _fe = fe[fePtr]; - - lo = _fo[0] * ptr[po + 0]; - lo += _fo[1] * ptr[po + 14]; - lo += _fo[2] * ptr[po + 12]; - lo += _fo[3] * ptr[po + 10]; - lo += _fo[4] * ptr[po + 8]; - lo += _fo[5] * ptr[po + 6]; - lo += _fo[6] * ptr[po + 4]; - lo += _fo[7] * ptr[po + 2]; - lo = -lo; - - lo += _fe[7] * ptr[pe + 2]; - lo += _fe[6] * ptr[pe + 4]; - lo += _fe[5] * ptr[pe + 6]; - lo += _fe[4] * ptr[pe + 8]; - lo += _fe[3] * ptr[pe + 10]; - lo += _fe[2] * ptr[pe + 12]; - lo += _fe[1] * ptr[pe + 14]; - lo += _fe[0] * ptr[pe + 0]; - - pcm[pcm1Ptr++] = lo; - - lo = _fe[0] * ptr[-pe + 31 - 16]; - lo += _fe[1] * ptr[-pe + 31 - 14]; - lo += _fe[2] * ptr[-pe + 31 - 12]; - lo += _fe[3] * ptr[-pe + 31 - 10]; - lo += _fe[4] * ptr[-pe + 31 - 8]; - lo += _fe[5] * ptr[-pe + 31 - 6]; - lo += _fe[6] * ptr[-pe + 31 - 4]; - lo += _fe[7] * ptr[-pe + 31 - 2]; - - lo += _fo[7] * ptr[-po + 31 - 2]; - lo += _fo[6] * ptr[-po + 31 - 4]; - lo += _fo[5] * ptr[-po + 31 - 6]; - lo += _fo[4] * ptr[-po + 31 - 8]; - lo += _fo[3] * ptr[-po + 31 - 10]; - lo += _fo[2] * ptr[-po + 31 - 12]; - lo += _fo[1] * ptr[-po + 31 - 14]; - lo += _fo[0] * ptr[-po + 31 - 16]; - - pcm[pcm2Ptr--] = lo; - ++foPtr; - } - - ++Dptr; - - ptr = D[Dptr]; - _fo = fo[foPtr]; - - lo = _fo[0] * ptr[po + 0]; - lo += _fo[1] * ptr[po + 14]; - lo += _fo[2] * ptr[po + 12]; - lo += _fo[3] * ptr[po + 10]; - lo += _fo[4] * ptr[po + 8]; - lo += _fo[5] * ptr[po + 6]; - lo += _fo[6] * ptr[po + 4]; - lo += _fo[7] * ptr[po + 2]; - - pcm[pcm1Ptr] = -lo; - pcm1Ptr += 16; - phase = (phase + 1) % 16; - } - } -}; - -// TODO: synth.half() - -/* - * NAME: synth.frame() - * DESCRIPTION: perform PCM synthesis of frame subband samples - */ -MP3Synth.prototype.frame = function (frame) { - var nch = frame.header.nchannels(); - var ns = frame.header.nbsamples(); - - this.pcm.samplerate = frame.header.samplerate; - this.pcm.channels = nch; - this.pcm.length = 32 * ns; - - /* - if (frame.options & Mad.Option.HALFSAMPLERATE) { - this.pcm.samplerate /= 2; - this.pcm.length /= 2; - - throw new Error("HALFSAMPLERATE is not supported. What do you think? As if I have the time for this"); - } - */ - - this.full(frame, nch, ns); - this.phase = (this.phase + ns) % 16; -}; - -module.exports = MP3Synth; - -},{"./utils":15}],14:[function(require,module,exports){ -/* - * These are the scalefactor values for Layer I and Layer II. - * The values are from Table B.1 of ISO/IEC 11172-3. - * - * Strictly speaking, Table B.1 has only 63 entries (0-62), thus a strict - * interpretation of ISO/IEC 11172-3 would suggest that a scalefactor index of - * 63 is invalid. However, for better compatibility with current practices, we - * add a 64th entry. - */ -exports.SF_TABLE = new Float32Array([ - 2.000000000000, 1.587401051968, 1.259921049895, 1.000000000000, - 0.793700525984, 0.629960524947, 0.500000000000, 0.396850262992, - 0.314980262474, 0.250000000000, 0.198425131496, 0.157490131237, - 0.125000000000, 0.099212565748, 0.078745065618, 0.062500000000, - 0.049606282874, 0.039372532809, 0.031250000000, 0.024803141437, - 0.019686266405, 0.015625000000, 0.012401570719, 0.009843133202, - 0.007812500000, 0.006200785359, 0.004921566601, 0.003906250000, - 0.003100392680, 0.002460783301, 0.001953125000, 0.001550196340, - 0.001230391650, 0.000976562500, 0.000775098170, 0.000615195825, - 0.000488281250, 0.000387549085, 0.000307597913, 0.000244140625, - 0.000193774542, 0.000153798956, 0.000122070313, 0.000096887271, - 0.000076899478, 0.000061035156, 0.000048443636, 0.000038449739, - 0.000030517578, 0.000024221818, 0.000019224870, 0.000015258789, - 0.000012110909, 0.000009612435, 0.000007629395, 0.000006055454, - 0.000004806217, 0.000003814697, 0.000003027727, 0.000002403109, - 0.000001907349, 0.000001513864, 0.000001201554, 0.000000000000 -]); - -/* - * MPEG-1 scalefactor band widths - * derived from Table B.8 of ISO/IEC 11172-3 - */ -const SFB_48000_LONG = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10, - 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192 -]); - -const SFB_44100_LONG = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10, - 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158 -]); - -const SFB_32000_LONG = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12, - 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26 -]); - -const SFB_48000_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, - 6, 6, 6, 6, 6, 10, 10, 10, 12, 12, 12, 14, 14, - 14, 16, 16, 16, 20, 20, 20, 26, 26, 26, 66, 66, 66 -]); - -const SFB_44100_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, - 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, - 14, 18, 18, 18, 22, 22, 22, 30, 30, 30, 56, 56, 56 -]); - -const SFB_32000_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, - 6, 6, 8, 8, 8, 12, 12, 12, 16, 16, 16, 20, 20, - 20, 26, 26, 26, 34, 34, 34, 42, 42, 42, 12, 12, 12 -]); - -const SFB_48000_MIXED = new Uint8Array([ - /* long */ 4, 4, 4, 4, 4, 4, 6, 6, - /* short */ 4, 4, 4, 6, 6, 6, 6, 6, 6, 10, - 10, 10, 12, 12, 12, 14, 14, 14, 16, 16, - 16, 20, 20, 20, 26, 26, 26, 66, 66, 66 -]); - -const SFB_44100_MIXED = new Uint8Array([ - /* long */ 4, 4, 4, 4, 4, 4, 6, 6, - /* short */ 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, - 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, - 18, 22, 22, 22, 30, 30, 30, 56, 56, 56 -]); - -const SFB_32000_MIXED = new Uint8Array([ - /* long */ 4, 4, 4, 4, 4, 4, 6, 6, - /* short */ 4, 4, 4, 6, 6, 6, 8, 8, 8, 12, - 12, 12, 16, 16, 16, 20, 20, 20, 26, 26, - 26, 34, 34, 34, 42, 42, 42, 12, 12, 12 -]); - -/* - * MPEG-2 scalefactor band widths - * derived from Table B.2 of ISO/IEC 13818-3 - */ -const SFB_24000_LONG = new Uint8Array([ - 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 18, 22, 26, 32, 38, 46, 54, 62, 70, 76, 36 -]); - -const SFB_22050_LONG = new Uint8Array([ - 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54 -]); - -const SFB_16000_LONG = SFB_22050_LONG; - -const SFB_24000_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, - 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, - 18, 24, 24, 24, 32, 32, 32, 44, 44, 44, 12, 12, 12 -]); - -const SFB_22050_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, - 6, 6, 8, 8, 8, 10, 10, 10, 14, 14, 14, 18, 18, - 18, 26, 26, 26, 32, 32, 32, 42, 42, 42, 18, 18, 18 -]); - -const SFB_16000_SHORT = new Uint8Array([ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, - 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, - 18, 24, 24, 24, 30, 30, 30, 40, 40, 40, 18, 18, 18 -]); - -const SFB_24000_MIXED = new Uint8Array([ - /* long */ 6, 6, 6, 6, 6, 6, - /* short */ 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, - 12, 12, 14, 14, 14, 18, 18, 18, 24, 24, - 24, 32, 32, 32, 44, 44, 44, 12, 12, 12 -]); - -const SFB_22050_MIXED = new Uint8Array([ - /* long */ 6, 6, 6, 6, 6, 6, - /* short */ 6, 6, 6, 6, 6, 6, 8, 8, 8, 10, - 10, 10, 14, 14, 14, 18, 18, 18, 26, 26, - 26, 32, 32, 32, 42, 42, 42, 18, 18, 18 -]); - -const SFB_16000_MIXED = new Uint8Array([ - /* long */ 6, 6, 6, 6, 6, 6, - /* short */ 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, - 12, 12, 14, 14, 14, 18, 18, 18, 24, 24, - 24, 30, 30, 30, 40, 40, 40, 18, 18, 18 -]); - -/* - * MPEG 2.5 scalefactor band widths - * derived from public sources - */ -const SFB_12000_LONG = SFB_16000_LONG; -const SFB_11025_LONG = SFB_12000_LONG; - -const SFB_8000_LONG = new Uint8Array([ - 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32, - 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2 -]); - -const SFB_12000_SHORT = SFB_16000_SHORT; -const SFB_11025_SHORT = SFB_12000_SHORT; - -const SFB_8000_SHORT = new Uint8Array([ - 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 16, - 16, 16, 20, 20, 20, 24, 24, 24, 28, 28, 28, 36, 36, - 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 26, 26 -]); - -const SFB_12000_MIXED = SFB_16000_MIXED; -const SFB_11025_MIXED = SFB_12000_MIXED; - -/* the 8000 Hz short block scalefactor bands do not break after - the first 36 frequency lines, so this is probably wrong */ -const SFB_8000_MIXED = new Uint8Array([ - /* long */ 12, 12, 12, - /* short */ 4, 4, 4, 8, 8, 8, 12, 12, 12, 16, 16, 16, - 20, 20, 20, 24, 24, 24, 28, 28, 28, 36, 36, 36, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 26, 26 -]); - -exports.SFBWIDTH_TABLE = [ - { l: SFB_48000_LONG, s: SFB_48000_SHORT, m: SFB_48000_MIXED }, - { l: SFB_44100_LONG, s: SFB_44100_SHORT, m: SFB_44100_MIXED }, - { l: SFB_32000_LONG, s: SFB_32000_SHORT, m: SFB_32000_MIXED }, - { l: SFB_24000_LONG, s: SFB_24000_SHORT, m: SFB_24000_MIXED }, - { l: SFB_22050_LONG, s: SFB_22050_SHORT, m: SFB_22050_MIXED }, - { l: SFB_16000_LONG, s: SFB_16000_SHORT, m: SFB_16000_MIXED }, - { l: SFB_12000_LONG, s: SFB_12000_SHORT, m: SFB_12000_MIXED }, - { l: SFB_11025_LONG, s: SFB_11025_SHORT, m: SFB_11025_MIXED }, - { l: SFB_8000_LONG, s: SFB_8000_SHORT, m: SFB_8000_MIXED } -]; - -exports.PRETAB = new Uint8Array([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 -]); - -/* - * fractional powers of two - * used for requantization and joint stereo decoding - * - * ROOT_TABLE[3 + x] = 2^(x/4) - */ -exports.ROOT_TABLE = new Float32Array([ - /* 2^(-3/4) */ 0.59460355750136, - /* 2^(-2/4) */ 0.70710678118655, - /* 2^(-1/4) */ 0.84089641525371, - /* 2^( 0/4) */ 1.00000000000000, - /* 2^(+1/4) */ 1.18920711500272, - /* 2^(+2/4) */ 1.41421356237310, - /* 2^(+3/4) */ 1.68179283050743 -]); - -exports.CS = new Float32Array([ - +0.857492926 , +0.881741997, - +0.949628649 , +0.983314592, - +0.995517816 , +0.999160558, - +0.999899195 , +0.999993155 -]); - -exports.CA = new Float32Array([ - -0.514495755, -0.471731969, - -0.313377454, -0.181913200, - -0.094574193, -0.040965583, - -0.014198569, -0.003699975 -]); - -exports.COUNT1TABLE_SELECT = 0x01; -exports.SCALEFAC_SCALE = 0x02; -exports.PREFLAG = 0x04; -exports.MIXED_BLOCK_FLAG = 0x08; - -exports.I_STEREO = 0x1; -exports.MS_STEREO = 0x2; - -/* - * windowing coefficients for long blocks - * derived from section 2.4.3.4.10.3 of ISO/IEC 11172-3 - * - * WINDOW_L[i] = sin((PI / 36) * (i + 1/2)) - */ -exports.WINDOW_L = new Float32Array([ - 0.043619387, 0.130526192, - 0.216439614, 0.300705800, - 0.382683432, 0.461748613, - 0.537299608, 0.608761429, - 0.675590208, 0.737277337, - 0.793353340, 0.843391446, - - 0.887010833, 0.923879533, - 0.953716951, 0.976296007, - 0.991444861, 0.999048222, - 0.999048222, 0.991444861, - 0.976296007, 0.953716951, - 0.923879533, 0.887010833, - - 0.843391446, 0.793353340, - 0.737277337, 0.675590208, - 0.608761429, 0.537299608, - 0.461748613, 0.382683432, - 0.300705800, 0.216439614, - 0.130526192, 0.043619387 -]); - -/* - * windowing coefficients for short blocks - * derived from section 2.4.3.4.10.3 of ISO/IEC 11172-3 - * - * WINDOW_S[i] = sin((PI / 12) * (i + 1/2)) - */ -exports.WINDOW_S = new Float32Array([ - 0.130526192, 0.382683432, - 0.608761429, 0.793353340, - 0.923879533, 0.991444861, - 0.991444861, 0.923879533, - 0.793353340, 0.608761429, - 0.382683432, 0.130526192 -]); - -/* - * coefficients for intensity stereo processing - * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3 - * - * is_ratio[i] = tan(i * (PI / 12)) - * IS_TABLE[i] = is_ratio[i] / (1 + is_ratio[i]) - */ -exports.IS_TABLE = new Float32Array([ - 0.000000000, - 0.211324865, - 0.366025404, - 0.500000000, - 0.633974596, - 0.788675135, - 1.000000000 -]); - -/* - * coefficients for LSF intensity stereo processing - * derived from section 2.4.3.2 of ISO/IEC 13818-3 - * - * IS_LSF_TABLE[0][i] = (1 / sqrt(sqrt(2)))^(i + 1) - * IS_LSF_TABLE[1][i] = (1 / sqrt(2)) ^(i + 1) - */ -exports.IS_LSF_TABLE = [ - new Float32Array([ - 0.840896415, - 0.707106781, - 0.594603558, - 0.500000000, - 0.420448208, - 0.353553391, - 0.297301779, - 0.250000000, - 0.210224104, - 0.176776695, - 0.148650889, - 0.125000000, - 0.105112052, - 0.088388348, - 0.074325445 - ]), - new Float32Array([ - 0.707106781, - 0.500000000, - 0.353553391, - 0.250000000, - 0.176776695, - 0.125000000, - 0.088388348, - 0.062500000, - 0.044194174, - 0.031250000, - 0.022097087, - 0.015625000, - 0.011048543, - 0.007812500, - 0.005524272 - ]) -]; - -/* - * scalefactor bit lengths - * derived from section 2.4.2.7 of ISO/IEC 11172-3 - */ -exports.SFLEN_TABLE = [ - { slen1: 0, slen2: 0 }, { slen1: 0, slen2: 1 }, { slen1: 0, slen2: 2 }, { slen1: 0, slen2: 3 }, - { slen1: 3, slen2: 0 }, { slen1: 1, slen2: 1 }, { slen1: 1, slen2: 2 }, { slen1: 1, slen2: 3 }, - { slen1: 2, slen2: 1 }, { slen1: 2, slen2: 2 }, { slen1: 2, slen2: 3 }, { slen1: 3, slen2: 1 }, - { slen1: 3, slen2: 2 }, { slen1: 3, slen2: 3 }, { slen1: 4, slen2: 2 }, { slen1: 4, slen2: 3 } -]; - -/* - * number of LSF scalefactor band values - * derived from section 2.4.3.2 of ISO/IEC 13818-3 - */ -exports.NSFB_TABLE = [ - [ [ 6, 5, 5, 5 ], - [ 9, 9, 9, 9 ], - [ 6, 9, 9, 9 ] ], - - [ [ 6, 5, 7, 3 ], - [ 9, 9, 12, 6 ], - [ 6, 9, 12, 6 ] ], - - [ [ 11, 10, 0, 0 ], - [ 18, 18, 0, 0 ], - [ 15, 18, 0, 0 ] ], - - [ [ 7, 7, 7, 0 ], - [ 12, 12, 12, 0 ], - [ 6, 15, 12, 0 ] ], - - [ [ 6, 6, 6, 3 ], - [ 12, 9, 9, 6 ], - [ 6, 12, 9, 6 ] ], - - [ [ 8, 8, 5, 0 ], - [ 15, 12, 9, 0 ], - [ 6, 18, 9, 0 ] ] -]; - -},{}],15:[function(require,module,exports){ -/** - * Makes a multidimensional array - */ -exports.makeArray = function(lengths, Type) { - if (!Type) Type = Float64Array; - - if (lengths.length === 1) { - return new Type(lengths[0]); - } - - var ret = [], - len = lengths[0]; - - for (var j = 0; j < len; j++) { - ret[j] = exports.makeArray(lengths.slice(1), Type); - } - - return ret; -}; - -},{}]},{},[1]) - - -//# sourceMappingURL=mp3.js.map \ No newline at end of file diff --git a/src/js/audio/mpg123.js b/src/js/audio/mpg123.js new file mode 100644 index 0000000..41d0f73 --- /dev/null +++ b/src/js/audio/mpg123.js @@ -0,0 +1,312 @@ +(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){return func}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+81968;__ATINIT__.push();allocate([51,51,51,51,51,51,227,191,31,133,235,81,184,30,225,191,31,133,235,81,184,30,213,191,174,71,225,122,20,174,199,191,82,184,30,133,235,81,184,191,203,161,69,182,243,253,164,191,134,90,211,188,227,20,141,191,172,173,216,95,118,79,110,191,93,61,127,102,158,160,230,63,0,0,0,0,0,136,57,61,68,23,117,250,82,176,230,63,0,0,0,0,0,0,216,60,254,217,11,117,18,192,230,63,0,0,0,0,0,120,40,189,191,118,212,221,220,207,230,63,0,0,0,0,0,192,30,61,41,26,101,60,178,223,230,63,0,0,0,0,0,0,216,188,227,58,89,152,146,239,230,63,0,0,0,0,0,0,188,188,134,147,81,249,125,255,230,63,0,0,0,0,0,216,47,189,163,45,244,102,116,15,231,63,0,0,0,0,0,136,44,189,195,95,236,232,117,31,231,63,0,0,0,0,0,192,19,61,5,207,234,134,130,47,231,63,0,0,0,0,0,48,56,189,82,129,165,72,154,63,231,63,0,0,0,0,0,192,0,189,252,204,215,53,189,79,231,63,0,0,0,0,0,136,47,61,241,103,66,86,235,95,231,63,0,0,0,0,0,224,3,61,72,109,171,177,36,112,231,63,0,0,0,0,0,208,39,189,56,93,222,79,105,128,231,63,0,0,0,0,0,0,221,188,0,29,172,56,185,144,231,63,0,0,0,0,0,0,227,60,120,1,235,115,20,161,231,63,0,0,0,0,0,0,237,188,96,208,118,9,123,177,231,63,0,0,0,0,0,64,32,61,51,193,48,1,237,193,231,63,0,0,0,0,0,0,160,60,54,134,255,98,106,210,231,63,0,0,0,0,0,144,38,189,59,78,207,54,243,226,231,63,0,0,0,0,0,224,2,189,232,195,145,132,135,243,231,63,0,0,0,0,0,88,36,189,78,27,62,84,39,4,232,63,0,0,0,0,0,0,51,61,26,7,209,173,210,20,232,63,0,0,0,0,0,0,15,61,126,205,76,153,137,37,232,63,0,0,0,0,0,192,33,189,208,66,185,30,76,54,232,63,0,0,0,0,0,208,41,61,181,202,35,70,26,71,232,63,0,0,0,0,0,16,71,61,188,91,159,23,244,87,232,63,0,0,0,0,0,96,34,61,175,145,68,155,217,104,232,63,0,0,0,0,0,196,50,189,149,163,49,217,202,121,232,63,0,0,0,0,0,0,35,189,184,101,138,217,199,138,232,63,0,0,0,0,0,128,42,189,0,88,120,164,208,155,232,63,0,0,0,0,0,0,237,188,35,162,42,66,229,172,232,63,0,0,0,0,0,40,51,61,250,25,214,186,5,190,232,63,0,0,0,0,0,180,66,61,131,67,181,22,50,207,232,63,0,0,0,0,0,208,46,189,76,102,8,94,106,224,232,63,0,0,0,0,0,80,32,189,7,120,21,153,174,241,232,63,0,0,0,0,0,40,40,61,14,44,40,208,254,2,233,63,0,0,0,0,0,176,28,189,150,255,145,11,91,20,233,63,0,0,0,0,0,224,5,189,249,47,170,83,195,37,233,63,0,0,0,0,0,64,245,60,74,198,205,176,55,55,233,63,0,0,0,0,0,32,23,61,174,152,95,43,184,72,233,63,0,0,0,0,0,0,9,189,203,82,200,203,68,90,233,63,0,0,0,0,0,104,37,61,33,111,118,154,221,107,233,63,0,0,0,0,0,208,54,189,42,78,222,159,130,125,233,63,0,0,0,0,0,0,1,189,163,35,122,228,51,143,233,63,0,0,0,0,0,0,45,61,4,6,202,112,241,160,233,63,0,0,0,0,0,164,56,189,137,255,83,77,187,178,233,63,0,0,0,0,0,92,53,61,91,241,163,130,145,196,233,63,0,0,0,0,0,184,38,61,197,184,75,25,116,214,233,63,0,0,0,0,0,0,236,188,142,35,227,25,99,232,233,63,0,0,0,0,0,208,23,61,2,243,7,141,94,250,233,63,0,0,0,0,0,64,22,61,77,229,93,123,102,12,234,63,0,0,0,0,0,0,245,188,246,184,142,237,122,30,234,63,0,0,0,0,0,224,9,61,39,46,74,236,155,48,234,63,0,0,0,0,0,216,42,61,93,10,70,128,201,66,234,63,0,0,0,0,0,240,26,189,155,37,62,178,3,85,234,63,0,0,0,0,0,96,11,61,19,98,244,138,74,103,234,63,0,0,0,0,0,136,56,61,167,179,48,19,158,121,234,63,0,0,0,0,0,32,17,61,141,46,193,83,254,139,234,63,0,0,0,0,0,192,6,61,210,252,121,85,107,158,234,63,0,0,0,0,0,184,41,189,184,111,53,33,229,176,234,63,0,0,0,0,0,112,43,61,129,243,211,191,107,195,234,63,0,0,0,0,0,0,217,60,128,39,60,58,255,213,234,63,0,0,0,0,0,0,228,60,163,210,90,153,159,232,234,63,0,0,0,0,0,144,44,189,103,243,34,230,76,251,234,63,0,0,0,0,0,80,22,61,144,183,141,41,7,14,235,63,0,0,0,0,0,212,47,61,169,137,154,108,206,32,235,63,0,0,0,0,0,112,18,61,75,26,79,184,162,51,235,63,0,0,0,0,0,71,77,61,231,71,183,21,132,70,235,63,0,0,0,0,0,56,56,189,58,89,229,141,114,89,235,63,0,0,0,0,0,0,152,60,106,197,241,41,110,108,235,63,0,0,0,0,0,208,10,61,80,94,251,242,118,127,235,63,0,0,0,0,0,128,222,60,178,73,39,242,140,146,235,63,0,0,0,0,0,192,4,189,3,6,161,48,176,165,235,63,0,0,0,0,0,112,13,189,102,111,154,183,224,184,235,63,0,0,0,0,0,144,13,61,255,193,75,144,30,204,235,63,0,0,0,0,0,160,2,61,111,161,243,195,105,223,235,63,0,0,0,0,0,120,31,189,184,29,215,91,194,242,235,63,0,0,0,0,0,160,16,189,233,178,65,97,40,6,236,63,0,0,0,0,0,64,17,189,224,82,133,221,155,25,236,63,0,0,0,0,0,224,11,61,238,100,250,217,28,45,236,63,0,0,0,0,0,64,9,189,47,208,255,95,171,64,236,63,0,0,0,0,0,208,14,189,21,253,250,120,71,84,236,63,0,0,0,0,0,102,57,61,203,208,87,46,241,103,236,63,0,0,0,0,0,16,26,189,182,193,136,137,168,123,236,63,0,0,0,0,128,69,88,189,51,231,6,148,109,143,236,63,0,0,0,0,0,72,26,189,223,196,81,87,64,163,236,63,0,0,0,0,0,0,203,60,148,144,239,220,32,183,236,63,0,0,0,0,0,64,1,61,137,22,109,46,15,203,236,63,0,0,0,0,0,32,240,60,18,196,93,85,11,223,236,63,0,0,0,0,0,96,243,60,59,171,91,91,21,243,236,63,0,0,0,0,0,144,6,189,188,137,7,74,45,7,237,63,0,0,0,0,0,160,9,61,250,200,8,43,83,27,237,63,0,0,0,0,0,224,21,189,133,138,13,8,135,47,237,63,0,0,0,0,0,40,29,61,3,162,202,234,200,67,237,63,0,0,0,0,0,160,1,61,145,164,251,220,24,88,237,63,0,0,0,0,0,0,223,60,161,230,98,232,118,108,237,63,0,0,0,0,0,160,3,189,78,131,201,22,227,128,237,63,0,0,0,0,0,216,12,189,144,96,255,113,93,149,237,63,0,0,0,0,0,192,244,60,174,50,219,3,230,169,237,63,0,0,0,0,0,144,255,60,37,131,58,214,124,190,237,63,0,0,0,0,0,128,233,60,69,180,1,243,33,211,237,63,0,0,0,0,0,32,245,188,191,5,28,100,213,231,237,63,0,0,0,0,0,112,29,189,236,154,123,51,151,252,237,63,0,0,0,0,0,20,22,189,94,125,25,107,103,17,238,63,0,0,0,0,0,72,11,61,231,163,245,20,70,38,238,63,0,0,0,0,0,206,64,61,92,238,22,59,51,59,238,63,0,0,0,0,0,104,12,61,180,63,139,231,46,80,238,63,0,0,0,0,0,48,9,189,104,109,103,36,57,101,238,63,0,0,0,0,0,0,229,188,68,76,199,251,81,122,238,63,0,0,0,0,0,248,7,189,38,183,205,119,121,143,238,63,0,0,0,0,0,112,243,188,232,144,164,162,175,164,238,63,0,0,0,0,0,208,229,60,228,202,124,134,244,185,238,63,0,0,0,0,0,26,22,61,13,104,142,45,72,207,238,63,0,0,0,0,0,80,245,60,20,133,24,162,170,228,238,63,0,0,0,0,0,64,198,60,19,90,97,238,27,250,238,63,0,0,0,0,0,128,238,188,6,65,182,28,156,15,239,63,0,0,0,0,0,136,250,188,99,185,107,55,43,37,239,63,0,0,0,0,0,144,44,189,117,114,221,72,201,58,239,63,0,0,0,0,0,0,170,60,36,69,110,91,118,80,239,63,0,0,0,0,0,240,244,188,253,68,136,121,50,102,239,63,0,0,0,0,0,128,202,60,56,190,156,173,253,123,239,63,0,0,0,0,0,188,250,60,130,60,36,2,216,145,239,63,0,0,0,0,0,96,212,188,142,144,158,129,193,167,239,63,0,0,0,0,0,12,11,189,17,213,146,54,186,189,239,63,0,0,0,0,0,224,192,188,148,113,143,43,194,211,239,63,0,0,0,0,128,222,16,189,238,35,42,107,217,233,239,63,0,0,0,0,0,67,238,60,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,190,188,90,250,26,11,240,63,0,0,0,0,0,64,179,188,3,51,251,169,61,22,240,63,0,0,0,0,0,23,18,189,130,2,59,20,104,33,240,63,0,0,0,0,0,64,186,60,108,128,119,62,154,44,240,63,0,0,0,0,0,152,239,60,202,187,17,46,212,55,240,63,0,0,0,0,0,64,199,188,137,127,110,232,21,67,240,63,0,0,0,0,0,48,216,60,103,84,246,114,95,78,240,63,0,0,0,0,0,63,26,189,90,133,21,211,176,89,240,63,0,0,0,0,0,132,2,189,149,31,60,14,10,101,240,63,0,0,0,0,0,96,241,60,26,247,221,41,107,112,240,63,0,0,0,0,0,36,21,61,45,168,114,43,212,123,240,63,0,0,0,0,0,160,233,188,208,155,117,24,69,135,240,63,0,0,0,0,0,64,230,60,200,7,102,246,189,146,240,63,0,0,0,0,0,120,0,189,131,243,198,202,62,158,240,63,0,0,0,0,0,0,152,188,48,57,31,155,199,169,240,63,0,0,0,0,0,160,255,60,252,136,249,108,88,181,240,63,0,0,0,0,0,200,250,188,138,108,228,69,241,192,240,63,0,0,0,0,0,192,217,60,22,72,114,43,146,204,240,63,0,0,0,0,0,32,5,61,216,93,57,35,59,216,240,63,0,0,0,0,0,208,250,188,243,209,211,50,236,227,240,63,0,0,0,0,0,172,27,61,166,169,223,95,165,239,240,63,0,0,0,0,0,232,4,189,240,210,254,175,102,251,240,63,0,0,0,0,0,48,13,189,75,35,215,40,48,7,241,63,0,0,0,0,0,80,241,60,91,91,18,208,1,19,241,63,0,0,0,0,0,0,236,60,249,42,94,171,219,30,241,63,0,0,0,0,0,188,22,61,213,49,108,192,189,42,241,63,0,0,0,0,0,64,232,60,125,4,242,20,168,54,241,63,0,0,0,0,0,208,14,189,233,45,169,174,154,66,241,63,0,0,0,0,0,224,232,60,56,49,79,147,149,78,241,63,0,0,0,0,0,64,235,60,113,142,165,200,152,90,241,63,0,0,0,0,0,48,5,61,223,195,113,84,164,102,241,63,0,0,0,0,0,56,3,61,17,82,125,60,184,114,241,63,0,0,0,0,0,212,40,61,159,187,149,134,212,126,241,63,0,0,0,0,0,208,5,189,147,141,140,56,249,138,241,63,0,0,0,0,0,136,28,189,102,93,55,88,38,151,241,63,0,0,0,0,0,240,17,61,167,203,111,235,91,163,241,63,0,0,0,0,0,72,16,61,227,135,19,248,153,175,241,63,0,0,0,0,0,57,71,189,84,93,4,132,224,187,241,63,0,0,0,0,0,228,36,61,67,28,40,149,47,200,241,63,0,0,0,0,0,32,10,189,178,185,104,49,135,212,241,63,0,0,0,0,0,128,227,60,49,64,180,94,231,224,241,63,0,0,0,0,0,192,234,60,56,217,252,34,80,237,241,63,0,0,0,0,0,144,1,61,247,205,56,132,193,249,241,63,0,0,0,0,0,120,27,189,143,141,98,136,59,6,242,63,0,0,0,0,0,148,45,61,30,168,120,53,190,18,242,63,0,0,0,0,0,0,216,60,65,221,125,145,73,31,242,63,0,0,0,0,0,52,43,61,35,19,121,162,221,43,242,63,0,0,0,0,0,248,25,61,231,97,117,110,122,56,242,63,0,0,0,0,0,200,25,189,39,20,130,251,31,69,242,63,0,0,0,0,0,48,2,61,2,166,178,79,206,81,242,63,0,0,0,0,0,72,19,189,176,206,30,113,133,94,242,63,0,0,0,0,0,112,18,61,22,125,226,101,69,107,242,63,0,0,0,0,0,208,17,61,15,224,29,52,14,120,242,63,0,0,0,0,0,238,49,61,62,99,245,225,223,132,242,63,0,0,0,0,0,192,20,189,48,187,145,117,186,145,242,63,0,0,0,0,0,216,19,189,9,223,31,245,157,158,242,63,0,0,0,0,0,176,8,61,155,14,209,102,138,171,242,63,0,0,0,0,0,124,34,189,58,218,218,208,127,184,242,63,0,0,0,0,0,52,42,61,249,26,119,57,126,197,242,63,0,0,0,0,0,128,16,189,217,2,228,166,133,210,242,63,0,0,0,0,0,208,14,189,121,21,100,31,150,223,242,63,0,0,0,0,0,32,244,188,207,46,62,169,175,236,242,63,0,0,0,0,0,152,36,189,34,136,189,74,210,249,242,63,0,0,0,0,0,48,22,189,37,182,49,10,254,6,243,63,0,0,0,0,0,54,50,189,11,165,238,237,50,20,243,63,0,0,0,0,128,223,112,189,184,215,76,252,112,33,243,63,0,0,0,0,0,72,34,189,162,233,168,59,184,46,243,63,0,0,0,0,0,152,37,189,102,23,100,178,8,60,243,63,0,0,0,0,0,208,30,61,39,250,227,102,98,73,243,63,0,0,0,0,0,0,220,188,15,159,146,95,197,86,243,63,0,0,0,0,0,216,48,189,185,136,222,162,49,100,243,63,0,0,0,0,0,200,34,61,57,170,58,55,167,113,243,63,0,0,0,0,0,96,32,61,254,116,30,35,38,127,243,63,0,0,0,0,0,96,22,189,56,216,5,109,174,140,243,63,0,0,0,0,0,224,10,189,195,62,113,27,64,154,243,63,0,0,0,0,0,114,68,189,32,160,229,52,219,167,243,63,0,0,0,0,0,32,8,61,149,110,236,191,127,181,243,63,0,0,0,0,0,128,62,61,242,168,19,195,45,195,243,63,0,0,0,0,0,128,239,60,34,225,237,68,229,208,243,63,0,0,0,0,0,160,23,189,187,52,18,76,166,222,243,63,0,0,0,0,0,48,38,61,204,78,28,223,112,236,243,63,0,0,0,0,0,166,72,189,140,126,172,4,69,250,243,63,0,0,0,0,0,220,60,189,187,160,103,195,34,8,244,63,0,0,0,0,0,184,37,61,149,46,247,33,10,22,244,63,0,0,0,0,0,192,30,61,70,70,9,39,251,35,244,63,0,0,0,0,0,96,19,189,32,169,80,217,245,49,244,63,0,0,0,0,0,152,35,61,235,185,132,63,250,63,244,63,0,0,0,0,0,0,250,60,25,137,97,96,8,78,244,63,0,0,0,0,0,192,246,188,1,210,167,66,32,92,244,63,0,0,0,0,0,192,11,189,22,0,29,237,65,106,244,63,0,0,0,0,0,128,18,189,38,51,139,102,109,120,244,63,0,0,0,0,0,224,48,61,0,60,193,181,162,134,244,63,0,0,0,0,0,64,45,189,4,175,146,225,225,148,244,63,0,0,0,0,0,32,12,61,114,211,215,240,42,163,244,63,0,0,0,0,0,80,30,189,1,184,109,234,125,177,244,63,0,0,0,0,0,128,7,61,225,41,54,213,218,191,244,63,0,0,0,0,0,128,19,189,50,193,23,184,65,206,244,63,0,0,0,0,0,128,0,61,219,221,253,153,178,220,244,63,0,0,0,0,0,112,44,61,150,171,216,129,45,235,244,63,0,0,0,0,0,224,28,189,2,45,157,118,178,249,244,63,0,0,0,0,0,32,25,61,193,49,69,127,65,8,245,63,0,0,0,0,0,192,8,189,42,102,207,162,218,22,245,63,0,0,0,0,0,0,250,188,234,81,63,232,125,37,245,63,0,0,0,0,0,8,74,61,218,78,157,86,43,52,245,63,0,0,0,0,0,216,38,189,26,172,246,244,226,66,245,63,0,0,0,0,0,68,50,189,219,148,93,202,164,81,245,63,0,0,0,0,0,60,72,61,107,17,233,221,112,96,245,63,0,0,0,0,0,176,36,61,222,41,181,54,71,111,245,63,0,0,0,0,0,90,65,61,14,196,226,219,39,126,245,63,0,0,0,0,0,224,41,189,111,199,151,212,18,141,245,63,0,0,0,0,0,8,35,189,76,11,255,39,8,156,245,63,0,0,0,0,0,236,77,61,39,84,72,221,7,171,245,63,0,0,0,0,0,0,196,188,244,122,168,251,17,186,245,63,0,0,0,0,0,8,48,61,11,70,89,138,38,201,245,63,0,0,0,0,0,200,38,189,63,142,153,144,69,216,245,63,0,0,0,0,0,154,70,61,225,32,173,21,111,231,245,63,0,0,0,0,0,64,27,189,202,235,220,32,163,246,245,63,0,0,0,0,0,112,23,61,184,220,118,185,225,5,246,63,0,0,0,0,0,248,38,61,21,247,205,230,42,21,246,63,0,0,0,0,0,0,1,61,49,85,58,176,126,36,246,63,0,0,0,0,0,208,21,189,181,41,25,29,221,51,246,63,0,0,0,0,0,208,18,189,19,195,204,52,70,67,246,63,0,0,0,0,0,128,234,188,250,142,188,254,185,82,246,63,0,0,0,0,0,96,40,189,151,51,85,130,56,98,246,63,0,0,0,0,0,254,113,61,142,50,8,199,193,113,246,63,0,0,0,0,0,32,55,189,126,169,76,212,85,129,246,63,0,0,0,0,0,128,230,60,113,148,158,177,244,144,246,63,0,0,0,0,0,120,41,189,208,0,0,0,96,0,0,0,128,17,0,0,0,33,0,0,128,80,0,0,0,96,0,0,0,2,0,0,0,4,0,0,130,0,0,0,1,0,0,0,4,0,0,0,8,0,0,0,2,0,0,0,9,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,9,0,0,0,0,0,0,0,248,63,1,0,0,0,0,0,58,31,0,0,0,0,0,0,90,31,0,0,0,0,0,0,186,31,0,0,0,0,0,0,248,63,1,0,0,0,0,0,26,32,0,0,0,0,0,0,122,32,0,0,0,0,0,0,250,32,0,0,0,0,0,0,26,34,0,0,0,0,0,0,26,35,0,0,0,0,0,0,26,36,0,0,0,0,0,0,58,38,0,0,0,0,0,0,26,40,0,0,0,0,0,0,250,41,0,0,0,0,0,0,248,63,1,0,0,0,0,0,218,49,0,0,1,0,0,0,186,57,0,0,2,0,0,0,186,57,0,0,3,0,0,0,186,57,0,0,4,0,0,0,186,57,0,0,6,0,0,0,186,57,0,0,8,0,0,0,186,57,0,0,10,0,0,0,186,57,0,0,13,0,0,0,186,57,0,0,4,0,0,0,218,65,0,0,5,0,0,0,218,65,0,0,6,0,0,0,218,65,0,0,7,0,0,0,218,65,0,0,8,0,0,0,218,65,0,0,9,0,0,0,218,65,0,0,11,0,0,0,218,65,0,0,13,0,0,0,218,65,0,0,0,0,0,0,218,73,0,0,0,0,0,0,24,74,0,0,148,249,0,0,212,249,0,0,20,250,0,0,84,250,0,0,148,250,0,0,20,251,0,0,148,251,0,0,20,252,0,0,212,250,0,0,84,251,0,0,212,251,0,0,84,252,0,0,0,0,0,0,32,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,32,1,0,0,64,1,0,0,96,1,0,0,128,1,0,0,160,1,0,0,192,1,0,0,0,0,0,0,0,0,0,0,32,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,64,1,0,0,128,1,0,0,0,0,0,0,0,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,64,1,0,0,0,0,0,0,0,0,0,0,32,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,144,0,0,0,160,0,0,0,176,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,144,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,144,0,0,0,160,0,0,0,0,0,0,0,68,172,0,0,128,187,0,0,0,125,0,0,34,86,0,0,192,93,0,0,128,62,0,0,17,43,0,0,224,46,0,0,64,31,0,0,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,102,0,0,0,103,0,0,0,103,0,0,0,104,0,0,0,3,94,0,0,7,94,0,0,11,94,0,0,15,94,0,0,19,94,0,0,23,94,0,0,27,94,0,0,31,94,0,0,35,94,0,0,39,94,0,0,43,94,0,0,47,94,0,0,51,94,0,0,55,94,0,0,59,94,0,0,63,94,0,0,67,94,0,0,71,94,0,0,75,94,0,0,79,94,0,0,83,94,0,0,87,94,0,0,91,94,0,0,95,94,0,0,99,94,0,0,103,94,0,0,107,94,0,0,27,94,0,0,111,94,0,0,115,94,0,0,119,94,0,0,123,94,0,0,127,94,0,0,131,94,0,0,135,94,0,0,139,94,0,0,143,94,0,0,147,94,0,0,245,90,0,0,152,94,0,0,157,94,0,0,4,91,0,0,162,94,0,0,167,94,0,0,172,94,0,0,177,94,0,0,182,94,0,0,187,94,0,0,192,94,0,0,197,94,0,0,202,94,0,0,207,94,0,0,212,94,0,0,217,94,0,0,222,94,0,0,227,94,0,0,232,94,0,0,250,90,0,0,237,94,0,0,242,94,0,0,247,94,0,0,252,94,0,0,1,95,0,0,6,95,0,0,11,95,0,0,16,95,0,0,21,95,0,0,26,95,0,0,31,95,0,0,240,90,0,0,36,95,0,0,41,95,0,0,46,95,0,0,255,90,0,0,102,0,0,0,102,0,0,0,102,0,0,0,103,0,0,0,102,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,104,0,0,0,107,0,0,0,108,0,0,0,103,0,0,0,103,0,0,0,0,0,0,0,104,0,0,0,104,0,0,0,105,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,106,0,0,0,112,0,0,0,113,0,0,0,105,0,0,0,105,0,0,0,0,0,0,0,104,0,0,0,104,0,0,0,0,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,106,0,0,0,112,0,0,0,113,0,0,0,105,0,0,0,105,0,0,0,0,0,0,0,106,0,0,0,104,0,0,0,107,0,0,0,109,0,0,0,110,0,0,0,114,0,0,0,106,0,0,0,115,0,0,0,116,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,104,0,0,0,104,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,106,0,0,0,112,0,0,0,113,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,104,0,0,0,104,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,106,0,0,0,112,0,0,0,113,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,253,255,255,255,253,255,255,255,252,255,255,255,252,255,255,255,251,255,255,255,251,255,255,255,250,255,255,255,249,255,255,255,249,255,255,255,248,255,255,255,247,255,255,255,246,255,255,255,245,255,255,255,243,255,255,255,242,255,255,255,240,255,255,255,239,255,255,255,237,255,255,255,235,255,255,255,232,255,255,255,230,255,255,255,227,255,255,255,225,255,255,255,221,255,255,255,218,255,255,255,215,255,255,255,211,255,255,255,207,255,255,255,203,255,255,255,198,255,255,255,193,255,255,255,188,255,255,255,183,255,255,255,177,255,255,255,171,255,255,255,165,255,255,255,159,255,255,255,152,255,255,255,145,255,255,255,139,255,255,255,131,255,255,255,124,255,255,255,117,255,255,255,109,255,255,255,102,255,255,255,95,255,255,255,87,255,255,255,80,255,255,255,73,255,255,255,66,255,255,255,60,255,255,255,54,255,255,255,48,255,255,255,43,255,255,255,38,255,255,255,34,255,255,255,31,255,255,255,29,255,255,255,28,255,255,255,28,255,255,255,29,255,255,255,32,255,255,255,35,255,255,255,41,255,255,255,48,255,255,255,56,255,255,255,67,255,255,255,79,255,255,255,93,255,255,255,110,255,255,255,129,255,255,255,150,255,255,255,173,255,255,255,199,255,255,255,227,255,255,255,2,0,0,0,36,0,0,0,72,0,0,0,111,0,0,0,153,0,0,0,197,0,0,0,244,0,0,0,38,1,0,0,91,1,0,0,145,1,0,0,203,1,0,0,7,2,0,0,69,2,0,0,133,2,0,0,199,2,0,0,11,3,0,0,80,3,0,0,151,3,0,0,223,3,0,0,40,4,0,0,113,4,0,0,186,4,0,0,3,5,0,0,76,5,0,0,148,5,0,0,218,5,0,0,31,6,0,0,98,6,0,0,162,6,0,0,223,6,0,0,25,7,0,0,78,7,0,0,127,7,0,0,170,7,0,0,209,7,0,0,240,7,0,0,9,8,0,0,27,8,0,0,37,8,0,0,39,8,0,0,32,8,0,0,15,8,0,0,245,7,0,0,208,7,0,0,160,7,0,0,101,7,0,0,30,7,0,0,203,6,0,0,108,6,0,0,255,5,0,0,134,5,0,0,0,5,0,0,107,4,0,0,202,3,0,0,26,3,0,0,93,2,0,0,146,1,0,0,185,0,0,0,211,255,255,255,224,254,255,255,223,253,255,255,210,252,255,255,185,251,255,255,148,250,255,255,100,249,255,255,42,248,255,255,230,246,255,255,153,245,255,255,68,244,255,255,233,242,255,255,135,241,255,255,33,240,255,255,183,238,255,255,76,237,255,255,223,235,255,255,115,234,255,255,9,233,255,255,163,231,255,255,67,230,255,255,233,228,255,255,153,227,255,255,83,226,255,255,26,225,255,255,239,223,255,255,213,222,255,255,205,221,255,255,218,220,255,255,253,219,255,255,56,219,255,255,143,218,255,255,1,218,255,255,146,217,255,255,68,217,255,255,25,217,255,255,18,217,255,255,49,217,255,255,121,217,255,255,234,217,255,255,136,218,255,255,83,219,255,255,77,220,255,255,120,221,255,255,212,222,255,255,100,224,255,255,40,226,255,255,34,228,255,255,82,230,255,255,185,232,255,255,88,235,255,255,47,238,255,255,64,241,255,255,137,244,255,255,11,248,255,255,198,251,255,255,186,255,255,255,230,3,0,0,74,8,0,0,228,12,0,0,181,17,0,0,186,22,0,0,242,27,0,0,92,33,0,0,247,38,0,0,191,44,0,0,180,50,0,0,212,56,0,0,27,63,0,0,135,69,0,0,22,76,0,0,197,82,0,0,145,89,0,0,118,96,0,0,114,103,0,0,129,110,0,0,160,117,0,0,203,124,0,0,255,131,0,0,56,139,0,0,113,146,0,0,168,153,0,0,216,160,0,0,254,167,0,0,21,175,0,0,25,182,0,0,6,189,0,0,217,195,0,0,141,202,0,0,30,209,0,0,138,215,0,0,202,221,0,0,221,227,0,0,190,233,0,0,105,239,0,0,220,244,0,0,19,250,0,0,10,255,0,0,190,3,1,0,45,8,1,0,84,12,1,0,47,16,1,0,190,19,1,0,252,22,1,0,233,25,1,0,131,28,1,0,199,30,1,0,180,32,1,0,73,34,1,0,134,35,1,0,104,36,1,0,240,36,1,0,30,37,1,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,5,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,110,0,0,0,33,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,4,0,8,0,12,0,16,0,20,0,24,0,30,0,36,0,44,0,52,0,62,0,74,0,90,0,110,0,134,0,162,0,196,0,238,0,32,1,86,1,162,1,64,2,4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158,0,0,12,0,24,0,36,0,48,0,66,0,90,0,120,0,156,0,198,0,252,0,62,1,152,1,64,2,4,4,4,4,6,8,10,12,14,18,22,30,56,0,0,0,4,0,8,0,12,0,16,0,20,0,24,0,30,0,36,0,42,0,50,0,60,0,72,0,88,0,106,0,128,0,156,0,190,0,230,0,20,1,74,1,128,1,64,2,4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192,0,0,12,0,24,0,36,0,48,0,66,0,84,0,114,0,150,0,192,0,240,0,44,1,122,1,64,2,4,4,4,4,6,6,10,12,14,16,20,26,66,0,0,0,4,0,8,0,12,0,16,0,20,0,24,0,30,0,36,0,44,0,54,0,66,0,82,0,102,0,126,0,156,0,194,0,240,0,40,1,108,1,192,1,38,2,64,2,4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26,0,0,12,0,24,0,36,0,48,0,66,0,90,0,126,0,174,0,234,0,56,1,158,1,28,2,64,2,4,4,4,4,6,8,12,16,20,26,34,42,12,0,0,0,6,0,12,0,18,0,24,0,30,0,36,0,44,0,54,0,66,0,80,0,96,0,116,0,140,0,168,0,200,0,238,0,28,1,80,1,140,1,208,1,10,2,64,2,6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0,0,12,0,24,0,36,0,54,0,72,0,96,0,126,0,168,0,222,0,44,1,140,1,10,2,64,2,4,4,4,6,6,8,10,14,18,26,32,42,18,0,0,0,6,0,12,0,18,0,24,0,30,0,36,0,44,0,54,0,66,0,80,0,96,0,114,0,136,0,162,0,194,0,232,0,22,1,76,1,138,1,208,1,28,2,64,2,6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36,0,0,12,0,24,0,36,0,54,0,78,0,108,0,144,0,186,0,240,0,56,1,152,1,28,2,64,2,4,4,4,6,8,10,12,14,18,24,32,44,12,0,0,0,6,0,12,0,18,0,24,0,30,0,36,0,44,0,54,0,66,0,80,0,96,0,116,0,140,0,168,0,200,0,238,0,28,1,80,1,140,1,208,1,10,2,64,2,6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0,0,12,0,24,0,36,0,54,0,78,0,108,0,144,0,186,0,240,0,56,1,146,1,10,2,64,2,4,4,4,6,8,10,12,14,18,24,30,40,18,0,0,0,6,0,12,0,18,0,24,0,30,0,36,0,44,0,54,0,66,0,80,0,96,0,116,0,140,0,168,0,200,0,238,0,28,1,80,1,140,1,208,1,10,2,64,2,6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0,0,12,0,24,0,36,0,54,0,78,0,108,0,144,0,186,0,240,0,56,1,146,1,10,2,64,2,4,4,4,6,8,10,12,14,18,24,30,40,18,0,0,0,6,0,12,0,18,0,24,0,30,0,36,0,44,0,54,0,66,0,80,0,96,0,116,0,140,0,168,0,200,0,238,0,28,1,80,1,140,1,208,1,10,2,64,2,6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0,0,12,0,24,0,36,0,54,0,78,0,108,0,144,0,186,0,240,0,56,1,146,1,10,2,64,2,4,4,4,6,8,10,12,14,18,24,30,40,18,0,0,0,12,0,24,0,36,0,48,0,60,0,72,0,88,0,108,0,132,0,160,0,192,0,232,0,24,1,80,1,144,1,220,1,54,2,56,2,58,2,60,2,62,2,64,2,12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2,0,0,24,0,48,0,72,0,108,0,156,0,216,0,32,1,116,1,224,1,230,1,236,1,242,1,64,2,8,8,8,12,16,20,24,28,36,2,2,2,26,0,17,3,17,3,1,3,1,3,16,2,16,2,16,2,16,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,240,255,224,255,17,3,17,3,1,3,1,3,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,34,2,34,2,34,2,34,2,2,2,2,2,2,2,2,2,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,240,255,224,255,16,3,16,3,17,2,17,2,17,2,17,2,1,2,1,2,1,2,1,2,0,2,0,2,0,2,0,2,34,2,34,2,34,2,34,2,2,2,2,2,2,2,2,2,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,240,255,224,255,17,3,17,3,1,3,1,3,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,51,4,35,4,50,3,50,3,49,2,49,2,49,2,49,2,19,3,19,3,3,3,3,3,48,3,48,3,34,3,34,3,18,2,18,2,18,2,18,2,33,2,33,2,33,2,33,2,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,240,255,224,255,208,255,18,4,33,4,32,4,1,3,1,3,17,2,17,2,17,2,17,2,16,3,16,3,0,3,0,3,51,3,51,3,3,3,3,3,35,2,35,2,35,2,35,2,50,2,50,2,50,2,50,2,48,2,48,2,48,2,48,2,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,240,255,224,255,208,255,17,4,1,3,1,3,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,208,255,192,255,176,255,21,4,81,4,160,255,80,4,144,255,36,4,66,4,20,3,20,3,65,3,65,3,64,3,64,3,4,4,35,4,50,4,3,4,19,3,19,3,49,3,49,3,48,3,48,3,34,3,34,3,18,2,18,2,18,2,18,2,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,85,2,85,2,85,2,85,2,69,2,69,2,69,2,69,2,84,2,84,2,84,2,84,2,83,2,83,2,83,2,83,2,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,240,255,224,255,18,4,33,4,17,2,17,2,17,2,17,2,1,3,1,3,16,3,16,3,0,2,0,2,0,2,0,2,224,255,208,255,192,255,21,4,81,4,176,255,160,255,36,4,66,4,20,4,65,3,65,3,4,4,64,4,35,4,50,4,19,4,49,4,3,4,48,4,34,2,34,2,34,2,34,2,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,85,3,85,3,84,3,84,3,69,2,69,2,69,2,69,2,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,53,2,53,2,53,2,53,2,68,2,68,2,68,2,68,2,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,240,255,224,255,208,255,192,255,176,255,18,4,33,4,32,4,17,3,17,3,1,3,1,3,16,3,16,3,0,3,0,3,176,255,53,4,83,4,160,255,68,4,37,4,82,4,21,4,81,3,81,3,52,3,52,3,67,3,67,3,80,4,4,4,36,3,36,3,66,3,66,3,51,3,51,3,64,3,64,3,20,2,20,2,20,2,20,2,65,2,65,2,65,2,65,2,35,2,35,2,35,2,35,2,50,2,50,2,50,2,50,2,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,3,2,3,2,3,2,3,2,48,2,48,2,48,2,48,2,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,240,255,224,255,208,255,17,4,1,3,1,3,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,208,255,192,255,176,255,160,255,144,255,128,255,112,255,23,4,113,4,96,255,80,255,64,255,22,4,97,4,96,4,48,255,48,255,32,255,20,4,65,4,64,4,35,4,50,4,3,4,19,3,19,3,49,3,49,3,48,3,48,3,34,3,34,3,18,2,18,2,18,2,18,2,33,2,33,2,33,2,33,2,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,119,3,119,3,103,3,103,3,118,3,118,3,87,3,87,3,117,3,117,3,102,3,102,3,71,2,71,2,71,2,71,2,116,2,116,2,116,2,116,2,86,2,86,2,86,2,86,2,101,2,101,2,101,2,101,2,55,2,55,2,55,2,55,2,115,2,115,2,115,2,115,2,70,2,70,2,70,2,70,2,85,3,85,3,84,3,84,3,99,2,99,2,99,2,99,2,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,100,2,100,2,100,2,100,2,7,2,7,2,7,2,7,2,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,69,2,69,2,69,2,69,2,53,2,53,2,53,2,53,2,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,83,2,83,2,83,2,83,2,68,2,68,2,68,2,68,2,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,37,2,37,2,37,2,37,2,82,2,82,2,82,2,82,2,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,52,2,52,2,52,2,52,2,67,2,67,2,67,2,67,2,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,240,255,224,255,208,255,192,255,18,4,176,255,17,3,17,3,1,3,1,3,16,3,16,3,0,2,0,2,0,2,0,2,176,255,160,255,144,255,128,255,112,255,39,4,114,4,96,255,113,3,113,3,23,4,112,4,54,4,99,4,96,4,80,255,80,255,21,4,98,3,98,3,38,4,6,4,22,3,22,3,97,3,97,3,81,4,52,4,80,4,64,255,36,4,66,4,20,4,65,4,4,4,64,4,35,3,35,3,50,3,50,3,19,2,19,2,19,2,19,2,49,2,49,2,49,2,49,2,3,3,3,3,48,3,48,3,34,2,34,2,34,2,34,2,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,119,2,119,2,119,2,119,2,103,2,103,2,103,2,103,2,118,2,118,2,118,2,118,2,117,2,117,2,117,2,117,2,102,2,102,2,102,2,102,2,71,2,71,2,71,2,71,2,116,2,116,2,116,2,116,2,87,3,87,3,85,3,85,3,86,2,86,2,86,2,86,2,101,2,101,2,101,2,101,2,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,69,2,69,2,69,2,69,2,84,2,84,2,84,2,84,2,53,2,53,2,53,2,53,2,83,2,83,2,83,2,83,2,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([67,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,240,255,224,255,208,255,192,255,176,255,160,255,18,4,33,4,144,255,0,4,17,3,17,3,1,3,1,3,16,3,16,3,144,255,128,255,112,255,96,255,86,4,55,4,80,255,39,4,114,4,70,4,100,4,23,4,113,4,64,255,54,4,99,4,69,4,84,4,68,4,64,255,38,3,38,3,98,3,98,3,97,3,97,3,22,4,96,4,53,4,83,4,37,4,82,4,21,3,21,3,81,3,81,3,52,3,52,3,67,3,67,3,80,4,4,4,36,3,36,3,66,3,66,3,20,3,20,3,51,2,51,2,51,2,51,2,65,2,65,2,65,2,65,2,35,2,35,2,35,2,35,2,50,2,50,2,50,2,50,2,64,3,64,3,3,3,3,3,48,2,48,2,48,2,48,2,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,119,2,119,2,119,2,119,2,103,2,103,2,103,2,103,2,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,240,255,224,255,208,255,192,255,17,4,1,4,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,192,255,176,255,160,255,144,255,128,255,112,255,96,255,80,255,64,255,48,255,32,255,16,255,0,255,240,254,224,254,208,254,208,254,192,254,176,254,160,254,129,4,144,254,128,254,112,254,96,254,80,254,21,4,81,4,64,254,48,254,32,254,20,4,65,3,65,3,4,4,64,4,35,4,50,4,19,3,19,3,49,3,49,3,3,3,3,3,48,3,48,3,34,3,34,3,18,2,18,2,18,2,18,2,33,2,33,2,33,2,33,2,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,64,254,48,254,32,254,16,254,0,254,240,253,224,253,208,253,192,253,176,253,160,253,144,253,128,253,112,253,31,4,241,4,240,4,112,253,96,253,80,253,226,4,64,253,30,4,225,4,48,253,32,253,16,253,0,253,240,252,224,252,198,4,61,4,224,252,45,4,210,4,29,4,183,4,208,252,192,252,195,4,176,252,75,4,209,3,209,3,13,4,208,4,138,4,168,4,76,4,196,4,107,4,182,4,60,3,60,3,44,3,44,3,194,3,194,3,91,3,91,3,181,4,137,4,28,3,28,3,193,3,193,3,152,4,12,4,192,3,192,3,180,4,106,4,166,4,121,4,59,3,59,3,179,3,179,3,136,4,90,4,43,3,43,3,165,4,105,4,164,3,164,3,120,4,135,4,148,3,148,3,119,4,118,4,178,2,178,2,178,2,178,2,27,2,27,2,27,2,27,2,177,2,177,2,177,2,177,2,11,3,11,3,176,3,176,3,150,3,150,3,74,3,74,3,58,3,58,3,163,3,163,3,89,3,89,3,149,3,149,3,42,2,42,2,42,2,42,2,162,2,162,2,162,2,162,2,26,2,26,2,26,2,26,2,161,2,161,2,161,2,161,2,10,3,10,3,104,3,104,3,160,2,160,2,160,2,160,2,134,3,134,3,73,3,73,3,147,2,147,2,147,2,147,2,57,3,57,3,88,3,88,3,133,3,133,3,103,3,103,3,41,2,41,2,41,2,41,2,146,2,146,2,146,2,146,2,87,3,87,3,117,3,117,3,56,2,56,2,56,2,56,2,131,2,131,2,131,2,131,2,102,3,102,3,71,3,71,3,116,3,116,3,86,3,86,3,101,3,101,3,115,3,115,3,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,9,2,9,2,9,2,9,2,144,2,144,2,144,2,144,2,72,2,72,2,72,2,72,2,132,2,132,2,132,2,132,2,114,2,114,2,114,2,114,2,70,3,70,3,100,3,100,3,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,55,2,55,2,55,2,55,2,39,2,39,2,39,2,39,2,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,85,2,85,2,85,2,85,2,7,2,7,2,7,2,7,2,112,2,112,2,112,2,112,2,54,2,54,2,54,2,54,2,99,2,99,2,99,2,99,2,69,2,69,2,69,2,69,2,84,2,84,2,84,2,84,2,38,2,38,2,38,2,38,2,98,2,98,2,98,2,98,2,53,2,53,2,53,2,53,2,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,83,2,83,2,83,2,83,2,68,2,68,2,68,2,68,2,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,64,254,255,4,239,4,223,4,238,4,207,4,222,4,191,4,251,4,206,4,220,4,48,254,236,3,236,3,221,3,221,3,250,4,205,4,190,3,190,3,235,3,235,3,159,3,159,3,249,3,249,3,234,3,234,3,189,3,189,3,219,3,219,3,143,3,143,3,248,3,248,3,204,3,204,3,174,4,158,4,142,3,142,3,127,4,126,4,247,2,247,2,247,2,247,2,218,2,218,2,218,2,218,2,173,3,173,3,188,3,188,3,203,3,203,3,246,3,246,3,111,2,111,2,111,2,111,2,232,2,232,2,232,2,232,2,95,2,95,2,95,2,95,2,157,2,157,2,157,2,157,2,217,2,217,2,217,2,217,2,245,2,245,2,245,2,245,2,231,2,231,2,231,2,231,2,172,2,172,2,172,2,172,2,187,2,187,2,187,2,187,2,79,2,79,2,79,2,79,2,244,2,244,2,244,2,244,2,202,3,202,3,230,3,230,3,243,2,243,2,243,2,243,2,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,141,2,141,2,141,2,141,2,216,2,216,2,216,2,216,2,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,110,2,110,2,110,2,110,2,156,2,156,2,156,2,156,2,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,201,2,201,2,201,2,201,2,94,2,94,2,94,2,94,2,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,125,2,125,2,125,2,125,2,215,2,215,2,215,2,215,2,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,200,2,200,2,200,2,200,2,214,2,214,2,214,2,214,2,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,155,2,155,2,155,2,155,2,170,2,170,2,170,2,170,2,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,254,3,254,3,252,3,252,3,253,2,253,2,253,2,253,2,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,240,255,224,255,208,255,192,255,176,255,160,255,144,255,128,255,112,255,96,255,17,3,17,3,1,4,16,4,0,3,0,3,96,255,80,255,64,255,48,255,32,255,16,255,0,255,240,254,224,254,208,254,192,254,176,254,160,254,144,254,128,254,112,254,112,254,96,254,80,254,64,254,48,254,32,254,16,254,0,254,240,253,224,253,208,253,192,253,176,253,160,253,144,253,128,253,128,253,112,253,145,4,96,253,80,253,64,253,48,253,32,253,40,4,130,4,24,4,129,4,16,253,0,253,240,252,224,252,39,4,114,4,100,4,23,4,85,4,113,4,224,252,54,4,99,4,69,4,84,4,38,4,98,4,22,4,208,252,53,4,97,3,97,3,83,4,68,4,37,3,37,3,82,3,82,3,21,3,21,3,81,3,81,3,5,4,80,4,52,3,52,3,67,3,67,3,36,3,36,3,66,3,66,3,51,3,51,3,65,2,65,2,65,2,65,2,20,3,20,3,4,3,4,3,35,2,35,2,35,2,35,2,50,2,50,2,50,2,50,2,64,3,64,3,3,3,3,3,19,2,19,2,19,2,19,2,49,2,49,2,49,2,49,2,48,2,48,2,48,2,48,2,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,48,253,32,253,238,4,16,253,0,253,240,252,251,4,224,252,221,4,175,4,250,4,190,4,235,4,205,4,220,4,159,4,249,4,234,4,189,4,219,4,143,4,248,4,204,4,158,4,233,4,127,4,247,4,173,4,218,4,188,4,111,4,224,252,203,3,203,3,246,3,246,3,142,4,232,4,95,4,157,4,245,3,245,3,126,3,126,3,231,3,231,3,172,3,172,3,202,3,202,3,187,3,187,3,217,4,141,4,79,3,79,3,244,3,244,3,63,3,63,3,243,3,243,3,216,3,216,3,230,3,230,3,47,3,47,3,242,3,242,3,110,4,240,4,31,3,31,3,241,3,241,3,156,3,156,3,201,3,201,3,94,3,94,3,171,3,171,3,186,3,186,3,229,3,229,3,125,3,125,3,215,3,215,3,78,3,78,3,228,3,228,3,140,3,140,3,200,3,200,3,62,3,62,3,109,3,109,3,214,3,214,3,227,3,227,3,155,3,155,3,185,3,185,3,46,3,46,3,170,3,170,3,226,3,226,3,30,3,30,3,225,3,225,3,14,4,224,4,93,3,93,3,213,3,213,3,124,3,124,3,199,3,199,3,77,3,77,3,139,3,139,3,212,2,212,2,212,2,212,2,184,3,184,3,154,3,154,3,169,3,169,3,108,3,108,3,198,3,198,3,61,3,61,3,211,2,211,2,211,2,211,2,210,2,210,2,210,2,210,2,45,3,45,3,13,3,13,3,29,2,29,2,29,2,29,2,123,2,123,2,123,2,123,2,183,2,183,2,183,2,183,2,209,2,209,2,209,2,209,2,92,3,92,3,208,3,208,3,197,2,197,2,197,2,197,2,138,2,138,2,138,2,138,2,168,2,168,2,168,2,168,2,76,2,76,2,76,2,76,2,196,2,196,2,196,2,196,2,107,2,107,2,107,2,107,2,182,2,182,2,182,2,182,2,153,3,153,3,12,3,12,3,60,2,60,2,60,2,60,2,195,2,195,2,195,2,195,2,122,2,122,2,122,2,122,2,167,2,167,2,167,2,167,2,166,2,166,2,166,2,166,2,192,3,192,3,11,3,11,3,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,44,2,44,2,44,2,44,2,91,2,91,2,91,2,91,2,181,2,181,2,181,2,181,2,28,2,28,2,28,2,28,2,137,2,137,2,137,2,137,2,152,2,152,2,152,2,152,2,193,2,193,2,193,2,193,2,75,2,75,2,75,2,75,2,180,2,180,2,180,2,180,2,106,2,106,2,106,2,106,2,59,2,59,2,59,2,59,2,121,2,121,2,121,2,121,2,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,151,2,151,2,151,2,151,2,136,2,136,2,136,2,136,2,43,2,43,2,43,2,43,2,90,2,90,2,90,2,90,2,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,165,2,165,2,165,2,165,2,27,2,27,2,27,2,27,2,177,1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,176,2,176,2,176,2,176,2,105,2,105,2,105,2,105,2,150,2,150,2,150,2,150,2,74,2,74,2,74,2,74,2,164,2,164,2,164,2,164,2,120,2,120,2,120,2,120,2,135,2,135,2,135,2,135,2,58,2,58,2,58,2,58,2,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,10,2,10,2,10,2,10,2,160,2,160,2,160,2,160,2,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,119,2,119,2,119,2,119,2,9,2,9,2,9,2,9,2,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,240,255,224,255,208,255,192,255,17,4,1,4,16,3,16,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,192,255,176,255,160,255,255,4,144,255,128,255,112,255,242,4,96,255,31,4,241,4,80,255,64,255,48,255,32,255,16,255,16,255,0,255,240,254,224,254,208,254,192,254,176,254,160,254,144,254,128,254,112,254,96,254,80,254,64,254,81,4,48,254,48,254,32,254,16,254,20,4,65,4,0,254,35,4,50,4,19,3,19,3,49,3,49,3,3,4,48,4,34,3,34,3,18,2,18,2,18,2,18,2,33,2,33,2,33,2,33,2,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,239,3,239,3,254,3,254,3,223,3,223,3,253,3,253,3,207,3,207,3,252,3,252,3,191,3,191,3,251,3,251,3,175,2,175,2,175,2,175,2,250,3,250,3,159,3,159,3,249,3,249,3,248,3,248,3,143,2,143,2,143,2,143,2,127,2,127,2,127,2,127,2,247,2,247,2,247,2,247,2,111,2,111,2,111,2,111,2,246,2,246,2,246,2,246,2,95,2,95,2,95,2,95,2,245,2,245,2,245,2,245,2,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,63,2,63,2,63,2,63,2,96,254,80,254,64,254,48,254,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,64,254,48,254,32,254,16,254,0,254,240,253,224,253,208,253,192,253,176,253,160,253,227,4,144,253,128,253,112,253,96,253,96,253,80,253,64,253,13,4,48,253,32,253,16,253,60,4,0,253,28,4,192,4,240,252,226,3,226,3,46,4,30,4,211,4,45,4,210,4,209,4,59,4,240,252,29,3,29,3,196,4,107,4,195,4,167,4,44,3,44,3,194,4,181,4,193,4,12,4,75,4,180,4,106,4,166,4,179,3,179,3,90,4,165,4,43,3,43,3,178,3,178,3,27,3,27,3,177,3,177,3,11,4,176,4,105,4,150,4,74,4,164,4,120,4,135,4,163,3,163,3,58,4,89,4,42,3,42,3,149,4,104,4,161,3,161,3,134,4,119,4,148,3,148,3,73,4,87,4,103,3,103,3,162,2,162,2,162,2,162,2,26,2,26,2,26,2,26,2,10,3,10,3,160,3,160,3,57,3,57,3,147,3,147,3,88,3,88,3,133,3,133,3,41,2,41,2,41,2,41,2,146,2,146,2,146,2,146,2,118,3,118,3,9,3,9,3,25,2,25,2,25,2,25,2,145,2,145,2,145,2,145,2,144,3,144,3,72,3,72,3,132,3,132,3,117,3,117,3,56,3,56,3,131,3,131,3,102,3,102,3,40,3,40,3,130,2,130,2,130,2,130,2,71,3,71,3,116,3,116,3,24,2,24,2,24,2,24,2,129,2,129,2,129,2,129,2,128,2,128,2,128,2,128,2,8,3,8,3,86,3,86,3,55,2,55,2,55,2,55,2,115,2,115,2,115,2,115,2,101,3,101,3,70,3,70,3,39,2,39,2,39,2,39,2,114,2,114,2,114,2,114,2,100,3,100,3,85,3,85,3,7,2,7,2,7,2,7,2,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,112,2,112,2,112,2,112,2,54,2,54,2,54,2,54,2,99,2,99,2,99,2,99,2,69,2,69,2,69,2,69,2,84,2,84,2,84,2,84,2,38,2,38,2,38,2,38,2,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,6,2,6,2,6,2,6,2,96,2,96,2,96,2,96,2,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,53,2,53,2,53,2,53,2,68,2,68,2,68,2,68,2,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,206,4,64,254,222,3,222,3,233,3,233,3,234,4,217,4,238,2,238,2,238,2,238,2,237,3,237,3,235,3,235,3,190,2,190,2,190,2,190,2,205,2,205,2,205,2,205,2,220,3,220,3,219,3,219,3,174,2,174,2,174,2,174,2,204,2,204,2,204,2,204,2,173,3,173,3,218,3,218,3,126,3,126,3,172,3,172,3,202,2,202,2,202,2,202,2,201,3,201,3,125,3,125,3,94,2,94,2,94,2,94,2,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,188,2,188,2,188,2,188,2,203,2,203,2,203,2,203,2,142,2,142,2,142,2,142,2,232,2,232,2,232,2,232,2,157,2,157,2,157,2,157,2,231,2,231,2,231,2,231,2,187,2,187,2,187,2,187,2,141,2,141,2,141,2,141,2,216,2,216,2,216,2,216,2,110,2,110,2,110,2,110,2,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,171,2,171,2,171,2,171,2,186,2,186,2,186,2,186,2,229,2,229,2,229,2,229,2,215,2,215,2,215,2,215,2,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,228,2,228,2,228,2,228,2,140,2,140,2,140,2,140,2,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,214,2,214,2,214,2,214,2,155,2,155,2,155,2,155,2,185,2,185,2,185,2,185,2,170,2,170,2,170,2,170,2,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,184,2,184,2,184,2,184,2,169,2,169,2,169,2,169,2,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,183,2,183,2,183,2,183,2,208,2,208,2,208,2,208,2,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,240,255,224,255,208,255,255,4,192,255,176,255,160,255,144,255,128,255,112,255,96,255,80,255,17,4,1,4,16,4,0,4,239,4,254,4,223,4,253,4,207,4,252,4,191,4,251,4,250,3,250,3,175,4,159,4,249,3,249,3,248,3,248,3,143,4,127,4,247,3,247,3,111,3,111,3,246,3,246,3,95,3,95,3,245,3,245,3,79,3,79,3,244,3,244,3,63,3,63,3,243,3,243,3,47,3,47,3,242,3,242,3,241,3,241,3,31,4,240,4,112,255,96,255,80,255,64,255,64,255,48,255,32,255,16,255,0,255,240,254,224,254,208,254,192,254,176,254,160,254,144,254,128,254,112,254,96,254,80,254,80,254,64,254,48,254,32,254,16,254,0,254,240,253,224,253,208,253,192,253,176,253,160,253,144,253,128,253,112,253,96,253,96,253,80,253,64,253,48,253,32,253,16,253,0,253,240,252,224,252,208,252,192,252,176,252,160,252,115,4,144,252,114,4,70,4,100,4,85,4,113,4,54,4,99,4,69,4,84,4,38,4,98,4,22,4,97,4,144,252,53,4,83,4,68,4,37,4,82,4,21,4,144,252,81,3,81,3,52,4,67,4,36,3,36,3,66,3,66,3,51,3,51,3,20,3,20,3,65,3,65,3,4,4,64,4,35,3,35,3,50,3,50,3,19,2,19,2,19,2,19,2,49,2,49,2,49,2,49,2,3,3,3,3,48,3,48,3,34,2,34,2,34,2,34,2,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,2,2,2,2,2,2,2,2,32,2,32,2,32,2,32,2,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,238,3,238,3,222,3,222,3,237,3,237,3,206,3,206,3,236,3,236,3,221,3,221,3,190,3,190,3,235,3,235,3,205,3,205,3,220,3,220,3,174,3,174,3,234,3,234,3,189,3,189,3,219,3,219,3,204,3,204,3,158,3,158,3,233,3,233,3,173,3,173,3,218,3,218,3,188,3,188,3,203,3,203,3,142,3,142,3,232,3,232,3,157,3,157,3,217,3,217,3,126,3,126,3,231,3,231,3,172,3,172,3,202,3,202,3,187,3,187,3,141,3,141,3,216,3,216,3,14,4,224,4,13,3,13,3,230,2,230,2,230,2,230,2,110,3,110,3,156,3,156,3,201,2,201,2,201,2,201,2,94,2,94,2,94,2,94,2,186,2,186,2,186,2,186,2,229,2,229,2,229,2,229,2,171,3,171,3,125,3,125,3,215,2,215,2,215,2,215,2,228,2,228,2,228,2,228,2,140,2,140,2,140,2,140,2,200,2,200,2,200,2,200,2,78,3,78,3,46,3,46,3,62,2,62,2,62,2,62,2,109,2,109,2,109,2,109,2,214,2,214,2,214,2,214,2,227,2,227,2,227,2,227,2,155,2,155,2,155,2,155,2,185,2,185,2,185,2,185,2,170,2,170,2,170,2,170,2,226,2,226,2,226,2,226,2,30,2,30,2,30,2,30,2,225,2,225,2,225,2,225,2,93,2,93,2,93,2,93,2,213,2,213,2,213,2,213,2,124,2,124,2,124,2,124,2,199,2,199,2,199,2,199,2,77,2,77,2,77,2,77,2,139,2,139,2,139,2,139,2,184,2,184,2,184,2,184,2,212,2,212,2,212,2,212,2,154,2,154,2,154,2,154,2,169,2,169,2,169,2,169,2,108,2,108,2,108,2,108,2,198,2,198,2,198,2,198,2,61,2,61,2,61,2,61,2,211,2,211,2,211,2,211,2,45,2,45,2,45,2,45,2,210,2,210,2,210,2,210,2,29,2,29,2,29,2,29,2,123,2,123,2,123,2,123,2,183,2,183,2,183,2,183,2,209,2,209,2,209,2,209,2,92,2,92,2,92,2,92,2,197,2,197,2,197,2,197,2,138,2,138,2,138,2,138,2,168,2,168,2,168,2,168,2,153,2,153,2,153,2,153,2,76,2,76,2,76,2,76,2,196,2,196,2,196,2,196,2,107,2,107,2,107,2,107,2,182,2,182,2,182,2,182,2,208,3,208,3,12,3,12,3,60,2,60,2,60,2,60,2,195,2,195,2,195,2,195,2,122,2,122,2,122,2,122,2,167,2,167,2,167,2,167,2,44,2,44,2,44,2,44,2,194,2,194,2,194,2,194,2,91,2,91,2,91,2,91,2,181,2,181,2,181,2,181,2,28,2,28,2,28,2,28,2,137,2,137,2,137,2,137,2,152,2,152,2,152,2,152,2,193,2,193,2,193,2,193,2,75,2,75,2,75,2,75,2,192,3,192,3,11,3,11,3,59,2,59,2,59,2,59,2,176,3,176,3,10,3,10,3,26,2,26,2,26,2,26,2,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,106,2,106,2,106,2,106,2,166,2,166,2,166,2,166,2,121,2,121,2,121,2,121,2,151,2,151,2,151,2,151,2,160,3,160,3,9,3,9,3,144,2,144,2,144,2,144,2,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,43,2,43,2,43,2,43,2,90,2,90,2,90,2,90,2,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,165,2,165,2,165,2,165,2,27,2,27,2,27,2,27,2,177,2,177,2,177,2,177,2,105,2,105,2,105,2,105,2,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,74,2,74,2,74,2,74,2,120,2,120,2,120,2,120,2,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,8,2,8,2,8,2,8,2,128,2,128,2,128,2,128,2,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,7,2,7,2,7,2,7,2,112,2,112,2,112,2,112,2,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,227,255,235,255,243,255,249,255,253,255,255,255,11,0,15,0,255,255,13,0,14,0,253,255,255,255,7,0,5,0,9,0,253,255,255,255,6,0,3,0,255,255,10,0,12,0,253,255,255,255,2,0,1,0,255,255,4,0,8,0,0,0,241,255,249,255,253,255,255,255,15,0,14,0,255,255,13,0,12,0,253,255,255,255,11,0,10,0,255,255,9,0,8,0,249,255,253,255,255,255,7,0,6,0,255,255,5,0,4,0,253,255,255,255,3,0,2,0,255,255,1,0,0,0,109,111,110,111,44,32,0,115,116,101,114,101,111,44,32,0,56,98,105,116,44,32,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,102,111,114,109,97,116,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,111,117,116,112,117,116,32,102,111,114,109,97,116,33,32,67,111,110,115,116,114,97,105,110,116,115,58,32,37,115,37,115,37,108,105,44,32,37,108,105,32,111,114,32,37,108,105,72,122,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,102,111,114,109,97,116,46,99,58,37,105,93,32,101,114,114,111,114,58,32,83,111,109,101,32,117,110,107,110,111,119,110,32,101,110,99,111,100,105,110,103,63,63,63,32,40,37,105,41,10,0,78,111,116,101,58,32,68,105,115,97,98,108,105,110,103,32,97,108,108,32,102,111,114,109,97,116,115,46,10,0,78,111,116,101,58,32,87,97,110,116,32,116,111,32,101,110,97,98,108,101,32,102,111,114,109,97,116,32,37,108,105,47,37,105,32,102,111,114,32,101,110,99,111,100,105,110,103,115,32,48,120,37,120,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,105,98,109,112,103,49,50,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,100,101,99,111,100,101,95,117,112,100,97,116,101,40,41,32,104,97,115,32,98,101,101,110,32,99,97,108,108,101,100,32,98,101,102,111,114,101,32,114,101,97,100,105,110,103,32,116,104,101,32,102,105,114,115,116,32,77,80,69,71,32,102,114,97,109,101,33,32,73,110,116,101,114,110,97,108,32,112,114,111,103,114,97,109,109,105,110,103,32,101,114,114,111,114,46,10,0,78,111,116,101,58,32,98,114,111,107,101,110,32,102,114,97,109,101,32,37,108,105,44,32,102,105,108,108,105,110,103,32,117,112,32,119,105,116,104,32,37,108,117,32,122,101,114,111,101,115,44,32,102,114,111,109,32,37,108,117,10,0,10,78,111,116,101,58,32,67,117,116,32,102,114,97,109,101,32,37,108,105,32,98,117,102,102,101,114,32,111,110,32,101,110,100,32,111,102,32,115,116,114,101,97,109,32,116,111,32,37,108,105,32,115,97,109,112,108,101,115,44,32,102,105,108,108,32,110,111,119,32,37,108,117,32,98,121,116,101,115,46,10,0,10,78,111,116,101,58,32,67,117,116,32,102,114,97,109,101,32,37,108,105,32,98,117,102,102,101,114,32,111,110,32,98,101,103,105,110,110,105,110,103,32,111,102,32,115,116,114,101,97,109,32,98,121,32,37,108,105,32,115,97,109,112,108,101,115,44,32,102,105,108,108,32,110,111,119,32,37,108,117,32,98,121,116,101,115,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,110,100,101,120,46,99,58,37,105,93,32,101,114,114,111,114,58,32,102,97,105,108,101,100,32,116,111,32,114,101,115,105,122,101,32,105,110,100,101,120,33,10,0,78,111,116,101,58,32,109,105,115,115,105,110,103,32,37,100,32,98,121,116,101,115,32,105,110,32,98,105,116,32,114,101,115,101,114,118,111,105,114,32,102,111,114,32,102,114,97,109,101,32,37,108,105,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,97,121,101,114,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,98,105,103,95,118,97,108,117,101,115,32,116,111,111,32,108,97,114,103,101,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,97,121,101,114,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,66,108,111,99,107,116,121,112,101,32,61,61,32,48,32,97,110,100,32,119,105,110,100,111,119,45,115,119,105,116,99,104,105,110,103,32,61,61,32,49,32,110,111,116,32,97,108,108,111,119,101,100,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,97,121,101,114,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,98,97,100,32,102,114,97,109,101,32,45,32,117,110,97,98,108,101,32,116,111,32,103,101,116,32,118,97,108,105,100,32,115,105,100,101,105,110,102,111,10,0,6,5,5,5,6,5,7,3,11,10,0,0,7,7,7,0,6,6,6,3,8,8,5,0,9,9,9,9,9,9,12,6,18,18,0,0,12,12,12,0,12,9,9,6,15,12,9,0,6,9,9,9,6,9,12,6,15,18,0,0,6,15,12,0,6,12,9,6,6,18,9,0,0,0,0,0,3,1,1,1,2,2,2,3,3,3,4,4,0,1,2,3,0,1,2,3,1,2,3,1,2,3,2,3,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,97,121,101,114,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,97,116,116,101,109,112,116,101,100,32,120,114,112,110,116,32,111,118,101,114,102,108,111,119,32,40,37,112,32,33,60,32,37,112,41,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,108,97,121,101,114,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,100,101,113,117,97,110,116,105,122,97,116,105,111,110,32,102,97,105,108,101,100,33,10,0,78,111,116,101,58,32,74,117,110,107,32,97,116,32,116,104,101,32,98,101,103,105,110,110,105,110,103,32,40,48,120,37,48,56,108,120,41,10,0,78,111,116,101,58,32,76,111,111,107,115,32,108,105,107,101,32,97,32,82,73,70,70,32,104,101,97,100,101,114,46,10,0,78,111,116,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([58,32,83,107,105,112,112,101,100,32,82,73,70,70,32,104,101,97,100,101,114,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,89,111,117,32,102,111,111,108,101,100,32,109,101,32,116,111,111,32,111,102,116,101,110,46,32,82,101,102,117,115,105,110,103,32,116,111,32,103,117,101,115,115,32,102,114,101,101,32,102,111,114,109,97,116,32,102,114,97,109,101,32,115,105,122,101,32,95,97,103,97,105,110,95,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,67,97,110,110,111,116,32,108,111,111,107,32,102,111,114,32,102,114,101,101,102,111,114,109,97,116,32,102,114,97,109,101,32,115,105,122,101,32,119,105,116,104,32,110,111,110,45,115,101,101,107,97,98,108,101,32,97,110,100,32,110,111,110,45,98,117,102,102,101,114,101,100,32,115,116,114,101,97,109,33,10,0,78,111,116,101,58,32,102,114,101,101,32,102,111,114,109,97,116,32,102,114,97,109,101,32,115,105,122,101,32,37,108,105,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,69,110,99,111,117,110,116,101,114,101,100,32,102,114,101,101,32,102,111,114,109,97,116,32,104,101,97,100,101,114,44,32,98,117,116,32,102,97,105,108,101,100,32,116,111,32,103,117,101,115,115,32,102,114,97,109,101,32,115,105,122,101,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,76,97,121,101,114,32,116,121,112,101,32,37,105,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,116,104,105,115,32,98,117,105,108,100,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,70,114,97,109,101,32,115,105,122,101,32,116,111,111,32,98,105,103,58,32,37,100,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,71,105,118,105,110,103,32,117,112,32,115,101,97,114,99,104,105,110,103,32,118,97,108,105,100,32,77,80,69,71,32,104,101,97,100,101,114,32,97,102,116,101,114,32,37,108,105,32,98,121,116,101,115,32,111,102,32,106,117,110,107,46,10,0,78,111,116,101,58,32,83,107,105,112,112,101,100,32,73,68,51,118,49,32,116,97,103,46,10,0,65,71,69,88,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,67,97,110,110,111,116,32,115,101,101,107,32,51,49,32,98,121,116,101,115,32,98,97,99,107,33,10,0,78,111,116,101,58,32,73,108,108,101,103,97,108,32,65,117,100,105,111,45,77,80,69,71,45,72,101,97,100,101,114,32,48,120,37,48,56,108,120,32,97,116,32,111,102,102,115,101,116,32,37,108,105,46,10,0,78,111,116,101,58,32,67,111,117,108,100,32,98,101,32,97,32,66,77,80,32,97,108,98,117,109,32,97,114,116,46,10,0,78,111,116,101,58,32,84,114,121,105,110,103,32,116,111,32,114,101,115,121,110,99,46,46,46,10,0,78,111,116,101,58,32,72,105,116,32,101,110,100,32,111,102,32,40,97,118,97,105,108,97,98,108,101,41,32,100,97,116,97,32,100,117,114,105,110,103,32,114,101,115,121,110,99,46,10,0,78,111,116,101,58,32,83,107,105,112,112,101,100,32,37,108,105,32,98,121,116,101,115,32,105,110,32,105,110,112,117,116,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,71,105,118,105,110,103,32,117,112,32,114,101,115,121,110,99,32,97,102,116,101,114,32,37,108,105,32,98,121,116,101,115,32,45,32,121,111,117,114,32,115,116,114,101,97,109,32,105,115,32,110,111,116,32,110,105,99,101,46,46,46,32,40,109,97,121,98,101,32,105,110,99,114,101,97,115,105,110,103,32,114,101,115,121,110,99,32,108,105,109,105,116,32,99,111,117,108,100,32,104,101,108,112,41,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,110,111,116,32,97,116,116,101,109,112,116,105,110,103,32,116,111,32,114,101,115,121,110,99,46,46,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,99,97,110,110,111,116,32,115,101,101,107,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,67,97,110,110,111,116,32,115,101,101,107,32,98,97,99,107,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,112,97,114,115,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,67,97,110,110,111,116,32,115,101,101,107,32,51,32,98,121,116,101,115,32,98,97,99,107,33,10,0,78,111,116,101,58,32,88,105,110,103,47,76,97,109,101,47,73,110,102,111,32,104,101,97,100,101,114,32,100,101,116,101,99,116,101,100,10,0,78,111,116,101,58,32,73,103,110,111,114,105,110,103,32,88,105,110,103,32,102,114,97,109,101,115,32,98,101,99,97,117,115,101,32,111,102,32,77,80,71,49,50,51,95,73,71,78,79,82,69,95,83,84,82,69,65,77,76,69,78,71,84,72,10,0,78,111,116,101,58,32,88,105,110,103,58,32,37,108,117,32,102,114,97,109,101,115,10,0,78,111,116,101,58,32,73,103,110,111,114,105,110,103,32,88,105,110,103,32,98,121,116,101,115,32,98,101,99,97,117,115,101,32,111,102,32,77,80,71,49,50,51,95,73,71,78,79,82,69,95,83,84,82,69,65,77,76,69,78,71,84,72,10,0,78,111,116,101,58,32,88,105,110,103,32,115,116,114,101,97,109,32,115,105,122,101,32,37,108,117,32,100,105,102,102,101,114,115,32,98,121,32,37,102,37,37,32,102,114,111,109,32,100,101,116,101,114,109,105,110,101,100,47,103,105,118,101,110,32,102,105,108,101,32,115,105,122,101,33,10,0,87,97,114,110,105,110,103,58,32,88,105,110,103,32,115,116,114,101,97,109,32,115,105,122,101,32,111,102,102,32,98,121,32,109,111,114,101,32,116,104,97,110,32,49,37,37,44,32,102,117,122,122,121,32,115,101,101,107,105,110,103,32,109,97,121,32,98,101,32,101,118,101,110,32,109,111,114,101,32,102,117,122,122,121,32,116,104,97,110,32,98,121,32,100,101,115,105,103,110,33,10,0,78,111,116,101,58,32,88,105,110,103,58,32,37,108,117,32,98,121,116,101,115,10,0,78,111,116,101,58,32,88,105,110,103,58,32,113,117,97,108,105,116,121,32,61,32,37,108,117,10,0,78,111,116,101,58,32,73,110,102,111,58,32,69,110,99,111,100,101,114,58,32,37,115,10,0,76,65,77,69,0,37,117,46,37,117,37,115,0,78,111,116,101,58,32,73,110,102,111,58,32,79,108,100,32,76,65,77,69,32,100,101,116,101,99,116,101,100,44,32,117,115,105,110,103,32,82,101,112,108,97,121,71,97,105,110,32,112,114,101,97,109,112,32,111,102,32,37,102,32,100,66,46,10,0,78,111,116,101,58,32,73,110,102,111,58,32,67,97,110,110,111,116,32,100,101,116,101,114,109,105,110,101,32,76,65,77,69,32,118,101,114,115,105,111,110,46,10,0,78,111,116,101,58,32,73,110,102,111,58,32,114,101,118,32,37,117,10,0,78,111,116,101,58,32,73,110,102,111,58,32,118,98,114,32,109,111,100,101,32,37,117,10,0,78,111,116,101,58,32,73,110,102,111,58,32,112,101,97,107,32,61,32,37,102,32,40,73,32,119,111,110,39,116,32,117,115,101,32,116,104,105,115,41,10,0,78,111,116,101,58,32,73,110,102,111,58,32,82,97,100,105,111,32,71,97,105,110,32,61,32,37,48,51,46,49,102,100,66,10,0,78,111,116,101,58,32,73,110,102,111,58,32,65,117,100,105,111,112,104,105,108,101,32,71,97,105,110,32,61,32,37,48,51,46,49,102,100,66,10,0,78,111,116,101,58,32,73,110,102,111,58,32,65,66,82,32,114,97,116,101,32,61,32,37,117,10,0,78,111,116,101,58,32,69,110,99,111,100,101,114,32,100,101,108,97,121,32,61,32,37,105,59,32,112,97,100,100,105,110,103,32,61,32,37,105,10,0,10,87,97,114,110,105,110,103,58,32,69,110,99,111,117,110,116,101,114,101,100,32,109,111,114,101,32,100,97,116,97,32,97,102,116,101,114,32,97,110,110,111,117,110,99,101,100,32,101,110,100,32,111,102,32,116,114,97,99,107,32,40,102,114,97,109,101,32,37,108,105,47,37,108,105,41,46,32,70,114,97,110,107,101,110,115,116,101,105,110,33,10,0,10,87,97,114,110,105,110,103,58,32,66,105,103,32,99,104,97,110,103,101,32,40,77,80,69,71,32,118,101,114,115,105,111,110,44,32,108,97,121,101,114,44,32,114,97,116,101,41,46,32,70,114,97,110,107,101,110,115,116,101,105,110,32,115,116,114,101,97,109,63,10,0,10,87,97,114,110,105,110,103,58,32,66,105,103,32,99,104,97,110,103,101,32,102,114,111,109,32,102,105,114,115,116,32,40,77,80,69,71,32,118,101,114,115,105,111,110,44,32,108,97,121,101,114,44,32,114,97,116,101,41,46,32,70,114,97,110,107,101,110,115,116,101,105,110,32,115,116,114,101,97,109,63,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,102,114,97,109,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,104,97,118,101,32,101,120,116,101,114,110,97,108,32,98,117,102,102,101,114,32,111,102,32,115,105,122,101,32,37,108,117,44,32,110,101,101,100,32,37,108,117,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,102,114,97,109,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,66,97,100,32,100,111,119,110,95,115,97,109,112,108,101,32,40,37,105,41,32,46,46,46,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,112,111,115,115,105,98,108,101,33,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,102,114,97,109,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,66,97,100,32,100,111,119,110,95,115,97,109,112,108,101,32,46,46,46,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,112,111,115,115,105,98,108,101,33,33,10,0,78,111,116,101,58,32,100,111,105,110,103,32,82,86,65,32,119,105,116,104,32,103,97,105,110,32,37,102,10,0,84,73,84,50,0,84,65,76,66,0,84,80,69,49,0,84,89,69,82,0,84,67,79,78,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,107,110,111,119,110,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,37,117,44,32,73,32,116,97,107,101,32,110,111,32,99,104,97,110,99,101,115,44,32,115,111,114,114,121,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,110,118,97,108,105,100,32,85,84,70,49,54,32,115,117,114,114,111,103,97,116,101,32,112,97,105,114,32,97,116,32,37,108,105,32,40,48,120,37,48,52,108,120,41,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,66,97,100,32,116,97,103,32,108,101,110,103,116,104,32,40,110,111,116,32,115,121,110,99,104,115,97,102,101,41,58,32,48,120,37,48,50,120,37,48,50,120,37,48,50,120,37,48,50,120,59,32,89,111,117,32,103,111,116,32,97,32,98,97,100,32,73,68,51,32,116,97,103,32,104,101,114,101,46,10,0,78,111,116,101,58,32,73,68,51,118,50,46,37,105,32,114,101,118,32,37,105,32,116,97,103,32,111,102,32,37,108,117,32,98,121,116,101,115,10,0,78,111,116,101,58,32,83,107,105,112,112,105,110,103,32,73,68,51,118,50,32,116,97,103,32,112,101,114,32,117,115,101,114,32,114,101,113,117,101,115,116,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,66,97,100,32,40,110,111,110,45,115,121,110,99,104,115,97,102,101,41,32,116,97,103,32,111,102,102,115,101,116,58,32,48,120,37,48,50,120,37,48,50,120,37,48,50,120,37,48,50,120,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,68,51,118,50,58,32,110,111,110,45,115,121,110,99,115,97,102,101,32,115,105,122,101,32,111,102,32,37,115,32,102,114,97,109,101,44,32,115,107,105,112,112,105,110,103,32,116,104,101,32,114,101,109,97,105,110,100,101,114,32,111,102,32,116,97,103,10,0,78,111,116,101,58,32,73,68,51,118,50,32,37,115,32,102,114,97,109,101,32,111,102,32,115,105,122,101,32,37,108,117,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,87,104,111,97,33,32,73,68,51,118,50,32,102,114,97,109,101,32,99,108,97,105,109,115,32,116,111,32,98,101,32,108,97,114,103,101,114,32,116,104,97,110,32,116,104,101,32,119,104,111,108,101,32,114,101,115,116,32,111,102,32,116,104,101,32,116,97,103,46,10,0,67,79,77,0,84,65,76,0,84,66,80,0,84,67,77,0,84,67,79,0,84,67,82,0,84,68,65,0,84,68,89,0,84,69,78,0,84,70,84,0,84,73,77,0,84,75,69,0,84,76,65,0,84,76,69,0,84,77,84,0,84,79,65,0,84,79,70,0,84,79,76,0,84,79,82,0,84,79,84,0,84,80,49,0,84,80,50,0,84,80,51,0,84,80,52,0,84,80,65,0,84,80,66,0,84,82,67,0,84,82,75,0,84,83,73,0,84,83,83,0,84,84,49,0,84,84,50,0,84,84,51,0,84,88,84,0,84,88,88,0,84,89,69,0,67,79,77,77,0,84,66,80,77,0,84,67,79,77,0,84,67,79,80,0,84,68,65,84,0,84,68,76,89,0,84,69,78,67,0,84,70,76,84,0,84,73,77,69,0,84,75,69,89,0,84,76,65,78,0,84,76,69,78,0,84,77,69,68,0,84,79,80,69,0,84,79,70,78,0,84,79,76,89,0,84,79,82,89,0,84,79,65,76,0,84,80,69,50,0,84,80,69,51,0,84,80,69,52,0,84,80,79,83,0,84,80,85,66,0,84,83,82,67,0,84,82,68,65,0,84,82,67,75,0,84,83,73,90,0,84,83,83,69,0,84,73,84,49,0,84,73,84,51,0,84,69,88,84,0,84,88,88,88,0,84,114,97,110,115,108,97,116,101,100,32,73,68,51,118,50,46,50,32,102,114,97,109,101,32,37,115,32,116,111,32,37,115,10,0,73,103,110,111,114,105,110,103,32,117,110,116,114,97,110,115,108,97,116,101,100,32,73,68,51,118,50,46,50,32,102,114,97,109,101,32,37,99,37,99,37,99,10,0,67,79,77,77,0,84,88,88,88,0,82,86,65,50,0,85,83,76,84,0,65,80,73,67,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,68,51,118,50,58,32,117,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,119,111,114,107,105,110,103,32,98,117,102,102,101,114,32,102,111,114,32,100,101,45,117,110,115,121,110,99,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,110,118,97,108,105,100,32,102,114,97,109,101,32,115,105,122,101,32,111,102,32,37,108,117,32,40,116,111,111,32,115,109,97,108,108,32,102,111,114,32,97,110,121,116,104,105,110,103,41,46,10,0,117,110,107,110,111,119,110,33,0,85,84,70,45,56,0,85,84,70,45,49,54,32,66,69,0,85,84,70,45,49,54,32,66,79,77,0,76,97,116,105,110,32,49,0,78,111,116,101,58,32,83,116,111,114,105,110,103,32,99,111,109,109,101,110,116,32,102,114,111,109,32,37,115,32,101,110,99,111,100,105,110,103,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,97,116,116,97,99,104,32,110,101,119,32,99,111,109,109,101,110,116,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,78,111,32,99,111,109,109,101,110,116,32,116,101,120,116,32,47,32,118,97,108,105,100,32,100,101,115,99,114,105,112,116,105,111,110,63,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,67,97,110,110,111,116,32,114,101,115,105,122,101,32,116,97,114,103,101,116,32,115,116,114,105,110,103,44,32,111,117,116,32,111,102,32,109,101,109,111,114,121,63,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,99,111,110,118,101,114,116,32,115,116,114,105,110,103,32,116,111,32,85,84,70,45,56,32,40,111,117,116,32,111,102,32,109,101,109,111,114,121,44,32,106,117,110,107,32,105,110,112,117,116,63,41,33,10,0,78,111,116,101,58,32,73,68,51,32,99,111,109,109,47,117,115,108,116,32,100,101,115,99,32,111,102,32,108,101,110,103,116,104,32,37,108,117,46,10,0,78,111,116,101,58,32,73,68,51,32,99,111,109,109,47,117,115,108,116,32,116,101,120,116,32,111,102,32,108,101,110,103,116,104,32,37,108,117,46,10,0,114,118,97,0,114,118,97,95,109,105,120,0,114,118,97,95,116,114,97,99,107,0,114,118,97,95,114,97,100,105,111,0,114,118,97,95,97,108,98,117,109,0,114,118,97,95,97,117,100,105,111,112,104,105,108,101,0,114,118,97,95,117,115,101,114,0,78,111,116,101,58,32,82,86,65,32,118,97,108,117,101,32,37,102,100,66,10,0,78,111,116,101,58,32,83,116,111,114,105,110,103,32,101,120,116,114,97,32,102,114,111,109,32,37,115,32,101,110,99,111,100,105,110,103,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,78,111,32,101,120,116,114,97,32,102,114,97,109,101,32,116,101,120,116,32,47,32,118,97,108,105,100,32,100,101,115,99,114,105,112,116,105,111,110,63,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,97,116,116,97,99,104,32,110,101,119,32,101,120,116,114,97,32,116,101,120,116,33,10,0,114,101,112,108,97,121,103,97,105,110,95,116,114,97,99,107,95,0,78,111,116,101,58,32,82,86,65,32,82,101,112,108,97,121,71,97,105,110,32,116,114,97,99,107,32,103,97,105,110,47,112,101,97,107,10,0,114,101,112,108,97,121,103,97,105,110,95,116,114,97,99,107,95,112,101,97,107,0,114,101,112,108,97,121,103,97,105,110,95,116,114,97,99,107,95,103,97,105,110,0,114,101,112,108,97,121,103,97,105,110,95,97,108,98,117,109,95,0,78,111,116,101,58,32,82,86,65,32,82,101,112,108,97,121,71,97,105,110,32,97,108,98,117,109,32,103,97,105,110,47,112,101,97,107,10,0,114,101,112,108,97,121,103,97,105,110,95,97,108,98,117,109,95,112,101,97,107,0,114,101,112,108,97,121,103,97,105,110,95,97,108,98,117,109,95,103,97,105,110,0,78,111,116,101,58,32,82,86,65,32,112,101,97,107,32,37,102,10,0,78,111,116,101,58,32,82,86,65,32,103,97,105,110,32,37,102,100,66,10,0,78,111,116,101,58,32,82,86,65,50,32,105,100,101,110,116,105,102,105,99,97,116,105,111,110,32,34,37,115,34,10,0,97,108,98,117,109,0,97,117,100,105,111,112,104,105,108,101,0,117,115,101,114,0,78,111,116,101,58,32,83,116,111,114,105,110,103,32,116,101,120,116,32,102,114,111,109,32,37,115,32,101,110,99,111,100,105,110,103,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,97,116,116,97,99,104,32,110,101,119,32,116,101,120,116,33,10,0,78,111,116,101,58,32,73,68,51,118,50,32,37,99,37,99,37,99,37,99,32,116,101,120,116,32,102,114,97,109,101,58,32,37,115,10,0,78,111,116,101,58,32,83,116,111,114,105,110,103,32,112,105,99,116,117,114,101,32,102,114,111,109,32,65,80,73,67,32,102,114,97,109,101,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,97,116,116,97,99,104,32,110,101,119,32,112,105,99,116,117,114,101,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,103,101,116,32,109,105,109,101,32,116,121,112,101,32,102,111,114,32,112,105,99,116,117,114,101,59,32,115,107,105,112,112,105,110,103,32,112,105,99,116,117,114,101,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,103,101,116,32,100,101,115,99,114,105,112,116,105,111,110,32,102,111,114,32,112,105,99,116,117,114,101,59,32,115,107,105,112,112,105,110,103,32,112,105,99,116,117,114,101,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,78,111,32,112,105,99,116,117,114,101,32,100,97,116,97,32,100,101,102,105,110,101,100,59,32,115,107,105,112,112,105,110,103,32,112,105,99,116,117,114,101,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,112,105,99,116,117,114,101,59,32,115,107,105,112,112,105,110,103,32,112,105,99,116,117,114,101,10,0,78,111,116,101,58,32,73,68,51,118,50,32,65,80,73,67,32,112,105,99,116,117,114,101,32,102,114,97,109,101,32,111,102,32,116,121,112,101,58,32,37,100,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,68,51,118,50,58,32,117,110,107,110,111,119,110,32,102,114,97,109,101,32,116,121,112,101,32,37,105,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,68,51,118,50,58,32,68,117,104,44,32,110,111,116,32,97,98,108,101,32,116,111,32,114,101,97,100,32,73,68,51,118,50,32,116,97,103,32,100,97,116,97,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,105,100,51,46,99,58,37,105,93,32,101,114,114,111,114,58,32,73,68,51,118,50,58,32,65,114,114,103,33,32,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,37,108,117,32,98,121,116,101,115,32,102,111,114,32,105,110,116,101,114,112,114,101,116,105,110,103,32,73,68,51,118,50,32,100,97,116,97,32,45,32,116,114,121,105,110,103,32,116,111,32,115,107,105,112,32,105,110,115,116,101,97,100,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,111,112,116,105,109,105,122,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,115,101,116,95,115,121,110,116,104,95,102,117,110,99,116,105,111,110,115,58,32,84,104,105,115,32,111,117,116,112,117,116,32,102,111,114,109,97,116,32,105,115,32,100,105,115,97,98,108,101,100,32,105,110,32,116,104,105,115,32,98,117,105,108,100,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,111,112,116,105,109,105,122,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,115,101,116,95,115,121,110,116,104,95,102,117,110,99,116,105,111,110,115,58,32,84,104,105,115,32,114,101,115,97,109,112,108,105,110,103,32,109,111,100,101,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,116,104,105,115,32,98,117,105,108,100,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,111,112,116,105,109,105,122,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,97,99,116,105,118,101,32,100,101,99,111,100,101,114,32,116,121,112,101,32,45,45,32,116,104,105,115,32,105,115,32,83,69,82,73,79,85,83,32,98,48,114,107,97,103,101,33,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,111,112,116,105,109,105,122,101,46,99,58,37,105,93,32,101,114,114,111,114,58,32,70,97,105,108,101,100,32,116,111,32,115,101,116,32,117,112,32,100,101,99,111,100,101,114,32,98,117,102,102,101,114,115,33,10,0,103,101,110,101,114,105,99,0,68,101,99,111,100,101,114,58,32,37,115,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,114,101,97,100,101,114,115,46,99,58,37,105,93,32,101,114,114,111,114,58,32,70,97,105,108,101,100,32,116,111,32,97,100,100,32,98,117,102,102,101,114,44,32,114,101,116,117,114,110,58,32,37,105,10,0,84,65,71,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,114,101,97,100,101,114,115,46,99,58,37,105,93,32,101,114,114,111,114,58,32,109,112,103,49,50,51,32,80,114,111,103,114,97,109,109,101,114,39,115,32,102,97,117,108,116,58,32,105,110,118,97,108,105,100,32,114,101,97,100,101,114,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,114,101,97,100,101,114,115,46,99,58,37,105,93,32,101,114,114,111,114,58,32,98,117,102,102,101,114,32,114,101,97,100,105,110,103,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,114,101,97,100,101,114,115,46,99,58,37,105,93,32,101,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,97,100,100,32,116,111,32,99,104,97,105,110,44,32,114,101,116,117,114,110,58,32,37,105,10,0,78,111,116,101,58,32,73,110,112,117,116,32,100,97,116,97,32,101,110,100,46,10,0,91,46,46,47,46,46,47,109,112,103,49,50,51,47,115,114,99,47,108,105,98,109,112,103,49,50,51,47,114,101,97,100,101,114,115,46,99,58,37,105,93,32,101,114,114,111,114,58,32,103,111,116,99,111,117,110,116,32,33,61,32,99,111,117,110,116,10,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,78,65,78,0,105,110,102,105,110,105,116,121,0,110,97,110,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;Module["_i64Add"]=_i64Add;Module["_memset"]=_memset;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_bitshift64Shl"]=_bitshift64Shl;function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function _abort(){Module["abort"]()}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _llvm_fabs_f64=Math_abs;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_memmove"]=_memmove;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f64=Math_sqrt;function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Va(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Wa(a){a=a|0;C=a}function Xa(){return C|0}function Ya(b,e){b=b|0;e=e|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;f=i;i=i+64|0;j=f+40|0;k=f+24|0;l=f+8|0;m=f;if(!(c[7596]|0)){if(!(c[7597]|0)){n=0;do{g[30392+(n<<2)>>2]=+P(+(+(n|0)),1.3333333333333333);n=n+1|0}while((n|0)!=8207);o=0;do{p=+h[8+(o<<3)>>3];q=+O(+(p*p+1.0));g[63220+(o<<2)>>2]=1.0/q;g[63252+(o<<2)>>2]=p/q;o=o+1|0}while((o|0)!=8);r=0;do{o=r<<1;q=+R(+(+(o|1|0)*.04363323129985824))*.5/+Q(+(+(o+19|0)*.04363323129985824));g[63428+(r<<2)>>2]=q;g[63284+(r<<2)>>2]=q;o=r+18|0;n=o<<1;q=+R(+(+(n|1|0)*.04363323129985824))*.5/+Q(+(+(n+19|0)*.04363323129985824));g[63716+(o<<2)>>2]=q;g[63284+(o<<2)>>2]=q;r=r+1|0}while((r|0)!=18);s=0;do{r=s+18|0;g[63428+(r<<2)>>2]=.5/+Q(+(+((r<<1)+19|0)*.04363323129985824));r=s+12|0;g[63716+(r<<2)>>2]=.5/+Q(+(+((r<<1)+19|0)*.04363323129985824));r=s<<1;o=s+24|0;g[63428+(o<<2)>>2]=+R(+(+(r+13|0)*.1308996938995747))*.5/+Q(+(+((o<<1)+19|0)*.04363323129985824));g[63716+(s<<2)>>2]=0.0;g[63428+(s+30<<2)>>2]=0.0;o=s+6|0;g[63716+(o<<2)>>2]=+R(+(+(r|1|0)*.1308996938995747))*.5/+Q(+(+((o<<1)+19|0)*.04363323129985824));s=s+1|0}while((s|0)!=6);g[20451]=.5019099116325378;g[20452]=.517638087272644;g[20453]=.5516889691352844;g[20454]=.6103872656822205;g[20455]=.7071067690849304;g[20456]=.8717234134674072;g[20457]=1.1831008195877075;g[20458]=1.9318516254425049;g[20459]=5.736856460571289;g[20460]=.517638087272644;g[20461]=.7071067690849304;g[20462]=1.9318516254425049;g[15965]=.8660253882408142;g[15966]=.5;g[15967]=.9396926164627075;g[15968]=-.1736481785774231;g[15969]=-.7660444378852844;g[15970]=.9848077297210693;g[15971]=-.3420201539993286;g[15972]=-.6427876353263855;s=0;do{o=s<<1;g[63572+(s<<2)>>2]=+R(+(+(o|1|0)*.1308996938995747))*.5/+Q(+(+(o+7|0)*.1308996938995747));s=s+1|0}while((s|0)!=12);t=0;do{q=+(t|0);p=+S(+(q*.2617993877991494));u=p+1.0;g[63892+(t<<2)>>2]=p/u;g[63956+(t<<2)>>2]=1.0/u;g[64020+(t<<2)>>2]=p*1.4142135623730951/u;g[64084+(t<<2)>>2]=1.4142135623730951/u;u=q*.5;p=(q+1.0)*.5;do if((t|0)>0)if(!(t&1)){q=+P(.8408964152537145,+u);g[64148+(t<<2)>>2]=1.0;g[64276+(t<<2)>>2]=q;g[64404+(t<<2)>>2]=1.4142135381698608;g[64532+(t<<2)>>2]=q*1.4142135623730951;q=+P(.7071067811865476,+u);g[64212+(t<<2)>>2]=1.0;g[64340+(t<<2)>>2]=q;g[64468+(t<<2)>>2]=1.4142135381698608;g[64596+(t<<2)>>2]=q*1.4142135623730951;break}else{q=+P(.8408964152537145,+p);g[64148+(t<<2)>>2]=q;g[64276+(t<<2)>>2]=1.0;g[64404+(t<<2)>>2]=q*1.4142135623730951;g[64532+(t<<2)>>2]=1.4142135381698608;q=+P(.7071067811865476,+p);g[64212+(t<<2)>>2]=q;g[64340+(t<<2)>>2]=1.0;g[64468+(t<<2)>>2]=q*1.4142135623730951;g[64596+(t<<2)>>2]=1.4142135381698608;break}else{g[64148+(t<<2)>>2]=1.0;g[64276+(t<<2)>>2]=1.0;g[64404+(t<<2)>>2]=1.4142135381698608;g[64532+(t<<2)>>2]=1.4142135381698608;g[64212+(t<<2)>>2]=1.0;g[64340+(t<<2)>>2]=1.0;g[64468+(t<<2)>>2]=1.4142135381698608;g[64596+(t<<2)>>2]=1.4142135381698608}while(0);t=t+1|0}while((t|0)!=16);c[16165]=c[15821];c[16167]=c[15823];c[16169]=c[15825];c[16171]=c[15827];c[16173]=c[15829];c[16175]=c[15831];c[16177]=c[15833];c[16179]=c[15835];c[16181]=c[15837];c[16183]=c[15839];c[16185]=c[15841];c[16187]=c[15843];c[16189]=c[15845];c[16191]=c[15847];c[16193]=c[15849];c[16195]=c[15851];c[16197]=c[15853];c[16199]=c[15855];g[16166]=-+g[15822];g[16168]=-+g[15824];g[16170]=-+g[15826];g[16172]=-+g[15828];g[16174]=-+g[15830];g[16176]=-+g[15832];g[16178]=-+g[15834];g[16180]=-+g[15836];g[16182]=-+g[15838];g[16184]=-+g[15840];g[16186]=-+g[15842];g[16188]=-+g[15844];g[16190]=-+g[15846];g[16192]=-+g[15848];g[16194]=-+g[15850];g[16196]=-+g[15852];g[16198]=-+g[15854];g[16200]=-+g[15856];c[16201]=c[15857];c[16203]=c[15859];c[16205]=c[15861];c[16207]=c[15863];c[16209]=c[15865];c[16211]=c[15867];c[16213]=c[15869];c[16215]=c[15871];c[16217]=c[15873];c[16219]=c[15875];c[16221]=c[15877];c[16223]=c[15879];c[16225]=c[15881];c[16227]=c[15883];c[16229]=c[15885];c[16231]=c[15887];c[16233]=c[15889];c[16235]=c[15891];g[16202]=-+g[15858];g[16204]=-+g[15860];g[16206]=-+g[15862];g[16208]=-+g[15864];g[16210]=-+g[15866];g[16212]=-+g[15868];g[16214]=-+g[15870];g[16216]=-+g[15872];g[16218]=-+g[15874];g[16220]=-+g[15876];g[16222]=-+g[15878];g[16224]=-+g[15880];g[16226]=-+g[15882];g[16228]=-+g[15884];g[16230]=-+g[15886];g[16232]=-+g[15888];g[16234]=-+g[15890];g[16236]=-+g[15892];c[16237]=c[15893];c[16239]=c[15895];c[16241]=c[15897];c[16243]=c[15899];c[16245]=c[15901];c[16247]=c[15903];g[16238]=-+g[15894];g[16240]=-+g[15896];g[16242]=-+g[15898];g[16244]=-+g[15900];g[16246]=-+g[15902];g[16248]=-+g[15904];c[16273]=c[15929];c[16275]=c[15931];c[16277]=c[15933];c[16279]=c[15935];c[16281]=c[15937];c[16283]=c[15939];c[16285]=c[15941];c[16287]=c[15943];c[16289]=c[15945];c[16291]=c[15947];c[16293]=c[15949];c[16295]=c[15951];c[16297]=c[15953];c[16299]=c[15955];c[16301]=c[15957];c[16303]=c[15959];c[16305]=c[15961];c[16307]=c[15963];g[16274]=-+g[15930];g[16276]=-+g[15932];g[16278]=-+g[15934];g[16280]=-+g[15936];g[16282]=-+g[15938];g[16284]=-+g[15940];g[16286]=-+g[15942];g[16288]=-+g[15944];g[16290]=-+g[15946];g[16292]=-+g[15948];g[16294]=-+g[15950];g[16296]=-+g[15952];g[16298]=-+g[15954];g[16300]=-+g[15956];g[16302]=-+g[15958];g[16304]=-+g[15960];g[16306]=-+g[15962];g[16308]=-+g[15964];t=72564;s=73044;o=67444;r=65412;n=0;while(1){v=72436+(n*608|0)|0;c[77908+(n*12|0)>>2]=v;w=7004+(n*110|0)+46|0;x=d[w>>0]|0;c[v>>2]=x>>>1;c[72436+(n*608|0)+4>>2]=0;c[72436+(n*608|0)+8>>2]=3;c[72436+(n*608|0)+12>>2]=0;v=d[7004+(n*110|0)+47>>0]|0;y=v>>>1;c[72436+(n*608|0)+16>>2]=y;c[72436+(n*608|0)+20>>2]=x;c[72436+(n*608|0)+24>>2]=3;c[72436+(n*608|0)+28>>2]=1;z=v+x|0;x=d[7004+(n*110|0)+48>>0]|0;v=x>>>1;c[72436+(n*608|0)+32>>2]=v;c[72436+(n*608|0)+36>>2]=z;c[72436+(n*608|0)+40>>2]=3;c[72436+(n*608|0)+44>>2]=2;A=x+z|0;z=d[7004+(n*110|0)+49>>0]|0;x=z>>>1;c[72436+(n*608|0)+48>>2]=x;c[72436+(n*608|0)+52>>2]=A;c[72436+(n*608|0)+56>>2]=3;c[72436+(n*608|0)+60>>2]=3;B=z+A|0;A=d[7004+(n*110|0)+50>>0]|0;z=A>>>1;c[72436+(n*608|0)+64>>2]=z;c[72436+(n*608|0)+68>>2]=B;c[72436+(n*608|0)+72>>2]=3;c[72436+(n*608|0)+76>>2]=4;C=A+B|0;B=d[7004+(n*110|0)+51>>0]|0;A=B>>>1;c[72436+(n*608|0)+80>>2]=A;c[72436+(n*608|0)+84>>2]=C;c[72436+(n*608|0)+88>>2]=3;c[72436+(n*608|0)+92>>2]=5;D=B+C|0;C=d[7004+(n*110|0)+52>>0]|0;B=C>>>1;c[72436+(n*608|0)+96>>2]=B;c[72436+(n*608|0)+100>>2]=D;c[72436+(n*608|0)+104>>2]=3;c[72436+(n*608|0)+108>>2]=6;E=C+D|0;D=d[7004+(n*110|0)+53>>0]|0;C=D>>>1;c[72436+(n*608|0)+112>>2]=C;c[72436+(n*608|0)+116>>2]=E;c[72436+(n*608|0)+120>>2]=3;c[72436+(n*608|0)+124>>2]=7;F=7004+(n*110|0)+109|0;G=7004+(n*110|0)+99|0;H=3;I=D+E|0;E=t;while(1){D=(d[G>>0]|0)>>>1;c[E>>2]=D;c[E+4>>2]=I;c[E+8>>2]=0;c[E+12>>2]=H;c[E+16>>2]=D;c[E+20>>2]=I+1;c[E+24>>2]=1;c[E+28>>2]=H;c[E+32>>2]=D;c[E+36>>2]=I+2;c[E+40>>2]=2;c[E+44>>2]=H;G=G+1|0;if((G|0)==(F|0))break;else{H=H+1|0;I=(D*6|0)+I|0;E=E+48|0}}c[78016+(n*12|0)>>2]=s;E=66820+(n*624|0)|0;c[77908+(n*12|0)+4>>2]=E;I=7004+(n*110|0)+96|0;H=0;F=0;G=E;while(1){E=(d[I>>0]|0)>>>1;c[G>>2]=E;c[G+4>>2]=F;c[G+8>>2]=0;c[G+12>>2]=H;c[G+16>>2]=E;c[G+20>>2]=F|1;c[G+24>>2]=1;c[G+28>>2]=H;c[G+32>>2]=E;c[G+36>>2]=F+2;c[G+40>>2]=2;c[G+44>>2]=H;H=H+1|0;if((H|0)==13)break;else{I=I+1|0;F=(E*6|0)+F|0;G=G+48|0}}c[78016+(n*12|0)+4>>2]=o;G=65236+(n*176|0)|0;c[77908+(n*12|0)+8>>2]=G;c[G>>2]=(d[w>>0]|0)>>>1;c[65236+(n*176|0)+4>>2]=0;c[65236+(n*176|0)+8>>2]=y;c[65236+(n*176|0)+12>>2]=1;c[65236+(n*176|0)+16>>2]=v;c[65236+(n*176|0)+20>>2]=2;c[65236+(n*176|0)+24>>2]=x;c[65236+(n*176|0)+28>>2]=3;c[65236+(n*176|0)+32>>2]=z;c[65236+(n*176|0)+36>>2]=4;c[65236+(n*176|0)+40>>2]=A;c[65236+(n*176|0)+44>>2]=5;c[65236+(n*176|0)+48>>2]=B;c[65236+(n*176|0)+52>>2]=6;c[65236+(n*176|0)+56>>2]=C;c[65236+(n*176|0)+60>>2]=7;c[65236+(n*176|0)+64>>2]=(d[7004+(n*110|0)+54>>0]|0)>>>1;c[65236+(n*176|0)+68>>2]=8;c[65236+(n*176|0)+72>>2]=(d[7004+(n*110|0)+55>>0]|0)>>>1;c[65236+(n*176|0)+76>>2]=9;c[65236+(n*176|0)+80>>2]=(d[7004+(n*110|0)+56>>0]|0)>>>1;c[65236+(n*176|0)+84>>2]=10;c[65236+(n*176|0)+88>>2]=(d[7004+(n*110|0)+57>>0]|0)>>>1;c[65236+(n*176|0)+92>>2]=11;c[65236+(n*176|0)+96>>2]=(d[7004+(n*110|0)+58>>0]|0)>>>1;c[65236+(n*176|0)+100>>2]=12;c[65236+(n*176|0)+104>>2]=(d[7004+(n*110|0)+59>>0]|0)>>>1;c[65236+(n*176|0)+108>>2]=13;c[65236+(n*176|0)+112>>2]=(d[7004+(n*110|0)+60>>0]|0)>>>1;c[65236+(n*176|0)+116>>2]=14;c[65236+(n*176|0)+120>>2]=(d[7004+(n*110|0)+61>>0]|0)>>>1;c[65236+(n*176|0)+124>>2]=15;c[65236+(n*176|0)+128>>2]=(d[7004+(n*110|0)+62>>0]|0)>>>1;c[65236+(n*176|0)+132>>2]=16;c[65236+(n*176|0)+136>>2]=(d[7004+(n*110|0)+63>>0]|0)>>>1;c[65236+(n*176|0)+140>>2]=17;c[65236+(n*176|0)+144>>2]=(d[7004+(n*110|0)+64>>0]|0)>>>1;c[65236+(n*176|0)+148>>2]=18;c[65236+(n*176|0)+152>>2]=(d[7004+(n*110|0)+65>>0]|0)>>>1;c[65236+(n*176|0)+156>>2]=19;c[65236+(n*176|0)+160>>2]=(d[7004+(n*110|0)+66>>0]|0)>>>1;c[65236+(n*176|0)+164>>2]=20;c[65236+(n*176|0)+168>>2]=(d[7004+(n*110|0)+67>>0]|0)>>>1;c[65236+(n*176|0)+172>>2]=21;c[78016+(n*12|0)+8>>2]=r;n=n+1|0;if((n|0)==9){J=0;break}else{t=t+608|0;s=s+608|0;o=o+624|0;r=r+176|0}}do{r=J*36|0;o=0;do{s=(o*6|0)+r|0;t=J|o<<3;c[78124+(s<<2)>>2]=t|12288;c[78124+((s|1)<<2)>>2]=t|12352;c[78124+(s+2<<2)>>2]=t|12416;c[78124+(s+3<<2)>>2]=t|12480;c[78124+(s+4<<2)>>2]=t|12544;c[78124+(s+5<<2)>>2]=t|12608;o=o+1|0}while((o|0)!=6);J=J+1|0}while((J|0)!=5);K=0;do{J=K<<4;c[78124+(J+180<<2)>>2]=K|16384;c[78124+(J+181<<2)>>2]=K|16448;c[78124+(J+182<<2)>>2]=K|16512;c[78124+(J+183<<2)>>2]=K|16576;c[78124+(J+184<<2)>>2]=K|16392;c[78124+(J+185<<2)>>2]=K|16456;c[78124+(J+186<<2)>>2]=K|16520;c[78124+(J+187<<2)>>2]=K|16584;c[78124+(J+188<<2)>>2]=K|16400;c[78124+(J+189<<2)>>2]=K|16464;c[78124+(J+190<<2)>>2]=K|16528;c[78124+(J+191<<2)>>2]=K|16592;c[78124+(J+192<<2)>>2]=K|16408;c[78124+(J+193<<2)>>2]=K|16472;c[78124+(J+194<<2)>>2]=K|16536;c[78124+(J+195<<2)>>2]=K|16600;K=K+1|0}while((K|0)!=4);c[19775]=20480;c[20287]=40960;c[19776]=20488;c[20288]=40968;c[19777]=20496;c[20289]=40976;c[19778]=20481;c[20290]=40961;c[19779]=20489;c[20291]=40969;c[19780]=20497;c[20292]=40977;c[19781]=20482;c[20293]=40962;c[19782]=20490;c[20294]=40970;c[19783]=20498;c[20295]=40978;c[19784]=20483;c[20296]=40963;c[19785]=20491;c[20297]=40971;c[19786]=20499;c[20298]=40979;K=0;do{J=K*80|0;o=0;do{r=(o<<4)+J|0;C=o<<3|K;c[79148+(r<<2)>>2]=C;c[79148+((r|1)<<2)>>2]=C|512;c[79148+((r|2)<<2)>>2]=C|1024;c[79148+((r|3)<<2)>>2]=C|1536;c[79148+((r|4)<<2)>>2]=C|64;c[79148+((r|5)<<2)>>2]=C|576;c[79148+((r|6)<<2)>>2]=C|1088;c[79148+((r|7)<<2)>>2]=C|1600;c[79148+((r|8)<<2)>>2]=C|128;c[79148+((r|9)<<2)>>2]=C|640;c[79148+((r|10)<<2)>>2]=C|1152;c[79148+((r|11)<<2)>>2]=C|1664;c[79148+((r|12)<<2)>>2]=C|192;c[79148+((r|13)<<2)>>2]=C|704;c[79148+((r|14)<<2)>>2]=C|1216;c[79148+((r|15)<<2)>>2]=C|1728;o=o+1|0}while((o|0)!=5);K=K+1|0}while((K|0)!=5);L=0;do{K=L*20|0;c[79148+(K+400<<2)>>2]=L|4096;c[79148+(K+401<<2)>>2]=L|4160;c[79148+(K+402<<2)>>2]=L|4224;c[79148+(K+403<<2)>>2]=L|4288;c[79148+(K+404<<2)>>2]=L|4104;c[79148+(K+405<<2)>>2]=L|4168;c[79148+(K+406<<2)>>2]=L|4232;c[79148+(K+407<<2)>>2]=L|4296;c[79148+(K+408<<2)>>2]=L|4112;c[79148+(K+409<<2)>>2]=L|4176;c[79148+(K+410<<2)>>2]=L|4240;c[79148+(K+411<<2)>>2]=L|4304;c[79148+(K+412<<2)>>2]=L|4120;c[79148+(K+413<<2)>>2]=L|4184;c[79148+(K+414<<2)>>2]=L|4248;c[79148+(K+415<<2)>>2]=L|4312;c[79148+(K+416<<2)>>2]=L|4128;c[79148+(K+417<<2)>>2]=L|4192;c[79148+(K+418<<2)>>2]=L|4256;c[79148+(K+419<<2)>>2]=L|4320;L=L+1|0}while((L|0)!=5);M=0;do{g[81196+(M<<2)>>2]=.5/+Q(+(+(M|0)*.09817477042468103+.04908738521234052));M=M+1|0}while((M|0)!=16);g[20464]=.5024192929267883;g[20465]=.522498607635498;g[20466]=.5669440627098083;g[20467]=.6468217968940735;g[20468]=.7881546020507812;g[20469]=1.0606776475906372;g[20470]=1.722447156906128;g[20471]=5.10114860534668;g[20472]=.509795606136322;g[20473]=.601344883441925;g[20474]=.8999761939048767;g[20475]=2.562915563583374;g[20476]=.5411961078643799;g[20477]=1.3065630197525024;g[20463]=.7071067690849304;c[7597]=1}c[7596]=1}M=Mc(16)|0;if(M|0?c[M+-4>>2]&3|0:0){L=M;K=L+16|0;do{a[L>>0]=0;L=L+1|0}while((L|0)<(K|0))}c[M+4>>2]=b;c[M+8>>2]=e<<2;if(c[7597]|0?(e=Mc(28096)|0,e|0):0){mb(e,0);b=e+19084|0;c[b>>2]=c[1331];c[b+4>>2]=c[1332];c[b+8>>2]=c[1333];c[b+12>>2]=c[1334];c[e+19100>>2]=1;c[e+19104>>2]=1;b=c[e+27564>>2]|0;if((b&32|0)==0?(c[e+27560>>2]|0)!=0:0){c[m>>2]=27242;Lc(0,27250,m);N=c[e+27564>>2]|0}else N=b;c[e+27868>>2]=1;c[M>>2]=e;b=e+27564|0;a:do if((N&32|0)==0?(c[e+27560>>2]|0)>2:0){m=c[1719]|0;L=(m|0)==0;do if((c[1734]|0)>-1){do if(L){K=a[6934]|0;a[6934]=K+255|K;K=c[1715]|0;if(!(K&8)){c[1717]=0;c[1716]=0;o=c[1726]|0;c[1722]=o;c[1720]=o;J=o+(c[1727]|0)|0;c[1719]=J;T=J;U=o;break}else{c[1715]=K|32;V=67;break a}}else{T=m;U=c[1720]|0}while(0);if((T-U|0)>>>0<29){Ia[c[6896>>2]&127](6860,19249,29)|0;break}K=U;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,19249,29)|0)>>>0<29)break;W=0;X=19278;Y=c[1720]|0}else{W=29;X=19249;Y=K}Wc(Y|0,X|0,W|0)|0;c[1720]=(c[1720]|0)+W}else{do if(L){K=a[6934]|0;a[6934]=K+255|K;K=c[1715]|0;if(!(K&8)){c[1717]=0;c[1716]=0;o=c[1726]|0;c[1722]=o;c[1720]=o;J=o+(c[1727]|0)|0;c[1719]=J;Z=J;_=o;break}else{c[1715]=K|32;V=67;break a}}else{Z=m;_=c[1720]|0}while(0);if((Z-_|0)>>>0<29){Ia[c[6896>>2]&127](6860,19249,29)|0;break}K=_;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,19249,29)|0)>>>0<29)break;$=0;aa=19278;ba=c[1720]|0}else{$=29;aa=19249;ba=K}Wc(ba|0,aa|0,$|0)|0;c[1720]=(c[1720]|0)+$}while(0);Tc(e+27588|0,0,240)|0;ca=c[b>>2]|0}else V=67;while(0);if((V|0)==67){Tc(e+27588|0,0,240)|0;ca=N}if((ca&32|0)==0?(c[e+27560>>2]|0)>2:0){c[l>>2]=32e3;c[l+4>>2]=3;c[l+8>>2]=512;Lc(0,19279,l);da=c[b>>2]|0}else da=ca;a[e+27666>>0]=1;a[e+27786>>0]=1;if((da&32|0)==0?(c[e+27560>>2]|0)>2:0){c[k>>2]=44100;c[k+4>>2]=3;c[k+8>>2]=512;Lc(0,19279,k);ea=c[b>>2]|0}else ea=da;a[e+27678>>0]=1;a[e+27798>>0]=1;if((ea&32|0)==0?(c[e+27560>>2]|0)>2:0){c[j>>2]=48e3;c[j+4>>2]=3;c[j+8>>2]=512;Lc(0,19279,j)}a[e+27690>>0]=1;a[e+27810>>0]=1;j=e+27452|0;ea=c[(c[j>>2]|0)+4>>2]|0;if(ea|0)Ja[ea&127](e);ea=e+4|0;if(c[ea>>2]|0){c[e+27364>>2]=0;c[e+27384>>2]=0;c[e+27380>>2]=0;c[ea>>2]=0}pb(e)|0;c[j>>2]=5484;c[e+27472>>2]=0;La[c[5484>>2]&127](e)|0;fa=M;i=f;return fa|0}Nc(M);fa=0;i=f;return fa|0}function Za(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;i=i+16|0;h=g;c[h>>2]=0;j=a+4|0;k=a+8|0;l=cb(c[a>>2]|0,b,d,c[j>>2]|0,c[k>>2]|0,h)|0;if((l|0)==-11){d=c[a>>2]|0;do if(!d){m=0;n=0}else{if((c[d+19232>>2]|0)<0?(bb(d)|0)<=-1:0){m=0;n=0;break}b=c[d+27384>>2]|0;o=c[d+27380>>2]|0;c[d+4>>2]=0;m=o;n=b}while(0);Ka[f&127](n,m)}m=c[h>>2]|0;if(!m)p=l;else{Ja[e&127](m>>>2);p=l}a:while(1){switch(p|0){case -1:{break a;break}case -10:{q=0;r=13;break a;break}default:{}}l=cb(c[a>>2]|0,0,0,c[j>>2]|0,c[k>>2]|0,h)|0;m=c[h>>2]|0;if(!m){p=l;continue}Ja[e&127](m>>>2);p=l}if((r|0)==13){i=g;return q|0}q=-1;i=g;return q|0}function _a(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(!b){Nc(a);return}d=c[(c[b+27452>>2]|0)+4>>2]|0;if(d|0)Ja[d&127](b);d=b+4|0;if(c[d>>2]|0){c[b+27364>>2]=0;c[b+27384>>2]=0;c[b+27380>>2]=0;c[d>>2]=0}pb(b)|0;b=c[a>>2]|0;if(!b){Nc(a);return}d=c[(c[b+27452>>2]|0)+4>>2]|0;if(d|0)Ja[d&127](b);d=b+4|0;if(c[d>>2]|0){c[b+27364>>2]=0;c[b+27384>>2]=0;c[b+27380>>2]=0;c[d>>2]=0}pb(b)|0;qb(b);Nc(b);Nc(a);return}function $a(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;d=i;i=i+32|0;e=d+24|0;f=d;g=c[b+27564>>2]|0;h=g>>>1&8;j=g&1024;k=(j|0)==0?h:6;l=j>>>8^12;j=g&7;m=(j|0)==0;n=m?c[b+19132>>2]|0:1;o=(g&8|0)==0;p=o?n:2;q=c[4960+(c[b+19188>>2]<<2)>>2]|0;r=q>>c[b+27568>>2];s=p+-1|0;t=(r|0)==8e3;if(!t)if((r|0)!=11025)if((r|0)!=12e3)if((r|0)!=16e3)if((r|0)!=22050)if((r|0)!=24e3)if((r|0)!=32e3)if((r|0)!=44100)if((r|0)==48e3){u=8;v=10}else v=14;else{u=7;v=10}else{u=6;v=10}else{u=5;v=10}else{u=4;v=10}else{u=3;v=10}else{u=2;v=10}else{u=1;v=10}else{u=0;v=10}a:do if((v|0)==10)if(k>>>0<2){w=h;while(1){if(a[b+27588+(s*120|0)+(u*12|0)+w>>0]|0)break;x=w+1|0;if((x|0)<2)w=x;else{v=14;break a}}y=4168+(w<<2)|0;z=p;A=r}else v=14;while(0);b:do if((v|0)==14){u=(g&32768|0)==0;c:do if(!u){x=r>>1;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100){if((x|0)==48e3){B=8;v=24}}else{B=7;v=24}else{B=6;v=24}else{B=5;v=24}else{B=4;v=24}else{B=3;v=24}else{B=2;v=24}else{B=1;v=24}else{B=0;v=24}d:do if((v|0)==24?k>>>0<2:0){C=h;while(1){if(a[b+27588+(s*120|0)+(B*12|0)+C>>0]|0)break;D=C+1|0;if((D|0)<2)C=D;else break d}y=4168+(C<<2)|0;z=p;A=x;break b}while(0);x=r>>2;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100)if((x|0)==48e3)E=8;else break;else E=7;else E=6;else E=5;else E=4;else E=3;else E=2;else E=1;else E=0;if(k>>>0<2){D=h;while(1){if(a[b+27588+(s*120|0)+(E*12|0)+D>>0]|0)break;F=D+1|0;if((F|0)<2)D=F;else break c}y=4168+(D<<2)|0;z=p;A=x;break b}}while(0);w=k>>>0>2?k:2;if(!t)if((r|0)!=11025)if((r|0)!=12e3)if((r|0)!=16e3)if((r|0)!=22050)if((r|0)!=24e3)if((r|0)!=32e3)if((r|0)!=44100){if((r|0)==48e3){G=8;v=50}}else{G=7;v=50}else{G=6;v=50}else{G=5;v=50}else{G=4;v=50}else{G=3;v=50}else{G=2;v=50}else{G=1;v=50}else{G=0;v=50}e:do if((v|0)==50?(w|0)<(l|0):0){F=w;while(1){if(a[b+27588+(s*120|0)+(G*12|0)+F>>0]|0)break;H=F+1|0;if((H|0)<(l|0))F=H;else break e}y=4168+(F<<2)|0;z=p;A=r;break b}while(0);f:do if(!u){x=r>>1;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100){if((x|0)==48e3){I=8;v=64}}else{I=7;v=64}else{I=6;v=64}else{I=5;v=64}else{I=4;v=64}else{I=3;v=64}else{I=2;v=64}else{I=1;v=64}else{I=0;v=64}g:do if((v|0)==64?(w|0)<(l|0):0){D=w;while(1){if(a[b+27588+(s*120|0)+(I*12|0)+D>>0]|0)break;H=D+1|0;if((H|0)<(l|0))D=H;else break g}y=4168+(D<<2)|0;z=p;A=x;break b}while(0);x=r>>2;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100)if((x|0)==48e3)J=8;else break;else J=7;else J=6;else J=5;else J=4;else J=3;else J=2;else J=1;else J=0;if((w|0)<(l|0)){F=w;while(1){if(a[b+27588+(s*120|0)+(J*12|0)+F>>0]|0)break;C=F+1|0;if((C|0)<(l|0))F=C;else break f}y=4168+(F<<2)|0;z=p;A=x;break b}}while(0);switch(p|0){case 2:{K=(g>>>3&1)+1|0;break}case 1:{K=m?2:1;break}default:K=n}C=K+-1|0;if(!t)if((r|0)!=11025)if((r|0)!=12e3)if((r|0)!=16e3)if((r|0)!=22050)if((r|0)!=24e3)if((r|0)!=32e3)if((r|0)!=44100){if((r|0)==48e3){L=8;v=93}}else{L=7;v=93}else{L=6;v=93}else{L=5;v=93}else{L=4;v=93}else{L=3;v=93}else{L=2;v=93}else{L=1;v=93}else{L=0;v=93}h:do if((v|0)==93?k>>>0<2:0){H=h;while(1){if(a[b+27588+(C*120|0)+(L*12|0)+H>>0]|0)break;M=H+1|0;if((M|0)<2)H=M;else break h}y=4168+(H<<2)|0;z=K;A=r;break b}while(0);i:do if(!u){x=r>>1;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100){if((x|0)==48e3){N=8;v=107}}else{N=7;v=107}else{N=6;v=107}else{N=5;v=107}else{N=4;v=107}else{N=3;v=107}else{N=2;v=107}else{N=1;v=107}else{N=0;v=107}j:do if((v|0)==107?k>>>0<2:0){F=h;while(1){if(a[b+27588+(C*120|0)+(N*12|0)+F>>0]|0)break;M=F+1|0;if((M|0)<2)F=M;else break j}y=4168+(F<<2)|0;z=K;A=x;break b}while(0);x=r>>2;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100)if((x|0)==48e3)O=8;else break;else O=7;else O=6;else O=5;else O=4;else O=3;else O=2;else O=1;else O=0;if(k>>>0<2){H=h;while(1){if(a[b+27588+(C*120|0)+(O*12|0)+H>>0]|0)break;D=H+1|0;if((D|0)<2)H=D;else break i}y=4168+(H<<2)|0;z=K;A=x;break b}}while(0);if(!t)if((r|0)!=11025)if((r|0)!=12e3)if((r|0)!=16e3)if((r|0)!=22050)if((r|0)!=24e3)if((r|0)!=32e3)if((r|0)!=44100){if((r|0)==48e3){P=8;v=133}}else{P=7;v=133}else{P=6;v=133}else{P=5;v=133}else{P=4;v=133}else{P=3;v=133}else{P=2;v=133}else{P=1;v=133}else{P=0;v=133}k:do if((v|0)==133?(w|0)<(l|0):0){D=w;while(1){if(a[b+27588+(C*120|0)+(P*12|0)+D>>0]|0)break;M=D+1|0;if((M|0)<(l|0))D=M;else break k}y=4168+(D<<2)|0;z=K;A=r;break b}while(0);l:do if(!u){x=r>>1;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100){if((x|0)==48e3){Q=8;v=147}}else{Q=7;v=147}else{Q=6;v=147}else{Q=5;v=147}else{Q=4;v=147}else{Q=3;v=147}else{Q=2;v=147}else{Q=1;v=147}else{Q=0;v=147}m:do if((v|0)==147?(w|0)<(l|0):0){H=w;while(1){if(a[b+27588+(C*120|0)+(Q*12|0)+H>>0]|0)break;M=H+1|0;if((M|0)<(l|0))H=M;else break m}y=4168+(H<<2)|0;z=K;A=x;break b}while(0);x=r>>2;if((x|0)!=8e3)if((x|0)!=11025)if((x|0)!=12e3)if((x|0)!=16e3)if((x|0)!=22050)if((x|0)!=24e3)if((x|0)!=32e3)if((x|0)!=44100)if((x|0)==48e3)R=8;else break;else R=7;else R=6;else R=5;else R=4;else R=3;else R=2;else R=1;else R=0;if((w|0)<(l|0)){D=w;while(1){if(a[b+27588+(C*120|0)+(R*12|0)+D>>0]|0)break;F=D+1|0;if((F|0)<(l|0))D=F;else break l}y=4168+(D<<2)|0;z=K;A=x;break b}}while(0);if(!(g&32)){c[f>>2]=284;c[f+4>>2]=o?(j|0?19030:81944):19037;c[f+8>>2]=g&16|0?19046:81944;c[f+12>>2]=q;c[f+16>>2]=q>>1;c[f+20>>2]=q>>2;Lc(0,19053,f)}c[b+27864>>2]=1;S=-1;i=d;return S|0}while(0);f=c[y>>2]|0;y=b+27364|0;q=b+27384|0;j=b+27380|0;if(((A|0)==(c[q>>2]|0)?(z|0)==(c[j>>2]|0):0)?(f|0)==(c[y>>2]|0):0){S=0;i=d;return S|0}c[q>>2]=A;c[j>>2]=z;c[y>>2]=f;do if(!(f&15)){if(f&64|0){c[b+27368>>2]=2;c[b+27372>>2]=f;T=2;break}do if(!(f&16384))if((f|0)==512|(f&256|0)!=0){U=4;v=180}else{y=b+27368|0;if((f|0)==1024){c[y>>2]=8;c[b+27372>>2]=1024;V=0;break}c[y>>2]=0;if(!(g&32)){c[e>>2]=308;c[e+4>>2]=f;Lc(0,19170,e)}c[b+27864>>2]=1;S=-1;i=d;return S|0}else{U=3;v=180}while(0);if((v|0)==180){c[b+27368>>2]=U;c[b+27372>>2]=f;if(f&16384|0){T=3;break}V=(f&256|0)!=0}if((f|0)==512|V)T=4;else T=(f|0)==1024?8:0}else{c[b+27368>>2]=1;c[b+27372>>2]=f;T=1}while(0);c[b+27376>>2]=T;S=1;i=d;return S|0}function ab(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+16|0;d=b;if((c[a+19232>>2]|0)<0){if(!(c[a+27564>>2]&32)){c[d>>2]=501;Lc(0,19335,d)}c[a+27864>>2]=37;e=-1;i=b;return e|0}d=a+19248|0;c[d>>2]=c[d>>2]|4;d=c[4960+(c[a+19188>>2]<<2)>>2]|0;f=$a(a)|0;if((f|0)<0){e=-1;i=b;return e|0}if((f|0)==1)c[a+4>>2]=1;f=c[a+27384>>2]|0;do if((f|0)!=(d|0)){if((f|0)==(d>>1|0)){c[a+19160>>2]=1;g=1;h=15;break}j=a+19160|0;if((f|0)==(d>>2|0)){c[j>>2]=2;g=2;h=15;break}else{c[j>>2]=3;break}}else{c[a+19160>>2]=0;g=0;h=15}while(0);if((h|0)==15){c[a+19148>>2]=32>>>g;if(!(c[a+27364>>2]&16384)){h=c[a+27368>>2]|0;d=c[a+27376>>2]|0;k=(h|0)>(d|0)?h:d}else k=4;d=_(k,c[a+19172>>2]>>g)|0;c[a+27392>>2]=_(d,c[a+27380>>2]|0)|0}d=c[a+27564>>2]&7;do if(!d){g=a+19140|0;if((c[a+27380>>2]|0)==1){c[g>>2]=3;break}else{c[g>>2]=-1;break}}else c[a+19140>>2]=d+-1;while(0);if(Cb(a)|0){e=-1;i=b;return e|0}if(nb(a)|0){e=-1;i=b;return e|0}ub(a);e=0;i=b;return e|0}function bb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=a+27868|0;d=c[b>>2]|0;e=a+19164|0;f=a+19232|0;if((c[e>>2]|0)>1?(c[f>>2]|0)>-1:0){c[e>>2]=0;if((ab(a)|0)<0){g=-1;return g|0}else h=1}else h=d;d=a+27400|0;i=a+27396|0;j=a+19240|0;k=a+27404|0;l=a+27412|0;m=a+27580|0;n=a+19176|0;o=a+27352|0;p=a+19168|0;q=a+27296|0;r=a+19352|0;s=a+19272|0;t=a+27300|0;u=a+19348|0;v=a+19268|0;w=h;while(1){if((c[d>>2]|0?(h=c[f>>2]|0,(h|0)<(c[k>>2]|0)):0)?(h|0)>=(c[l>>2]|0):0){La[c[n>>2]&127](a)|0;c[o>>2]=0;c[i>>2]=0;c[d>>2]=0}c[i>>2]=0;x=kb(a)|0;if((x|0)==-10){g=-10;y=29;break}if((x|0)<1){y=11;break}if((c[e>>2]|0)>1){c[e>>2]=0;if((ab(a)|0)<0){g=-1;y=29;break}else z=1}else z=w;h=(c[j>>2]|0)+1|0;c[j>>2]=h;A=c[f>>2]|0;if((A|0)<(c[k>>2]|0)){if(c[d>>2]|0?(A|0)>=(c[l>>2]|0):0){w=z;continue}}else{A=c[m>>2]|0;if(!A){y=24;break}if(!((h|0)%(A|0)|0)){y=24;break}}if((c[p>>2]|0)!=3){w=z;continue}A=(c[q>>2]|0)+(c[r>>2]|0)+-512|0;c[s>>2]=A;Wc(A|0,(c[t>>2]|0)+(c[u>>2]|0)+-512|0,512)|0;c[v>>2]=0;w=z}if((y|0)==11){if(x|0){x=c[a+27456>>2]|0;if((x|0)<=-1){g=-1;return g|0}if((c[a+27460>>2]|0)!=(x|0)){g=-1;return g|0}}c[a+19328>>2]=(c[f>>2]|0)+1;g=-12;return g|0}else if((y|0)==24){if(((z|0?(c[b>>2]=0,c[a>>2]|0):0)?(sb(a),tb(a,c[f>>2]|0),c[a>>2]=0,(c[f>>2]|0)<(c[k>>2]|0)):0)?(k=bb(a)|0,(k|0)<0):0){g=k;return g|0}g=0;return g|0}else if((y|0)==29)return g|0;return 0}function cb(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0;h=i;i=i+64|0;j=h+48|0;k=h+32|0;l=h+16|0;m=h+8|0;n=h;o=(g|0)!=0;if(o)c[g>>2]=0;if(!a){p=10;i=h;return p|0}do if(d){if(!b){c[a+27864>>2]=31;q=0;r=-1;break}if(!(Eb(a+27516|0,b,d)|0)){s=a+27864|0;if((c[s>>2]|0)!=18){t=12;break}c[s>>2]=0;t=12;break}else{if(c[a+27564>>2]&32|0){q=0;r=-1;break}c[n>>2]=767;c[n+4>>2]=-1;Lc(0,27263,n);q=0;r=-1;break}}else t=12;while(0);a:do if((t|0)==12){n=(e|0)==0?0:f;d=a+27396|0;b=a+27352|0;s=a+4|0;u=a+27356|0;v=a+27392|0;w=a+27344|0;x=a+27400|0;y=a+27348|0;z=a+19160|0;A=a+19172|0;B=a+27376|0;C=a+27380|0;D=a+19176|0;E=a+27876|0;F=a+27564|0;G=a+27560|0;H=a+19232|0;I=a+27344|0;J=a+19248|0;K=a+27416|0;L=a+27408|0;M=a+27424|0;N=a+27368|0;O=a+27420|0;P=a+27404|0;Q=a+27388|0;R=e;S=0;b:while(1){while(1){do if(c[d>>2]|0){if(c[s>>2]|0)break b;if(((c[u>>2]|0)-(c[b>>2]|0)|0)>>>0<(c[v>>2]|0)>>>0){q=S;r=14;break a}T=c[z>>2]|0;if(!T)U=c[A>>2]|0;else{c[m>>2]=782;c[m+4>>2]=T;Lc(0,23059,m);U=0}T=_(c[B>>2]|0,U)|0;V=_(T,c[C>>2]|0)|0;T=La[c[D>>2]&127](a)|0;c[E>>2]=(c[E>>2]|0)+T;T=c[b>>2]|0;if(V>>>0>T>>>0){if((c[F>>2]&32|0)==0?(c[G>>2]|0)>1:0){c[l>>2]=c[H>>2];c[l+4>>2]=V-T;c[l+8>>2]=T;Lc(0,19484,l);W=c[b>>2]|0}else W=T;Tc((c[I>>2]|0)+W|0,0,V-W|0)|0;c[b>>2]=V;X=V}else X=T;c[x>>2]=0;c[d>>2]=0;c[y>>2]=c[w>>2];if(c[J>>2]&1|0){T=c[K>>2]|0;if((T|0)>0?(c[H>>2]|0)>=(T|0):0)break;T=c[L>>2]|0;do if((T|0)>-1?(V=c[H>>2]|0,(V|0)>=(T|0)):0){Y=(V|0)==(T|0);if(Y){Z=_(c[N>>2]|0,c[M>>2]|0)|0;$=_(Z,c[C>>2]|0)|0}else $=0;if((X|0)>($|0)){c[b>>2]=$;aa=$}else aa=X;if(!(c[F>>2]&32)){if((c[G>>2]|0)<=2)break;if(Y)ba=c[M>>2]|0;else ba=0;c[k>>2]=V;c[k+4>>2]=ba;c[k+8>>2]=aa;Lc(0,19546,k)}}while(0);T=c[O>>2]|0;if(T|0?(c[H>>2]|0)==(c[P>>2]|0):0){V=_(c[N>>2]|0,T)|0;T=_(V,c[C>>2]|0)|0;V=c[b>>2]|0;do if((V|0)>(T|0)){Y=V-T|0;c[b>>2]=Y;Z=c[I>>2]|0;ca=Z+T|0;if(!(c[Q>>2]|0)){Xc(Z|0,ca|0,Y|0)|0;break}else{c[y>>2]=ca;break}}else c[b>>2]=0;while(0);do if(!(c[F>>2]&32)){if((c[G>>2]|0)<=2)break;T=c[O>>2]|0;V=c[b>>2]|0;c[j>>2]=c[H>>2];c[j+4>>2]=T;c[j+8>>2]=V;Lc(0,19628,j)}while(0);c[O>>2]=0}}}while(0);da=c[b>>2]|0;if(da|0)break;V=bb(a)|0;if((V|0)<0){q=S;r=V;break a}}V=n-S|0;T=da>>>0>V>>>0?V:da;Wc(R|0,c[y>>2]|0,T|0)|0;c[b>>2]=(c[b>>2]|0)-T;V=T+S|0;c[y>>2]=(c[y>>2]|0)+T;if(n>>>0>V>>>0){R=R+T|0;S=V}else{q=V;r=0;break a}}c[s>>2]=0;q=S;r=-11}while(0);if(!o){p=r;i=h;return p|0}c[g>>2]=q;p=r;i=h;return p|0}function db(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=i;i=i+16|0;e=d;f=a+12|0;g=c[f>>2]|0;if((g|0)==(b|0)){h=0;i=d;return h|0}if((b|0)!=0&g>>>0>b>>>0?(g=a+16|0,j=c[g>>2]|0,j>>>0>b>>>0):0){k=a+4|0;l=a+8|0;m=j;while(1){if(m>>>0<2)n=m;else{j=c[k>>2]<<1;c[k>>2]=j;o=m>>>1;c[g>>2]=o;if(!o){p=0;q=j}else{j=c[a>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[j+(o<<1<<2)>>2];o=o+1|0;r=c[g>>2]|0}while(o>>>0>>0);p=r;q=c[k>>2]|0}c[l>>2]=_(q,p)|0;n=p}if(n>>>0>b>>>0)m=n;else break}}n=c[a>>2]|0;m=b<<2;if(!n)s=Mc(m)|0;else s=Oc(n,m)|0;if(!((b|0)==0|(s|0)!=0)){c[e>>2]=80;Lc(0,19716,e);h=-1;i=d;return h|0}c[a>>2]=s;c[f>>2]=b;f=a+16|0;s=c[f>>2]|0;if(s>>>0>b>>>0){c[f>>2]=b;t=b}else t=s;c[a+8>>2]=_(t,c[a+4>>2]|0)|0;h=0;i=d;return h|0}function eb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0,B=0.0,C=0.0,D=0,E=0.0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0;f=a+64|0;h=+g[f>>2];i=a+68|0;j=+g[i>>2]+h;k=a+60|0;l=+g[k>>2];m=h+l;g[f>>2]=m;f=a+56|0;h=+g[f>>2];n=h+l;o=a+52|0;l=+g[o>>2];p=l+h;g[f>>2]=p;f=a+48|0;h=+g[f>>2];q=h+l;r=a+44|0;l=+g[r>>2];s=l+h;g[f>>2]=s;f=a+40|0;h=+g[f>>2];t=h+l;u=a+36|0;l=+g[u>>2];v=l+h;g[f>>2]=v;f=a+32|0;h=+g[f>>2];w=h+l;x=a+28|0;l=+g[x>>2];y=l+h;g[f>>2]=y;f=a+24|0;h=+g[f>>2];z=h+l;A=a+20|0;l=+g[A>>2];B=l+h;g[f>>2]=B;f=a+16|0;h=+g[f>>2];C=h+l;D=a+12|0;l=+g[D>>2];E=l+h;g[f>>2]=E;f=a+8|0;h=+g[f>>2];F=h+l;G=a+4|0;l=+g[G>>2];H=l+h;g[f>>2]=H;h=+g[a>>2];I=h+l;g[G>>2]=I;l=j+n;g[i>>2]=l;j=q+n;g[k>>2]=j;n=t+q;g[o>>2]=n;q=w+t;g[r>>2]=q;t=z+w;g[u>>2]=t;w=C+z;g[x>>2]=w;z=F+C;g[A>>2]=z;C=I+F;g[D>>2]=C;F=+g[15966];J=(m+y-E)*F;K=s*F;s=h-K-K;L=s-J;M=s+J*2.0;J=h+K;K=+g[15965];h=(p+v-H)*K;s=L-h;N=h+L;L=+g[15967];h=L*(E+y);O=+g[15968];P=O*(y-m);y=+g[15969];Q=y*(E+m);m=J-h-Q;E=h+J+P;h=J-P+Q;Q=+g[15970];P=Q*(H+v);J=+g[15971];R=J*(v-p);v=B*K;B=R+P+v;S=B+E;T=E-B;B=+g[15972];E=B*(H+p);p=P-v+E;P=p+h;H=h-p;p=R-v-E;E=p+m;v=m-p;p=n*F;n=(l+t-z)*F;F=I+p;m=I-p-p;p=m-n;I=(z+t)*L;L=(t-l)*O;O=(n*2.0+m)*+g[20455];m=(z+l)*y;y=F-I-m;l=F+L+I;I=m-L+F;F=(q+C)*Q;Q=(q-j)*J;J=w*K;w=Q+F+J;L=(w+l)*+g[20451];m=(l-w)*+g[20459];w=(j+C)*B;B=w-J+F;F=(B+I)*+g[20454];l=(q-C+j)*K;K=(I-B)*+g[20456];B=-J-w+Q;Q=+g[20452]*(p-l);w=+g[20458]*(l+p);p=+g[20453]*(B+y);l=+g[20457]*(y-B);B=L+S;g[c+36>>2]=+g[d+108>>2]*B;g[c+32>>2]=+g[d+104>>2]*B;B=S-L;g[e+1024>>2]=+g[d+32>>2]*B+ +g[b+32>>2];g[e+1152>>2]=+g[d+36>>2]*B+ +g[b+36>>2];B=Q+s;g[c+40>>2]=+g[d+112>>2]*B;g[c+28>>2]=+g[d+100>>2]*B;B=s-Q;g[e+896>>2]=+g[d+28>>2]*B+ +g[b+28>>2];g[e+1280>>2]=+g[d+40>>2]*B+ +g[b+40>>2];B=p+E;g[c+44>>2]=+g[d+116>>2]*B;g[c+24>>2]=+g[d+96>>2]*B;B=E-p;g[e+768>>2]=+g[d+24>>2]*B+ +g[b+24>>2];g[e+1408>>2]=+g[d+44>>2]*B+ +g[b+44>>2];B=F+P;g[c+48>>2]=+g[d+120>>2]*B;g[c+20>>2]=+g[d+92>>2]*B;B=P-F;g[e+640>>2]=+g[d+20>>2]*B+ +g[b+20>>2];g[e+1536>>2]=+g[d+48>>2]*B+ +g[b+48>>2];B=O+M;g[c+52>>2]=+g[d+124>>2]*B;g[c+16>>2]=+g[d+88>>2]*B;B=M-O;g[e+512>>2]=+g[d+16>>2]*B+ +g[b+16>>2];g[e+1664>>2]=+g[d+52>>2]*B+ +g[b+52>>2];B=K+H;g[c+56>>2]=+g[d+128>>2]*B;g[c+12>>2]=+g[d+84>>2]*B;B=H-K;g[e+384>>2]=+g[d+12>>2]*B+ +g[b+12>>2];g[e+1792>>2]=+g[d+56>>2]*B+ +g[b+56>>2];B=l+v;g[c+60>>2]=+g[d+132>>2]*B;g[c+8>>2]=+g[d+80>>2]*B;B=v-l;g[e+256>>2]=+g[d+8>>2]*B+ +g[b+8>>2];g[e+1920>>2]=+g[d+60>>2]*B+ +g[b+60>>2];B=w+N;g[c+64>>2]=+g[d+136>>2]*B;g[c+4>>2]=+g[d+76>>2]*B;B=N-w;g[e+128>>2]=+g[d+4>>2]*B+ +g[b+4>>2];g[e+2048>>2]=+g[d+64>>2]*B+ +g[b+64>>2];B=m+T;g[c+68>>2]=+g[d+140>>2]*B;g[c>>2]=+g[d+72>>2]*B;B=T-m;g[e>>2]=+g[d>>2]*B+ +g[b>>2];g[e+2176>>2]=+g[d+68>>2]*B+ +g[b+68>>2];return}function fb(b){b=b|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0.0,Ba=0.0,Ca=0,Da=0,Ea=0,Fa=0.0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0,cb=0,db=0,fb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0;f=i;i=i+736|0;h=f+40|0;j=f+32|0;k=f+24|0;l=f+16|0;m=f+8|0;n=f;o=f+424|0;p=f+48|0;q=c[b+19132>>2]|0;r=c[b+19140>>2]|0;s=c[b+19188>>2]|0;t=(q|0)==1;u=t?1:(r|0)==-1?2:1;v=t?0:r;if((c[b+19200>>2]|0)==1){r=c[b+19204>>2]|0;w=r&1;x=r>>>1&1}else{w=0;x=0}r=b+19152|0;y=c[r>>2]|0;z=y|0?1:2;A=(v|0)==3;B=A?4:0;C=4216+(y*20|0)|0;D=c[4216+(y*20|0)+4>>2]|0;E=b+19272|0;F=c[E>>2]|0;G=b+19268|0;H=c[G>>2]|0;I=H+D|0;J=24-D|0;K=((((d[F>>0]|0)<<8|(d[F+1>>0]|0))<<8|(d[F+2>>0]|0))<>>J;H=F+(I>>3)|0;c[E>>2]=H;F=I&7;c[G>>2]=F;c[p>>2]=K;I=b+19356|0;L=c[I>>2]|0;if(K>>>0>L>>>0){if(((c[b+27400>>2]|0)==0?(c[b+27564>>2]&32|0)==0:0)?(c[b+27560>>2]|0)>1:0){M=c[b+19232>>2]|0;c[n>>2]=K-L;c[n+4>>2]=M;Lc(0,19788,n);N=c[G>>2]|0;O=c[E>>2]|0;P=c[r>>2]|0;Q=c[I>>2]|0}else{N=F;O=H;P=y;Q=L}n=N-D|0;N=O+(n>>3)|0;c[E>>2]=N;c[G>>2]=n&7;if(!P){a[N>>0]=Q>>>1;a[(c[E>>2]|0)+1>>0]=c[I>>2]<<7}else a[N>>0]=Q;Q=b+19352|0;Tc((c[E>>2]|0)+2|0,0,(c[Q>>2]|0)+-2|0)|0;N=c[E>>2]|0;P=c[G>>2]|0;n=P+D|0;D=((((d[N>>0]|0)<<8|(d[N+1>>0]|0))<<8|(d[N+2>>0]|0))<>>J;J=N+(n>>3)|0;c[E>>2]=J;N=n&7;c[G>>2]=N;c[p>>2]=D;R=Q;S=c[I>>2]|0;T=c[r>>2]|0;U=J;V=N}else{R=b+19352|0;S=L;T=y;U=H;V=F}F=(c[b+19220>>2]|0)+S-(c[R>>2]|0)+(c[b+19180>>2]|0?-2:0)|0;R=(T|0)==0;T=R?511:255;c[I>>2]=F>>>0>T>>>0?T:F;F=(d[U>>0]|0)<>2]=F;I=c[(t?4216+(y*20|0)+8|0:4216+(y*20|0)+12|0)>>2]|0;t=((d[U+1>>0]|0)<>>8|F)<>>8;c[T>>2]=t;F=I+V|0;V=U+(F>>3)|0;c[E>>2]=V;U=F&7;c[G>>2]=U;c[p+4>>2]=t;t=(q|0)>0;if(t&R){R=V;F=U;I=0;while(1){c[p+8+(I*184|0)>>2]=-1;S=(d[R>>0]|0)<>2]=S;H=((d[R+1>>0]|0)<>>8|S)>>>4;c[T>>2]=H;S=F+4|0;L=R+(S>>>3)|0;c[E>>2]=L;N=S&7;c[G>>2]=N;c[p+8+(I*184|0)+92>>2]=H;I=I+1|0;if((I|0)==(q|0)){W=L;X=N;break}else{R=L;F=N}}}else{W=V;X=U}a:do if((y|1|0)==1){U=b+27564|0;V=b+11684|0;F=(x|0)==0;R=4216+(y*20|0)+16|0;I=b+19280|0;N=b+19156|0;L=7004+(s*110|0)+44|0;H=W;S=X;J=0;b:while(1){if(t){Q=c[R>>2]|0;D=24-Q|0;n=H;P=S;O=0;while(1){M=P+12|0;K=(((d[n>>0]|0)<<8|(d[n+1>>0]|0))<<8|(d[n+2>>0]|0))<

>>12&4095;Y=n+(M>>3)|0;c[E>>2]=Y;Z=M&7;c[G>>2]=Z;c[p+8+(O*184|0)+(J*92|0)+4>>2]=K;K=(((d[Y>>0]|0)<<8|(d[Y+1>>0]|0))<<8|(d[Y+2>>0]|0))<>>15&511;M=Y+((Z+9|0)>>>3)|0;c[E>>2]=M;Z=P+5&7;c[G>>2]=Z;Y=p+8+(O*184|0)+(J*92|0)+8|0;c[Y>>2]=K;if(K>>>0>288){if(!(c[U>>2]&32)){c[m>>2]=460;Lc(0,19843,m);_=c[E>>2]|0;$=c[G>>2]|0}else{_=M;$=Z}c[Y>>2]=288;aa=_;ba=$}else{aa=M;ba=Z}Z=(d[aa>>0]|0)<>2]=Z;M=((d[aa+1>>0]|0)<>>8;c[T>>2]=M;Z=ba+8|0;Y=aa+(Z>>3)|0;c[E>>2]=Y;K=Z&7;c[G>>2]=K;ca=V+(0-M<<2)+(B<<2)|0;M=F?ca:ca+8|0;c[p+8+(O*184|0)+(J*92|0)+88>>2]=M;ca=((((d[Y>>0]|0)<<8|(d[Y+1>>0]|0))<<8|(d[Y+2>>0]|0))<>>D;da=Y+(K+Q>>3)|0;c[E>>2]=da;K=Z+Q|0;Z=K&7;c[G>>2]=Z;c[p+8+(O*184|0)+(J*92|0)+12>>2]=ca;ca=(d[da>>0]|0)<>0]=ca;Y=da+((Z+1|0)>>>3)|0;c[E>>2]=Y;da=K+1&7;c[G>>2]=da;ea=(d[Y>>0]|0)<>2]=ea;fa=(d[Y+1>>0]|0)<>>8|ea;do if(ca<<24>>24<0){ea=fa>>>6;c[T>>2]=ea;ga=Y+((da+2|0)>>>3)|0;c[E>>2]=ga;ha=K+3&7;c[G>>2]=ha;ia=p+8+(O*184|0)+(J*92|0)+16|0;c[ia>>2]=ea;ea=(d[ga>>0]|0)<>0]=ea;ja=ga+((ha+1|0)>>>3)|0;c[E>>2]=ja;ha=K+4&7;c[G>>2]=ha;ga=p+8+(O*184|0)+(J*92|0)+20|0;c[ga>>2]=ea>>>7&1;ea=(d[ja>>0]|0)<>2]=ea;ka=((d[ja+1>>0]|0)<>>8|ea)>>>3;c[T>>2]=ka;ea=ja+((ha+5|0)>>>3)|0;c[E>>2]=ea;c[G>>2]=da;c[p+8+(O*184|0)+(J*92|0)+24>>2]=ka;ka=(d[ea>>0]|0)<>2]=ka;ja=((d[ea+1>>0]|0)<>>8|ka)>>>3;c[T>>2]=ja;ka=ea+((da+5|0)>>>3)|0;c[E>>2]=ka;ea=K+6&7;c[G>>2]=ea;c[p+8+(O*184|0)+(J*92|0)+28>>2]=ja;c[p+8+(O*184|0)+(J*92|0)+32>>2]=0;ja=(d[ka>>0]|0)<>2]=ja;la=((d[ka+1>>0]|0)<>>8|ja)>>>5;c[T>>2]=la;ja=ka+((ea+3|0)>>>3)|0;c[E>>2]=ja;c[G>>2]=da;c[p+8+(O*184|0)+(J*92|0)+76>>2]=M+(la<<3<<2);la=(d[ja>>0]|0)<>2]=la;ea=((d[ja+1>>0]|0)<>>8|la)>>>5;c[T>>2]=ea;la=ja+((da+3|0)>>>3)|0;c[E>>2]=la;c[G>>2]=ha;c[p+8+(O*184|0)+(J*92|0)+80>>2]=M+(ea<<3<<2);ea=(d[la>>0]|0)<>2]=ea;ja=((d[la+1>>0]|0)<>>8|ea)>>>5;c[T>>2]=ja;ea=la+((ha+3|0)>>>3)|0;c[E>>2]=ea;ha=K+7&7;c[G>>2]=ha;c[p+8+(O*184|0)+(J*92|0)+84>>2]=M+(ja<<3<<2);ja=c[ia>>2]|0;if(!ja)break b;ia=c[r>>2]|0;la=(ja|0)==2;ja=(c[N>>2]|0)==0;if(la|(ia|0)==0){if(ja){c[p+8+(O*184|0)+(J*92|0)+56>>2]=18;c[p+8+(O*184|0)+(J*92|0)+60>>2]=288;ma=ia;na=ea;oa=ha;break}}else if(ja){c[p+8+(O*184|0)+(J*92|0)+56>>2]=27;c[p+8+(O*184|0)+(J*92|0)+60>>2]=288;ma=ia;na=ea;oa=ha;break}if(la?(c[ga>>2]|0)==0:0)pa=6;else pa=8;c[p+8+(O*184|0)+(J*92|0)+56>>2]=(e[7004+(s*110|0)+(pa<<1)>>1]|0)>>>1;c[p+8+(O*184|0)+(J*92|0)+60>>2]=(e[L>>1]|0)>>>1;ma=ia;na=ea;oa=ha}else{ha=fa>>>3;c[T>>2]=ha;ea=Y+((da+5|0)>>>3)|0;c[E>>2]=ea;ia=K+6&7;c[G>>2]=ia;c[p+8+(O*184|0)+(J*92|0)+24>>2]=ha;ha=(d[ea>>0]|0)<>2]=ha;ga=((d[ea+1>>0]|0)<>>8|ha)>>>3;c[T>>2]=ga;ha=ea+((ia+5|0)>>>3)|0;c[E>>2]=ha;ia=K+3&7;c[G>>2]=ia;c[p+8+(O*184|0)+(J*92|0)+28>>2]=ga;ga=(d[ha>>0]|0)<>2]=ga;ea=((d[ha+1>>0]|0)<>>8|ga)>>>3;c[T>>2]=ea;ga=ha+((ia+5|0)>>>3)|0;c[E>>2]=ga;c[G>>2]=Z;c[p+8+(O*184|0)+(J*92|0)+32>>2]=ea;ea=(d[ga>>0]|0)<>2]=ea;ia=((d[ga+1>>0]|0)<>>8|ea)>>>4;c[T>>2]=ia;ea=ga+((Z+4|0)>>>3)|0;c[E>>2]=ea;ga=K+4&7;c[G>>2]=ga;ha=(d[ea>>0]|0)<>2]=ha;la=((d[ea+1>>0]|0)<>>8|ha)>>>5;c[T>>2]=la;ha=ea+((ga+3|0)>>>3)|0;c[E>>2]=ha;ga=K+7&7;c[G>>2]=ga;ea=ia+1|0;c[p+8+(O*184|0)+(J*92|0)+56>>2]=(e[7004+(s*110|0)+(ea<<1)>>1]|0)>>>1;ia=la+ea|0;if(ia>>>0>21)qa=288;else qa=(e[7004+(s*110|0)+(ia+1<<1)>>1]|0)>>>1;c[p+8+(O*184|0)+(J*92|0)+60>>2]=qa;c[p+8+(O*184|0)+(J*92|0)+16>>2]=0;c[p+8+(O*184|0)+(J*92|0)+20>>2]=0;ma=c[r>>2]|0;na=ha;oa=ga}while(0);if(!ma){K=(d[na>>0]|0)<>0]=K;Z=oa+1|0;da=na+(Z>>>3)|0;c[E>>2]=da;Y=Z&7;c[G>>2]=Y;c[p+8+(O*184|0)+(J*92|0)+64>>2]=K>>>7&1;ra=da;sa=Y}else{ra=na;sa=oa}Y=(d[ra>>0]|0)<>0]=Y;da=sa+1|0;K=ra+(da>>3)|0;c[E>>2]=K;Z=da&7;c[G>>2]=Z;c[p+8+(O*184|0)+(J*92|0)+68>>2]=Y>>>7&1;Y=(d[K>>0]|0)<>0]=Y;da=K+((Z+1|0)>>>3)|0;c[E>>2]=da;Z=sa+2&7;c[G>>2]=Z;c[p+8+(O*184|0)+(J*92|0)+72>>2]=Y>>>7&1;O=O+1|0;if((O|0)>=(q|0)){ta=da;ua=Z;break}else{n=da;P=Z}}}else{ta=H;ua=S}J=J+1|0;if((J|0)>=(c[C>>2]|0))break a;else{H=ta;S=ua}}S=c[U>>2]|0;if(!(S&32)){c[l>>2]=485;Lc(0,19914,l);va=c[U>>2]|0}else va=S;if(va&32|0){wa=0;i=f;return wa|0}c[k>>2]=1955;Lc(0,20017,k);wa=0;i=f;return wa|0}while(0);k=c[p>>2]|0;va=0-k|0;l=(c[b+27296>>2]|0)+(c[b+19352>>2]|0)+va|0;c[E>>2]=l;if(k|0)Wc(l|0,(c[b+27300>>2]|0)+(c[b+19348>>2]|0)+va|0,k|0)|0;c[G>>2]=0;G=b+28076|0;k=b+28080|0;va=(q|0)==2;q=o+156|0;l=(x|0)==0;E=(w|0)==0;ua=A|(x|w|0)!=0;A=7004+(s*110|0)+92|0;ta=7004+(s*110|0)+108|0;C=o+236|0;sa=7004+(s*110|0)+67|0;ra=(v|0)==-1;oa=b+19120|0;na=b+19124|0;ma=0;qa=0;c:while(1){T=c[G>>2]|0;pa=c[k>>2]|0;B=p+8+(qa*92|0)|0;if(!(c[r>>2]|0))xa=hb(b,o,B)|0;else xa=gb(b,o,B,0)|0;if(ib(b,T,o,B,s,xa)|0){ya=52;break}d:do if(va){B=p+192+(qa*92|0)|0;if(!(c[r>>2]|0))za=hb(b,q,B)|0;else za=gb(b,q,B,w)|0;aa=T+2304|0;if(ib(b,aa,q,B,s,za)|0){ya=60;break c}if(!l?(B=c[p+8+(qa*92|0)+52>>2]|0,ba=c[p+192+(qa*92|0)+52>>2]|0,$=ba>>>0>B>>>0?ba:B,B=$*18|0,($|0)>0):0){$=0;do{ba=T+($<<2)|0;Aa=+g[ba>>2];_=T+2304+($<<2)|0;Ba=+g[_>>2];g[ba>>2]=Ba+Aa;g[_>>2]=Aa-Ba;$=$+1|0}while(($|0)<(B|0))}e:do if(!E){B=c[r>>2]|0;$=(c[p+192+(qa*92|0)+12>>2]&B)+B|0;B=c[4528+($<<4)+(x<<3)>>2]|0;_=c[4528+($<<4)+(x<<3)+4>>2]|0;if((c[p+192+(qa*92|0)+16>>2]|0)!=2){$=c[p+192+(qa*92|0)+48>>2]|0;if(($|0)>21)break;ba=e[7004+(s*110|0)+($<<1)>>1]|0;if(($|0)<21){m=T+2304|0;t=ba;X=$;while(1){$=a[7004+(s*110|0)+46+X>>0]|0;W=$&255;y=c[o+156+(X<<2)>>2]|0;do if((y|0)==7)Ca=W+t|0;else{Ba=+g[B+(y<<2)>>2];Aa=+g[_+(y<<2)>>2];if(!($<<24>>24)){Ca=t;break}else{Da=t;Ea=W}while(1){S=T+(Da<<2)|0;Fa=+g[S>>2];g[S>>2]=Fa*Ba;g[m+(Da<<2)>>2]=Fa*Aa;S=Da+1|0;if((Ea|0)>1){Da=S;Ea=Ea+-1|0}else{Ca=S;break}}}while(0);X=X+1|0;if((X|0)==21){Ga=Ca;break}else t=Ca}}else Ga=ba;t=c[C>>2]|0;if((t|0)==7)break;Aa=+g[B+(t<<2)>>2];Ba=+g[_+(t<<2)>>2];t=T+2304|0;X=Ga;m=d[sa>>0]|0;while(1){W=T+(X<<2)|0;Fa=+g[W>>2];g[W>>2]=Fa*Aa;g[t+(X<<2)>>2]=Fa*Ba;if((m|0)>1){X=X+1|0;m=m+-1|0}else break e}}m=c[p+192+(qa*92|0)+20>>2]|0;X=T+2304|0;t=33-m|0;ba=(m|0)!=0&1;W=0;do{$=c[p+192+(qa*92|0)+36+(W<<2)>>2]|0;ba=($|0)>3?0:ba;if(($|0)<12){y=W-m|0;S=$;do{$=c[o+156+(y+(S*3|0)<<2)>>2]|0;do if(($|0)!=7){H=a[7004+(s*110|0)+96+S>>0]|0;Ba=+g[B+($<<2)>>2];Aa=+g[_+($<<2)>>2];if(!(H<<24>>24))break;J=(e[7004+(s*110|0)+68+(S<<1)>>1]|0)+W|0;I=H&255;while(1){H=T+(J<<2)|0;Fa=+g[H>>2];g[H>>2]=Fa*Ba;g[X+(J<<2)>>2]=Fa*Aa;if((I|0)>1){J=J+3|0;I=I+-1|0}else break}}while(0);S=S+1|0}while((S|0)!=12)}S=c[o+156+(t+W<<2)>>2]|0;if((S|0)!=7){Aa=+g[B+(S<<2)>>2];Ba=+g[_+(S<<2)>>2];S=(e[A>>1]|0)+W|0;y=d[ta>>0]|0;while(1){$=T+(S<<2)|0;Fa=+g[$>>2];g[$>>2]=Fa*Aa;g[X+(S<<2)>>2]=Fa*Ba;if((y|0)>1){S=S+3|0;y=y+-1|0}else break}}W=W+1|0}while((W|0)!=3);if(ba|0?(W=c[p+192+(qa*92|0)+48>>2]|0,(W|0)<8):0){t=e[7004+(s*110|0)+(W<<1)>>1]|0;m=W;while(1){W=a[7004+(s*110|0)+46+m>>0]|0;y=W&255;S=c[o+156+(m<<2)>>2]|0;do if((S|0)==7)Ha=y+t|0;else{Ba=+g[B+(S<<2)>>2];Aa=+g[_+(S<<2)>>2];if(!(W<<24>>24)){Ha=t;break}else{Ja=t;Ka=y}while(1){$=T+(Ja<<2)|0;Fa=+g[$>>2];g[$>>2]=Fa*Ba;g[X+(Ja<<2)>>2]=Fa*Aa;$=Ja+1|0;if((Ka|0)>1){Ja=$;Ka=Ka+-1|0}else{Ha=$;break}}}while(0);m=m+1|0;if((m|0)==8)break;else t=Ha}}}while(0);do if(ua){t=p+192+(qa*92|0)+52|0;m=c[t>>2]|0;X=p+8+(qa*92|0)+52|0;_=c[X>>2]|0;if(m>>>0>_>>>0){c[X>>2]=m;break}else{c[t>>2]=_;break}}while(0);switch(v|0){case 3:{_=c[p+192+(qa*92|0)+52>>2]|0;if((_|0)<=0){La=0;break d}t=_*18|0;_=0;m=T;X=aa;while(1){g[m>>2]=+g[X>>2]+ +g[m>>2];_=_+1|0;if((_|0)>=(t|0)){La=0;break}else{m=m+4|0;X=X+4|0}}break}case 1:{X=c[p+192+(qa*92|0)+52>>2]|0;if((X|0)<=0){La=0;break d}m=X*18|0;X=0;t=T;_=aa;while(1){c[t>>2]=c[_>>2];X=X+1|0;if((X|0)>=(m|0)){La=0;break}else{t=t+4|0;_=_+4|0}}break}default:{La=0;break d}}}else La=0;while(0);do{U=p+8+(La*184|0)+(qa*92|0)+16|0;if((c[U>>2]|0)==2){if(c[p+8+(La*184|0)+(qa*92|0)+20>>2]|0){Ma=1;ya=116}}else{_=(c[p+8+(La*184|0)+(qa*92|0)+52>>2]|0)+-1|0;if(_|0){Ma=_;ya=116}}if((ya|0)==116){ya=0;Aa=+g[15805];Ba=+g[15813];Fa=+g[15806];Oa=+g[15814];Pa=+g[15807];Qa=+g[15815];Ra=+g[15808];Sa=+g[15816];Ta=+g[15809];Ua=+g[15817];Va=+g[15810];Wa=+g[15818];Xa=+g[15811];Ya=+g[15819];Za=+g[15812];_a=+g[15820];_=Ma;t=T+(La*2304|0)+72|0;while(1){m=t+-4|0;$a=+g[m>>2];ab=+g[t>>2];g[m>>2]=Aa*$a-Ba*ab;m=t+4|0;g[t>>2]=Ba*$a+Aa*ab;X=t+-8|0;ab=+g[X>>2];$a=+g[m>>2];g[X>>2]=Fa*ab-Oa*$a;X=t+8|0;g[m>>2]=Oa*ab+Fa*$a;m=t+-12|0;$a=+g[m>>2];ab=+g[X>>2];g[m>>2]=Pa*$a-Qa*ab;m=t+12|0;g[X>>2]=Qa*$a+Pa*ab;X=t+-16|0;ab=+g[X>>2];$a=+g[m>>2];g[X>>2]=Ra*ab-Sa*$a;X=t+16|0;g[m>>2]=Sa*ab+Ra*$a;m=t+-20|0;$a=+g[m>>2];ab=+g[X>>2];g[m>>2]=Ta*$a-Ua*ab;m=t+20|0;g[X>>2]=Ua*$a+Ta*ab;X=t+-24|0;ab=+g[X>>2];$a=+g[m>>2];g[X>>2]=Va*ab-Wa*$a;X=t+24|0;g[m>>2]=Wa*ab+Va*$a;m=t+-28|0;$a=+g[m>>2];ab=+g[X>>2];g[m>>2]=Xa*$a-Ya*ab;m=t+28|0;g[X>>2]=Ya*$a+Xa*ab;X=t+-32|0;ab=+g[X>>2];$a=+g[m>>2];g[X>>2]=Za*ab-_a*$a;g[m>>2]=_a*ab+Za*$a;_=_+-1|0;if(!_)break;else t=t+72|0}}t=pa+(La*2304|0)|0;_=b+9224+(La<<2)|0;m=c[_>>2]|0;X=b+8+(m*4608|0)+(La*2304|0)|0;aa=1-m|0;B=b+8+(aa*4608|0)+(La*2304|0)|0;c[_>>2]=aa;if(!(c[p+8+(La*184|0)+(qa*92|0)+20>>2]|0)){bb=X;cb=B;db=0;fb=t}else{eb(T+(La*2304|0)|0,X,B,63284,t);eb(T+(La*2304|0)+72|0,b+8+(m*4608|0)+(La*2304|0)+72|0,b+8+(aa*4608|0)+(La*2304|0)+72|0,64660,pa+(La*2304|0)+4|0);bb=b+8+(m*4608|0)+(La*2304|0)+144|0;cb=b+8+(aa*4608|0)+(La*2304|0)+144|0;db=2;fb=pa+(La*2304|0)+8|0}aa=c[U>>2]|0;m=p+8+(La*184|0)+(qa*92|0)+52|0;t=db>>>0<(c[m>>2]|0)>>>0;if((aa|0)==2)if(t){B=bb;X=cb;_=db;ba=fb;while(1){jb(T+(La*2304|0)+(_*72|0)|0,B,X,63572,ba);jb(T+(La*2304|0)+((_|1)*72|0)|0,B+72|0,X+72|0,64948,ba+4|0);y=_+2|0;W=ba+8|0;S=B+144|0;$=X+144|0;if(y>>>0<(c[m>>2]|0)>>>0){B=S;X=$;_=y;ba=W}else{kb=S;lb=$;mb=y;nb=W;ya=124;break}}}else{ob=bb;pb=cb;qb=db;rb=fb;ya=127}else if(t){ba=63284+(aa*144|0)|0;_=64660+(aa*144|0)|0;X=bb;B=cb;U=db;W=fb;while(1){eb(T+(La*2304|0)+(U*72|0)|0,X,B,ba,W);eb(T+(La*2304|0)+((U|1)*72|0)|0,X+72|0,B+72|0,_,W+4|0);y=U+2|0;$=W+8|0;S=X+144|0;I=B+144|0;if(y>>>0<(c[m>>2]|0)>>>0){X=S;B=I;U=y;W=$}else{kb=S;lb=I;mb=y;nb=$;ya=124;break}}}else{ob=bb;pb=cb;qb=db;rb=fb;ya=127}if((ya|0)==124?(ya=0,mb>>>0<32):0){ob=kb;pb=lb;qb=mb;rb=nb;ya=127}if((ya|0)==127)while(1){ya=0;c[rb>>2]=c[ob>>2];g[pb>>2]=0.0;c[rb+128>>2]=c[ob+4>>2];g[pb+4>>2]=0.0;c[rb+256>>2]=c[ob+8>>2];g[pb+8>>2]=0.0;c[rb+384>>2]=c[ob+12>>2];g[pb+12>>2]=0.0;c[rb+512>>2]=c[ob+16>>2];g[pb+16>>2]=0.0;c[rb+640>>2]=c[ob+20>>2];g[pb+20>>2]=0.0;c[rb+768>>2]=c[ob+24>>2];g[pb+24>>2]=0.0;c[rb+896>>2]=c[ob+28>>2];g[pb+28>>2]=0.0;c[rb+1024>>2]=c[ob+32>>2];g[pb+32>>2]=0.0;c[rb+1152>>2]=c[ob+36>>2];g[pb+36>>2]=0.0;c[rb+1280>>2]=c[ob+40>>2];g[pb+40>>2]=0.0;c[rb+1408>>2]=c[ob+44>>2];g[pb+44>>2]=0.0;c[rb+1536>>2]=c[ob+48>>2];g[pb+48>>2]=0.0;c[rb+1664>>2]=c[ob+52>>2];g[pb+52>>2]=0.0;c[rb+1792>>2]=c[ob+56>>2];g[pb+56>>2]=0.0;c[rb+1920>>2]=c[ob+60>>2];g[pb+60>>2]=0.0;c[rb+2048>>2]=c[ob+64>>2];g[pb+64>>2]=0.0;c[rb+2176>>2]=c[ob+68>>2];g[pb+68>>2]=0.0;qb=qb+1|0;if((qb|0)==32)break;else{ob=ob+72|0;pb=pb+72|0;rb=rb+4|0;ya=127}}La=La+1|0}while((La|0)<(u|0));if(ra){T=ma;W=0;while(1){U=(Ia[c[oa>>2]&127](pa+(W<<7)|0,pa+2304+(W<<7)|0,b)|0)+T|0;W=W+1|0;if((W|0)==18){sb=U;break}else T=U}}else{T=(Na[c[na>>2]&127](pa,b)|0)+ma|0;W=(Na[c[na>>2]&127](pa+128|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+256|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+384|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+512|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+640|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+768|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+896|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+1024|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+1152|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+1280|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+1408|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+1536|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+1664|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+1792|0,b)|0)+W|0;W=(Na[c[na>>2]&127](pa+1920|0,b)|0)+T|0;T=(Na[c[na>>2]&127](pa+2048|0,b)|0)+W|0;sb=(Na[c[na>>2]&127](pa+2176|0,b)|0)+T|0}qa=qa+1|0;if((qa|0)>=(z|0)){wa=sb;ya=130;break}else ma=sb}if((ya|0)==52){if(c[b+27564>>2]&32|0){wa=ma;i=f;return wa|0}if((c[b+27560>>2]|0)<=1){wa=ma;i=f;return wa|0}c[j>>2]=1978;Lc(0,20340,j);wa=ma;i=f;return wa|0}else if((ya|0)==60){if(c[b+27564>>2]&32|0){wa=ma;i=f;return wa|0}if((c[b+27560>>2]|0)<=1){wa=ma;i=f;return wa|0}c[h>>2]=1994;Lc(0,20340,h);wa=ma;i=f;return wa|0}else if((ya|0)==130){i=f;return wa|0}return 0}function gb(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=c[f+12>>2]|0;i=c[((g|0)==0?79148+(h<<2)|0:78124+(h>>>1<<2)|0)>>2]|0;c[f+64>>2]=i>>>15&1;if((c[f+16>>2]|0)==2)j=(c[f+20>>2]|0)==0?1:2;else j=0;f=i>>>12&7;h=b+19272|0;g=b+19268|0;k=b+19276|0;b=e;e=0;l=0;m=i;while(1){i=m&7;n=a[20107+(j*24|0)+(f<<2)+e>>0]|0;o=n<<24>>24!=0;if(!i)if(o){p=n&255;Tc(b|0,0,(p>>>0>1?p:1)<<2|0)|0;q=b+((n&255)<<2)|0;r=l}else{q=b;r=l}else{p=n&255;if(o){o=n&255;n=b;s=c[h>>2]|0;t=0;while(1){u=c[g>>2]|0;v=(d[s>>0]|0)<>2]=v;w=((d[s+1>>0]|0)<>>8|v)<>>8;c[k>>2]=w;s=s+(u+i>>3)|0;c[h>>2]=s;c[g>>2]=u+m&7;c[n>>2]=w;t=t+1|0;if((t|0)==(o|0))break;else n=n+4|0}x=b+(o<<2)|0}else x=b;q=x;r=(_(p,i)|0)+l|0}m=m>>>3;e=e+1|0;if((e|0)==4)break;else{b=q;l=r}}Tc(q|0,0,j<<3|4|0)|0;return r|0}function hb(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=c[e+12>>2]|0;g=d[20179+f>>0]|0;h=d[20195+f>>0]|0;if((c[e+16>>2]|0)==2){f=(h+g|0)*18|0;i=a+19272|0;if(!(c[e+20>>2]|0)){j=b;k=a+19268|0;l=a+19276|0;m=c[i>>2]|0;n=18;o=f}else{p=a+19268|0;q=a+19276|0;r=b;s=c[i>>2]|0;t=8;while(1){u=c[p>>2]|0;v=(d[s>>0]|0)<>2]=v;w=((d[s+1>>0]|0)<>>8|v)<>>8;c[q>>2]=w;v=u+g|0;s=s+(v>>3)|0;c[i>>2]=s;c[p>>2]=v&7;c[r>>2]=w;t=t+-1|0;if(!t)break;else r=r+4|0}j=b+32|0;k=p;l=q;m=s;n=9;o=f-g|0}f=j;s=m;m=n;while(1){q=c[k>>2]|0;p=(d[s>>0]|0)<>2]=p;r=((d[s+1>>0]|0)<>>8|p)<>>8;c[l>>2]=r;p=q+g|0;s=s+(p>>3)|0;c[i>>2]=s;c[k>>2]=p&7;c[f>>2]=r;m=m+-1|0;if(!m)break;else f=f+4|0}f=j+(n<<2)|0;n=f;j=s;s=18;while(1){m=c[k>>2]|0;r=(d[j>>0]|0)<>2]=r;p=((d[j+1>>0]|0)<>>8|r)<>>8;c[l>>2]=p;r=m+h|0;j=j+(r>>3)|0;c[i>>2]=j;c[k>>2]=r&7;c[n>>2]=p;s=s+-1|0;if(!s)break;else n=n+4|0}n=f+68|0;c[f+72>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;x=o;return x|0}o=c[e>>2]|0;if((o|0)<0){e=a+19272|0;n=a+19268|0;f=a+19276|0;s=b;k=c[e>>2]|0;j=11;while(1){i=c[n>>2]|0;l=(d[k>>0]|0)<>2]=l;p=((d[k+1>>0]|0)<>>8|l)<>>8;c[f>>2]=p;l=i+g|0;k=k+(l>>3)|0;c[e>>2]=k;c[n>>2]=l&7;c[s>>2]=p;j=j+-1|0;if(!j)break;else s=s+4|0}s=b+44|0;j=k;k=10;while(1){p=c[n>>2]|0;l=(d[j>>0]|0)<>2]=l;i=((d[j+1>>0]|0)<

>>8|l)<>>8;c[f>>2]=i;l=p+h|0;j=j+(l>>3)|0;c[e>>2]=j;c[n>>2]=l&7;c[s>>2]=i;k=k+-1|0;if(!k)break;else s=s+4|0}c[b+84>>2]=0;x=((h+g|0)*10|0)+g|0;return x|0}if(!(o&8)){s=a+19272|0;k=a+19268|0;n=a+19276|0;j=c[s>>2]|0;e=c[k>>2]|0;f=(d[j>>0]|0)<>2]=f;i=((d[j+1>>0]|0)<>>8|f)<>>8;c[n>>2]=i;f=e+g|0;e=j+(f>>3)|0;c[s>>2]=e;c[k>>2]=f&7;c[b>>2]=i;i=c[k>>2]|0;f=(d[e>>0]|0)<>2]=f;j=((d[e+1>>0]|0)<>>8|f)<>>8;c[n>>2]=j;f=i+g|0;i=e+(f>>3)|0;c[s>>2]=i;c[k>>2]=f&7;c[b+4>>2]=j;j=c[k>>2]|0;f=(d[i>>0]|0)<>2]=f;e=((d[i+1>>0]|0)<>>8|f)<>>8;c[n>>2]=e;f=j+g|0;j=i+(f>>3)|0;c[s>>2]=j;c[k>>2]=f&7;c[b+8>>2]=e;e=c[k>>2]|0;f=(d[j>>0]|0)<>2]=f;i=((d[j+1>>0]|0)<>>8|f)<>>8;c[n>>2]=i;f=e+g|0;e=j+(f>>3)|0;c[s>>2]=e;c[k>>2]=f&7;c[b+12>>2]=i;i=c[k>>2]|0;f=(d[e>>0]|0)<>2]=f;j=((d[e+1>>0]|0)<>>8|f)<>>8;c[n>>2]=j;f=i+g|0;i=e+(f>>3)|0;c[s>>2]=i;c[k>>2]=f&7;c[b+16>>2]=j;j=c[k>>2]|0;f=(d[i>>0]|0)<>2]=f;e=((d[i+1>>0]|0)<>>8|f)<>>8;c[n>>2]=e;n=j+g|0;c[s>>2]=i+(n>>3);c[k>>2]=n&7;c[b+20>>2]=e;y=g*6|0}else y=0;if(!(o&4)){e=a+19272|0;n=a+19268|0;k=a+19276|0;i=c[e>>2]|0;s=c[n>>2]|0;j=(d[i>>0]|0)<>2]=j;f=((d[i+1>>0]|0)<>>8|j)<>>8;c[k>>2]=f;j=s+g|0;s=i+(j>>3)|0;c[e>>2]=s;c[n>>2]=j&7;c[b+24>>2]=f;f=c[n>>2]|0;j=(d[s>>0]|0)<>2]=j;i=((d[s+1>>0]|0)<>>8|j)<>>8;c[k>>2]=i;j=f+g|0;f=s+(j>>3)|0;c[e>>2]=f;c[n>>2]=j&7;c[b+28>>2]=i;i=c[n>>2]|0;j=(d[f>>0]|0)<>2]=j;s=((d[f+1>>0]|0)<>>8|j)<>>8;c[k>>2]=s;j=i+g|0;i=f+(j>>3)|0;c[e>>2]=i;c[n>>2]=j&7;c[b+32>>2]=s;s=c[n>>2]|0;j=(d[i>>0]|0)<>2]=j;f=((d[i+1>>0]|0)<>>8|j)<>>8;c[k>>2]=f;j=s+g|0;s=i+(j>>3)|0;c[e>>2]=s;c[n>>2]=j&7;c[b+36>>2]=f;f=c[n>>2]|0;j=(d[s>>0]|0)<>2]=j;i=((d[s+1>>0]|0)<>>8|j)<>>8;c[k>>2]=i;k=f+g|0;c[e>>2]=s+(k>>3);c[n>>2]=k&7;c[b+40>>2]=i;z=y+(g*5|0)|0}else z=y;if(!(o&2)){y=a+19272|0;g=a+19268|0;i=a+19276|0;k=c[y>>2]|0;n=c[g>>2]|0;s=(d[k>>0]|0)<>2]=s;e=((d[k+1>>0]|0)<>>8|s)<>>8;c[i>>2]=e;s=n+h|0;n=k+(s>>3)|0;c[y>>2]=n;c[g>>2]=s&7;c[b+44>>2]=e;e=c[g>>2]|0;s=(d[n>>0]|0)<>2]=s;k=((d[n+1>>0]|0)<>>8|s)<>>8;c[i>>2]=k;s=e+h|0;e=n+(s>>3)|0;c[y>>2]=e;c[g>>2]=s&7;c[b+48>>2]=k;k=c[g>>2]|0;s=(d[e>>0]|0)<>2]=s;n=((d[e+1>>0]|0)<>>8|s)<>>8;c[i>>2]=n;s=k+h|0;k=e+(s>>3)|0;c[y>>2]=k;c[g>>2]=s&7;c[b+52>>2]=n;n=c[g>>2]|0;s=(d[k>>0]|0)<>2]=s;e=((d[k+1>>0]|0)<>>8|s)<>>8;c[i>>2]=e;s=n+h|0;n=k+(s>>3)|0;c[y>>2]=n;c[g>>2]=s&7;c[b+56>>2]=e;e=c[g>>2]|0;s=(d[n>>0]|0)<>2]=s;k=((d[n+1>>0]|0)<>>8|s)<>>8;c[i>>2]=k;i=e+h|0;c[y>>2]=n+(i>>3);c[g>>2]=i&7;c[b+60>>2]=k;A=z+(h*5|0)|0}else A=z;if(!(o&1)){o=a+19272|0;z=a+19268|0;k=a+19276|0;a=c[o>>2]|0;i=c[z>>2]|0;g=(d[a>>0]|0)<>2]=g;n=((d[a+1>>0]|0)<>>8|g)<>>8;c[k>>2]=n;g=i+h|0;i=a+(g>>3)|0;c[o>>2]=i;c[z>>2]=g&7;c[b+64>>2]=n;n=c[z>>2]|0;g=(d[i>>0]|0)<>2]=g;a=((d[i+1>>0]|0)<>>8|g)<>>8;c[k>>2]=a;g=n+h|0;n=i+(g>>3)|0;c[o>>2]=n;c[z>>2]=g&7;c[b+68>>2]=a;a=c[z>>2]|0;g=(d[n>>0]|0)<>2]=g;i=((d[n+1>>0]|0)<>>8|g)<>>8;c[k>>2]=i;g=a+h|0;a=n+(g>>3)|0;c[o>>2]=a;c[z>>2]=g&7;c[b+72>>2]=i;i=c[z>>2]|0;g=(d[a>>0]|0)<>2]=g;n=((d[a+1>>0]|0)<>>8|g)<>>8;c[k>>2]=n;g=i+h|0;i=a+(g>>3)|0;c[o>>2]=i;c[z>>2]=g&7;c[b+76>>2]=n;n=c[z>>2]|0;g=(d[i>>0]|0)<>2]=g;a=((d[i+1>>0]|0)<>>8|g)<>>8;c[k>>2]=a;k=n+h|0;c[o>>2]=i+(k>>3);c[z>>2]=k&7;c[b+80>>2]=a;B=A+(h*5|0)|0}else B=A;c[b+84>>2]=0;x=B;return x|0}function ib(a,e,f,h,j,k){a=a|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0.0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0.0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0.0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0.0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0.0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0.0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0.0,Hc=0,Ic=0,Jc=0,Kc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0.0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0.0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0.0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0;l=i;i=i+48|0;m=l;n=l+32|0;o=l+16|0;p=(c[h+68>>2]|0)+1|0;q=(c[h+4>>2]|0)-k|0;k=a+19268|0;r=c[k>>2]|0;s=0-r&7;t=a+19272|0;u=c[t>>2]|0;v=((((d[u>>0]|0)<<8|(d[u+1>>0]|0))<<8|(d[u+2>>0]|0))<>>(24-s|0);w=u+(s+r>>3)|0;c[t>>2]=w;c[k>>2]=0;r=v<<24<<8-s;v=q-s|0;q=c[h+8>>2]|0;u=c[h+56>>2]|0;x=c[h+60>>2]|0;y=288-q>>1;do if((q|0)>(u|0)){c[n>>2]=u;if((q|0)>(x|0)){c[n+4>>2]=x-u;c[n+8>>2]=q-x;z=u;break}else{c[n+4>>2]=q-u;c[n+8>>2]=0;z=u;break}}else{c[n>>2]=q;c[n+4>>2]=0;c[n+8>>2]=0;z=q}while(0);if((c[h+16>>2]|0)==2){q=(c[h+20>>2]|0)==0;u=o+12|0;c[u>>2]=-1;x=o+8|0;if(q){c[x>>2]=-1;A=-1;B=77908+(j*12|0)+4|0;C=78016+(j*12|0)+4|0}else{c[x>>2]=2;A=2;B=77908+(j*12|0)|0;C=78016+(j*12|0)|0}q=o+4|0;c[q>>2]=A;c[o>>2]=A;A=c[C>>2]|0;C=h+88|0;D=f;E=w;F=z;G=0;H=0;I=3;J=c[B>>2]|0;B=r;K=0;L=s;M=v;N=0;O=0.0;P=e;while(1){Q=c[h+24+(H<<2)>>2]|0;a:do if(!F){R=D;S=E;T=G;U=I;V=J;W=B;X=K;Y=L;Z=M;_=N;$=O;aa=P}else{ba=c[4256+(Q<<3)+4>>2]|0;ca=4256+(Q<<3)|0;da=Q>>>0<16;ea=D;fa=E;ga=G;ha=F;ia=I;ja=J;ka=B;la=K;ma=L;na=M;oa=N;pa=O;qa=P;while(1){do if(!la){ra=c[ja>>2]|0;sa=e+(c[ja+4>>2]<<2)|0;ta=c[ja+8>>2]|0;ua=ja+16|0;va=c[ja+12>>2]|0;wa=ea+4|0;xa=c[ea>>2]<>2]|0)+(xa<<2)>>2];Fa=sa;break}else{ya=wa;za=va;Aa=ta;Ba=ua;Ca=ra;Da=3;Ea=+g[(c[h+76+(ta<<2)>>2]|0)+(xa<<2)>>2];Fa=sa;break}}else{ya=ea;za=ga;Aa=ia;Ba=ja;Ca=la;Da=oa;Ea=pa;Fa=qa}while(0);if(ma>>>0<24){sa=23-ma|0;xa=ma+8|0;ta=sa>>>3;ra=fa;ua=ka;va=ma;do{wa=ra;ra=ra+1|0;c[t>>2]=ra;ua=(d[wa>>0]|0)<<24-va|ua;va=va+8|0}while(va>>>0<24);va=sa&-8;Ga=fa+1+ta|0;Ha=ua;Ia=xa+va|0;Ja=na+-8-va|0}else{Ga=fa;Ha=ka;Ia=ma;Ja=na}va=b[ba+(Ha>>>28<<1)>>1]|0;ra=va<<16>>16;if(va<<16>>16<0){va=ra;wa=Ha;Ka=Ia;La=ba;while(1){La=La+(0-va<<1)|0;Ma=Ka+-4|0;Na=wa<<4;Oa=b[La+((wa>>>24&15)<<1)>>1]|0;Pa=Oa<<16>>16;if(Oa<<16>>16>=0){Qa=Pa;Ra=Na;Sa=Ma;break}else{va=Pa;wa=Na;Ka=Ma}}}else{Qa=ra;Ra=Ha;Sa=Ia}Ka=Qa>>8;wa=Sa-Ka|0;va=Ra<>>4&15;xa=Qa&15;switch(La|0){case 15:{ua=c[ca>>2]|0;if(da)Ta=32;else{c[o+(Aa<<2)>>2]=za;if(wa>>>0<24){ta=Ka+23-Sa|0;sa=ta&-8;Ma=Sa+8+sa|0;Na=ta>>>3;ta=Ga;Pa=va;Oa=wa;do{Ua=ta;ta=ta+1|0;c[t>>2]=ta;Pa=(d[Ua>>0]|0)<<24-Oa|Pa;Oa=Oa+8|0}while(Oa>>>0<24);Va=Ga+1+Na|0;Wa=Pa;Xa=Ma-Ka|0;Ya=Ja+-8-sa|0}else{Va=Ga;Wa=va;Xa=wa;Ya=Ja}Oa=Wa<>>(32-ua|0))+15<<2)>>2];g[Fa>>2]=Ea*((Oa|0)<0?-Za:Za);_a=Va;$a=Oa<<1;ab=Xa+-1-ua|0;bb=Ya}break}case 0:{g[Fa>>2]=0.0;_a=Ga;$a=va;ab=wa;bb=Ja;break}default:Ta=32}if((Ta|0)==32){Ta=0;c[o+(Aa<<2)>>2]=za;Za=+g[30392+(La<<2)>>2];g[Fa>>2]=Ea*((va|0)<0?-Za:Za);_a=Ga;$a=va<<1;ab=wa+-1|0;bb=Ja}Oa=Fa+(Da<<2)|0;switch(xa|0){case 15:{ta=c[ca>>2]|0;if(da)Ta=41;else{c[o+(Aa<<2)>>2]=za;if(ab>>>0<24){ra=23-ab|0;Ua=ab+8|0;cb=ra>>>3;db=_a;eb=$a;fb=ab;do{gb=db;db=db+1|0;c[t>>2]=db;eb=(d[gb>>0]|0)<<24-fb|eb;fb=fb+8|0}while(fb>>>0<24);fb=ra&-8;hb=_a+1+cb|0;ib=eb;jb=Ua+fb|0;kb=bb+-8-fb|0}else{hb=_a;ib=$a;jb=ab;kb=bb}fb=ib<>>(32-ta|0))+15<<2)>>2];g[Oa>>2]=Ea*((fb|0)<0?-Za:Za);lb=hb;mb=fb<<1;nb=jb+-1-ta|0;ob=kb}break}case 0:{g[Oa>>2]=0.0;lb=_a;mb=$a;nb=ab;ob=bb;break}default:Ta=41}if((Ta|0)==41){Ta=0;c[o+(Aa<<2)>>2]=za;Za=+g[30392+(xa<<2)>>2];g[Oa>>2]=Ea*(($a|0)<0?-Za:Za);lb=_a;mb=$a<<1;nb=ab+-1|0;ob=bb}fb=Oa+(Da<<2)|0;ha=ha+-1|0;db=Ca+-1|0;if(!ha){R=ya;S=lb;T=za;U=Aa;V=Ba;W=mb;X=db;Y=nb;Z=ob;_=Da;$=Ea;aa=fb;break a}else{ea=ya;fa=lb;ga=za;ia=Aa;ja=Ba;ka=mb;la=db;ma=nb;na=ob;oa=Da;pa=Ea;qa=fb}}}while(0);Q=H+1|0;if((Q|0)==2)break;D=R;E=S;F=c[n+(Q<<2)>>2]|0;G=T;H=Q;I=U;J=V;B=W;K=X;L=Y;M=Z;N=_;O=$;P=aa}b:do if((y|0)!=0&(Z+Y|0)>0){P=e+2324|0;N=h+72|0;M=R;L=S;K=T;B=y;J=U;I=V;H=W;G=X;F=Y;E=Z;D=_;O=$;Da=aa;while(1){if(Da>>>0>=P>>>0)break;ob=c[4512+(c[N>>2]<<3)+4>>2]|0;if(F>>>0<24){nb=23-F|0;mb=F+8|0;Ba=nb>>>3;Aa=L;za=H;lb=F;do{ya=Aa;Aa=Aa+1|0;c[t>>2]=Aa;za=(d[ya>>0]|0)<<24-lb|za;lb=lb+8|0}while(lb>>>0<24);lb=nb&-8;pb=L+1+Ba|0;qb=za;rb=mb+lb|0;sb=E+-8-lb|0}else{pb=L;qb=H;rb=F;sb=E}lb=b[ob>>1]|0;Aa=lb<<16>>16;if(lb<<16>>16<0){lb=Aa;ya=qb;Ca=rb;bb=ob;while(1){ab=bb+2|0;bb=(ya|0)<0?ab+(0-lb<<1)|0:ab;ab=Ca+-1|0;$a=ya<<1;_a=b[bb>>1]|0;kb=_a<<16>>16;if(_a<<16>>16>=0){tb=kb;ub=$a;vb=ab;break}else{lb=kb;ya=$a;Ca=ab}}}else{tb=Aa;ub=qb;vb=rb}if((vb+sb|0)<1){Ta=67;break}else{wb=M;xb=K;yb=0;zb=J;Ab=I;Bb=ub;Cb=G;Db=vb;Eb=D;Fb=O;Gb=Da}while(1){if(!(yb&1)){do if(!Cb){Ca=c[Ab>>2]|0;ya=e+(c[Ab+4>>2]<<2)|0;lb=c[Ab+8>>2]|0;bb=Ab+16|0;ob=c[Ab+12>>2]|0;mb=wb+4|0;za=c[wb>>2]<>2]|0)+(za<<2)>>2];Ob=ya;break}else{Hb=mb;Ib=ob;Jb=lb;Kb=bb;Lb=Ca;Mb=3;Nb=+g[(c[h+76+(lb<<2)>>2]|0)+(za<<2)>>2];Ob=ya;break}}else{Hb=wb;Ib=xb;Jb=zb;Kb=Ab;Lb=Cb;Mb=Eb;Nb=Fb;Ob=Gb}while(0);Pb=Hb;Qb=Ib;Rb=Jb;Sb=Kb;Tb=Lb+-1|0;Ub=Mb;Vb=Nb;Wb=Ob}else{Pb=wb;Qb=xb;Rb=zb;Sb=Ab;Tb=Cb;Ub=Eb;Vb=Fb;Wb=Gb}if(!(8>>>yb&tb)){g[Wb>>2]=0.0;Xb=Bb;Yb=Db}else{c[o+(Rb<<2)>>2]=Qb;if((Db+sb|0)<1){Zb=Bb;_b=Db;$b=Wb;break}g[Wb>>2]=(Bb|0)<0?-Vb:Vb;Xb=Bb<<1;Yb=Db+-1|0}Oa=Wb+(Ub<<2)|0;yb=yb+1|0;if((yb|0)>=4){Zb=Xb;_b=Yb;$b=Oa;break}else{wb=Pb;xb=Qb;zb=Rb;Ab=Sb;Bb=Xb;Cb=Tb;Db=Yb;Eb=Ub;Fb=Vb;Gb=Oa}}B=B+-1|0;if(!((B|0)!=0&(sb+_b|0)>0)){ac=pb;bc=Rb;cc=Sb;dc=Tb;ec=_b;fc=sb;gc=$b;break b}else{M=Pb;L=pb;K=Qb;J=Rb;I=Sb;H=Zb;G=Tb;F=_b;E=sb;D=Ub;O=Vb;Da=$b}}if((Ta|0)==67){ac=pb;bc=J;cc=I;dc=G;ec=0-sb|0;fc=sb;gc=Da;break}if(!(c[a+27564>>2]&32)){c[m>>2]=903;c[m+4>>2]=Da;c[m+8>>2]=e+2304;Lc(0,20211,m)}hc=2;i=l;return hc|0}else{ac=S;bc=U;cc=V;dc=X;ec=Y;fc=Z;gc=aa}while(0);c:do if((bc|0)<3){aa=cc;Z=dc;Y=gc;while(1){if((Z|0)>0){X=Z;V=Y;while(1){g[V>>2]=0.0;g[V+12>>2]=0.0;U=V+24|0;if((X|0)>1){X=X+-1|0;V=U}else{ic=U;break}}}else ic=Y;if(aa>>>0>=A>>>0){jc=ic;break c}V=e+(c[aa+4>>2]<<2)|0;if(!(c[aa+8>>2]|0)){jc=V;break c}X=c[aa>>2]|0;aa=aa+16|0;Z=X;Y=V}}else jc=gc;while(0);gc=c[o>>2]|0;c[h+36>>2]=gc+1;o=c[q>>2]|0;c[h+40>>2]=o+1;q=c[x>>2]|0;c[h+44>>2]=q+1;x=(c[u>>2]|0)+1|0;c[h+48>>2]=x;u=(gc|0)>(o|0)?gc:o;o=((u|0)>(q|0)?u:q)+1|0;c[h+52>>2]=c[((o|0)==0?a+9328+(j*92|0)+(x<<2)|0:a+10156+(j*56|0)+(o<<2)|0)>>2];kc=c[k>>2]|0;lc=ac;mc=ec;nc=fc;oc=jc}else{jc=h+88|0;fc=f;f=z;z=w;w=0;ec=0;ac=c[77908+(j*12|0)+8>>2]|0;o=r;r=-1;x=0;q=s;s=v;v=20296+((c[h+64>>2]|0)*22|0)|0;Vb=0.0;u=e;while(1){gc=c[h+24+(ec<<2)>>2]|0;if(!f){pc=fc;qc=z;rc=w;sc=ac;tc=o;uc=r;vc=x;wc=q;xc=s;yc=v;zc=Vb;Ac=u}else{ic=c[4256+(gc<<3)+4>>2]|0;A=4256+(gc<<3)|0;dc=gc>>>0<16;gc=fc;cc=z;bc=w;Y=f;Z=ac;aa=o;Da=r;G=x;I=q;J=s;V=v;Fb=Vb;X=u;while(1){if(!G){Bc=gc+4|0;Cc=c[Z+4>>2]|0;Dc=Z+8|0;Ec=c[Z>>2]|0;Fc=V+1|0;Gc=+g[(c[jc>>2]|0)+((d[V>>0]|0)+(c[gc>>2]|0)<>2]}else{Bc=gc;Cc=bc;Dc=Z;Ec=G;Fc=V;Gc=Fb}if(I>>>0<24){U=23-I|0;S=I+8|0;m=U>>>3;sb=cc;pb=aa;$b=I;do{Ub=sb;sb=sb+1|0;c[t>>2]=sb;pb=(d[Ub>>0]|0)<<24-$b|pb;$b=$b+8|0}while($b>>>0<24);$b=U&-8;Hc=cc+1+m|0;Ic=pb;Jc=S+$b|0;Kc=J+-8-$b|0}else{Hc=cc;Ic=aa;Jc=I;Kc=J}$b=b[ic+(Ic>>>28<<1)>>1]|0;sb=$b<<16>>16;if($b<<16>>16<0){$b=sb;Ub=Ic;_b=Jc;Tb=ic;while(1){Tb=Tb+(0-$b<<1)|0;Zb=_b+-4|0;Sb=Ub<<4;Rb=b[Tb+((Ub>>>24&15)<<1)>>1]|0;Qb=Rb<<16>>16;if(Rb<<16>>16>=0){Mc=Qb;Nc=Sb;Oc=Zb;break}else{$b=Qb;Ub=Sb;_b=Zb}}}else{Mc=sb;Nc=Ic;Oc=Jc}_b=Mc>>8;Ub=Oc-_b|0;$b=Nc<<_b;Tb=Mc>>>4&15;S=Mc&15;switch(Tb|0){case 15:{pb=c[A>>2]|0;if(dc)Ta=97;else{if(Ub>>>0<24){m=_b+23-Oc|0;U=m&-8;Zb=Oc+8+U|0;Sb=m>>>3;m=Hc;Qb=$b;Rb=Ub;do{Pb=m;m=m+1|0;c[t>>2]=m;Qb=(d[Pb>>0]|0)<<24-Rb|Qb;Rb=Rb+8|0}while(Rb>>>0<24);Pc=Hc+1+Sb|0;Qc=Qb;Rc=Zb-_b|0;Sc=Kc+-8-U|0}else{Pc=Hc;Qc=$b;Rc=Ub;Sc=Kc}Rb=Qc<>>(32-pb|0))+15<<2)>>2];g[X>>2]=Gc*((Rb|0)<0?-Nb:Nb);Uc=Pc;Vc=Rb<<1;Wc=Cc;Xc=Rc+-1-pb|0;Yc=Sc}break}case 0:{g[X>>2]=0.0;Uc=Hc;Vc=$b;Wc=Da;Xc=Ub;Yc=Kc;break}default:Ta=97}if((Ta|0)==97){Ta=0;Nb=+g[30392+(Tb<<2)>>2];g[X>>2]=Gc*(($b|0)<0?-Nb:Nb);Uc=Hc;Vc=$b<<1;Wc=Cc;Xc=Ub+-1|0;Yc=Kc}Rb=X+4|0;switch(S|0){case 15:{m=c[A>>2]|0;if(dc)Ta=106;else{if(Xc>>>0<24){sb=23-Xc|0;Pb=Xc+8|0;Gb=sb>>>3;Eb=Uc;Yb=Vc;Db=Xc;do{Cb=Eb;Eb=Eb+1|0;c[t>>2]=Eb;Yb=(d[Cb>>0]|0)<<24-Db|Yb;Db=Db+8|0}while(Db>>>0<24);Db=sb&-8;Zc=Uc+1+Gb|0;_c=Yb;$c=Pb+Db|0;ad=Yc+-8-Db|0}else{Zc=Uc;_c=Vc;$c=Xc;ad=Yc}Db=_c<>>(32-m|0))+15<<2)>>2];g[Rb>>2]=Gc*((Db|0)<0?-Nb:Nb);bd=Zc;cd=Db<<1;dd=Cc;ed=$c+-1-m|0;fd=ad}break}case 0:{g[Rb>>2]=0.0;bd=Uc;cd=Vc;dd=Wc;ed=Xc;fd=Yc;break}default:Ta=106}if((Ta|0)==106){Ta=0;Nb=+g[30392+(S<<2)>>2];g[Rb>>2]=Gc*((Vc|0)<0?-Nb:Nb);bd=Uc;cd=Vc<<1;dd=Cc;ed=Xc+-1|0;fd=Yc}Y=Y+-1|0;G=Ec+-1|0;if(!Y)break;else{gc=Bc;cc=bd;bc=Cc;Z=Dc;aa=cd;Da=dd;I=ed;J=fd;V=Fc;Fb=Gc;X=X+8|0}}pc=Bc;qc=bd;rc=Cc;sc=Dc;tc=cd;uc=dd;vc=G;wc=ed;xc=fd;yc=Fc;zc=Gc;Ac=u+(f<<1<<2)|0}X=ec+1|0;if((X|0)==3)break;fc=pc;f=c[n+(X<<2)>>2]|0;z=qc;w=rc;ec=X;ac=sc;o=tc;r=uc;x=vc;q=wc;s=xc;v=yc;Vb=zc;u=Ac}d:do if((y|0)!=0&(xc+wc|0)>0){u=h+72|0;v=pc;s=qc;q=rc;x=y;r=sc;o=tc;ac=uc;ec=vc;w=wc;z=xc;n=yc;Vb=zc;f=Ac;while(1){fc=c[4512+(c[u>>2]<<3)+4>>2]|0;if(w>>>0<24){Fc=23-w|0;fd=w+8|0;ed=Fc>>>3;dd=s;cd=o;Dc=w;do{Cc=dd;dd=dd+1|0;c[t>>2]=dd;cd=(d[Cc>>0]|0)<<24-Dc|cd;Dc=Dc+8|0}while(Dc>>>0<24);Dc=Fc&-8;gd=s+1+ed|0;hd=cd;id=fd+Dc|0;jd=z+-8-Dc|0}else{gd=s;hd=o;id=w;jd=z}Dc=b[fc>>1]|0;dd=Dc<<16>>16;if(Dc<<16>>16<0){Dc=dd;Rb=hd;S=id;m=fc;while(1){Pb=m+2|0;m=(Rb|0)<0?Pb+(0-Dc<<1)|0:Pb;Pb=S+-1|0;Yb=Rb<<1;Gb=b[m>>1]|0;sb=Gb<<16>>16;if(Gb<<16>>16>=0){kd=sb;ld=Yb;md=Pb;break}else{Dc=sb;Rb=Yb;S=Pb}}}else{kd=dd;ld=hd;md=id}if((md+jd|0)<1)break;if(!ec){nd=v+4|0;od=c[r+4>>2]|0;pd=r+8|0;qd=c[r>>2]|0;rd=n+1|0;sd=+g[(c[jc>>2]|0)+((d[n>>0]|0)+(c[v>>2]|0)<>2]}else{nd=v;od=q;pd=r;qd=ec;rd=n;sd=Vb}S=qd+-1|0;if(!(kd&8)){g[f>>2]=0.0;td=ld;ud=ac;vd=md}else{g[f>>2]=(ld|0)<0?-sd:sd;td=ld<<1;ud=od;vd=md+-1|0}Rb=f+4|0;if(kd&4)if((vd+jd|0)<1){wd=nd;xd=od;yd=pd;zd=td;Ad=od;Bd=S;Cd=vd;Dd=rd;Ed=sd;Fd=Rb}else{g[Rb>>2]=(td|0)<0?-sd:sd;Gd=td<<1;Hd=od;Id=vd+-1|0;Ta=142}else{g[Rb>>2]=0.0;Gd=td;Hd=ud;Id=vd;Ta=142}do if((Ta|0)==142){Ta=0;Rb=f+8|0;if(!S){Jd=nd+4|0;Kd=c[pd+4>>2]|0;Ld=pd+8|0;Md=c[pd>>2]|0;Nd=rd+1|0;Od=+g[(c[jc>>2]|0)+((d[rd>>0]|0)+(c[nd>>2]|0)<>2]}else{Jd=nd;Kd=od;Ld=pd;Md=S;Nd=rd;Od=sd}Dc=Md+-1|0;if(!(kd&2)){g[Rb>>2]=0.0;Pd=Gd;Qd=Hd;Rd=Id}else{if((Id+jd|0)<1){wd=Jd;xd=Kd;yd=Ld;zd=Gd;Ad=Kd;Bd=Dc;Cd=Id;Dd=Nd;Ed=Od;Fd=Rb;break}g[Rb>>2]=(Gd|0)<0?-Od:Od;Pd=Gd<<1;Qd=Kd;Rd=Id+-1|0}Rb=f+12|0;if(!(kd&1)){g[Rb>>2]=0.0;Sd=Pd;Td=Qd;Ud=Rd}else{if((Rd+jd|0)<1){wd=Jd;xd=Kd;yd=Ld;zd=Pd;Ad=Kd;Bd=Dc;Cd=Rd;Dd=Nd;Ed=Od;Fd=Rb;break}g[Rb>>2]=(Pd|0)<0?-Od:Od;Sd=Pd<<1;Td=Kd;Ud=Rd+-1|0}wd=Jd;xd=Kd;yd=Ld;zd=Sd;Ad=Td;Bd=Dc;Cd=Ud;Dd=Nd;Ed=Od;Fd=f+16|0}while(0);x=x+-1|0;if(!((x|0)!=0&(jd+Cd|0)>0)){Vd=gd;Wd=Ad;Xd=Cd;Yd=jd;Zd=Fd;break d}else{v=wd;s=gd;q=xd;r=yd;o=zd;ac=Ad;ec=Bd;w=Cd;z=jd;n=Dd;Vb=Ed;f=Fd}}Vd=gd;Wd=ac;Xd=0-jd|0;Yd=jd;Zd=f}else{Vd=qc;Wd=uc;Xd=wc;Yd=xc;Zd=Ac}while(0);Ac=Wd+1|0;c[h+48>>2]=Ac;c[h+52>>2]=c[a+9328+(j*92|0)+(Ac<<2)>>2];kc=0;lc=Vd;mc=Xd;nc=Yd;oc=Zd}Zd=nc+mc|0;nc=kc-mc|0;c[t>>2]=lc+(nc>>3);c[k>>2]=nc&7;if(oc>>>0<(e+2304|0)>>>0)Tc(oc|0,0,e+2300+(3-oc)+4&-4|0)|0;if((Zd|0)>16){oc=Zd+-17|0;e=c[k>>2]|0;nc=c[t>>2]|0;lc=Zd;do{mc=e+16|0;nc=nc+(mc>>3)|0;e=mc&7;lc=lc+-16|0}while((lc|0)>16);c[t>>2]=nc;c[k>>2]=e;c[a+19276>>2]=e;_d=Zd+-16-(oc&-16)|0}else _d=Zd;if((_d|0)<=0){if((_d|0)<0){hc=1;i=l;return hc|0}}else{Zd=(c[k>>2]|0)+_d|0;c[t>>2]=(c[t>>2]|0)+(Zd>>3);t=Zd&7;c[k>>2]=t;c[a+19276>>2]=t}hc=0;i=l;return hc|0}function jb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;c[f>>2]=c[b>>2];c[f+128>>2]=c[b+4>>2];c[f+256>>2]=c[b+8>>2];c[f+384>>2]=c[b+12>>2];c[f+512>>2]=c[b+16>>2];c[f+640>>2]=c[b+20>>2];h=+g[a+48>>2];i=+g[a+36>>2];j=i+h;k=+g[a+24>>2];l=k+i;i=+g[a+12>>2];m=+g[a>>2];n=m+i;o=h+ +g[a+60>>2]+l;h=+g[15965];p=h*(i+k);k=(n+l)*h;h=m-j;l=(n-o)*+g[20461];i=l+h;q=h-l;r=e+40|0;s=f+2048|0;g[s>>2]=i*+g[r>>2]+ +g[b+64>>2];t=e+28|0;u=f+1664|0;g[u>>2]=+g[t>>2]*i+ +g[b+52>>2];v=e+4|0;g[f+896>>2]=+g[v>>2]*q+ +g[b+28>>2];w=e+16|0;g[f+1280>>2]=+g[w>>2]*q+ +g[b+40>>2];q=+g[15966];i=q*j+m;m=i+p;j=i-p;p=q*o+n;n=(p+k)*+g[20460];o=(p-k)*+g[20462];k=n+m;p=m-n;n=o+j;m=j-o;x=e+44|0;y=f+2176|0;g[y>>2]=n*+g[x>>2]+ +g[b+68>>2];z=e+24|0;A=f+1536|0;g[A>>2]=+g[z>>2]*n+ +g[b+48>>2];B=e+32|0;C=f+1792|0;g[C>>2]=+g[B>>2]*k+ +g[b+56>>2];D=e+36|0;E=f+1920|0;g[E>>2]=+g[D>>2]*k+ +g[b+60>>2];g[f+768>>2]=+g[e>>2]*m+ +g[b+24>>2];F=e+20|0;g[f+1408>>2]=+g[F>>2]*m+ +g[b+44>>2];G=e+8|0;g[f+1024>>2]=+g[G>>2]*p+ +g[b+32>>2];H=e+12|0;g[f+1152>>2]=+g[H>>2]*p+ +g[b+36>>2];p=+g[a+52>>2];m=+g[a+40>>2];k=m+p;n=+g[a+28>>2];o=n+m;m=+g[a+16>>2];j=+g[a+4>>2];q=j+m;i=p+ +g[a+64>>2]+o;p=+g[15965];l=p*(m+n);n=(q+o)*p;p=j-k;o=(q-i)*+g[20461];m=o+p;h=p-o;b=d+16|0;g[b>>2]=m*+g[r>>2];f=d+4|0;g[f>>2]=+g[t>>2]*m;g[u>>2]=+g[u>>2]+ +g[v>>2]*h;g[s>>2]=+g[s>>2]+ +g[w>>2]*h;h=+g[15966];m=h*k+j;j=m+l;k=m-l;l=h*i+q;q=(l+n)*+g[20460];i=(l-n)*+g[20462];n=q+j;l=j-q;q=i+k;j=k-i;s=d+20|0;g[s>>2]=q*+g[x>>2];g[d>>2]=q*+g[z>>2];u=d+8|0;g[u>>2]=+g[B>>2]*n;I=d+12|0;g[I>>2]=+g[D>>2]*n;g[A>>2]=+g[A>>2]+ +g[e>>2]*j;g[y>>2]=+g[y>>2]+ +g[F>>2]*j;g[C>>2]=+g[C>>2]+ +g[G>>2]*l;g[E>>2]=+g[E>>2]+ +g[H>>2]*l;E=d+48|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;l=+g[a+56>>2];j=+g[a+44>>2];n=j+l;q=+g[a+32>>2];i=q+j;j=+g[a+20>>2];k=+g[a+8>>2];h=k+j;m=l+ +g[a+68>>2]+i;l=+g[15965];o=l*(j+q);q=(h+i)*l;l=k-n;i=(h-m)*+g[20461];j=i+l;p=l-i;g[d+40>>2]=j*+g[r>>2];g[d+28>>2]=+g[t>>2]*j;g[f>>2]=+g[f>>2]+ +g[v>>2]*p;g[b>>2]=+g[b>>2]+ +g[w>>2]*p;p=+g[15966];j=p*n+k;k=j+o;n=j-o;o=p*m+h;h=(o+q)*+g[20460];m=(o-q)*+g[20462];q=h+k;o=k-h;h=m+n;k=n-m;g[d+44>>2]=h*+g[x>>2];g[d+24>>2]=h*+g[z>>2];g[d+32>>2]=+g[B>>2]*q;g[d+36>>2]=+g[D>>2]*q;g[d>>2]=+g[d>>2]+ +g[e>>2]*k;g[s>>2]=+g[s>>2]+ +g[F>>2]*k;g[u>>2]=+g[u>>2]+ +g[G>>2]*o;g[I>>2]=+g[I>>2]+ +g[H>>2]*o;return}function kb(b){b=b|0;var e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ka=0,Ma=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,vb=0,wb=0,xb=0,yb=0,zb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Kc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0.0,zd=0.0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0.0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0.0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0.0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0;e=i;i=i+288|0;f=e+248|0;j=e+240|0;k=e+232|0;l=e+224|0;m=e+216|0;n=e+208|0;o=e+200|0;p=e+192|0;q=e+184|0;r=e+168|0;s=e+160|0;t=e+152|0;u=e+144|0;v=e+136|0;w=e+120|0;x=e+112|0;y=e+104|0;z=e+96|0;A=e+88|0;B=e+80|0;C=e+72|0;D=e+64|0;E=e+56|0;F=e+48|0;G=e+40|0;H=e+32|0;I=e;J=e+272|0;K=e+268|0;L=e+264|0;M=e+282|0;N=e+260|0;O=e+256|0;c[N>>2]=0;P=b+19220|0;Q=c[P>>2]|0;R=b+9324|0;S=c[R>>2]|0;c[b+19348>>2]=Q;T=b+27576|0;U=c[T>>2]|0;do if(U|0){if(!S){c[R>>2]=U+-1;break}c[b+27400>>2]=1;c[b+27396>>2]=1;c[R>>2]=S+-1;V=b+19268|0;c[V>>2]=0;W=c[b+27296>>2]|0;X=b+19272|0;c[X>>2]=W;if((c[b+19168>>2]|0)==3)Wc(W|0,b+9288|0,c[b+19352>>2]|0)|0;if(!(c[b+19180>>2]|0)){Y=1;i=e;return Y|0}W=c[X>>2]|0;Z=c[V>>2]|0;$=Z+16|0;aa=((d[W>>0]<<8|d[W+1>>0])<<8|d[W+2>>0])<>>8&65535;c[X>>2]=W+($>>3);c[V>>2]=$&7;c[b+27448>>2]=aa;Y=1;i=e;return Y|0}while(0);U=b+27452|0;aa=b+27312|0;$=b+27564|0;V=b+27560|0;W=b+19252|0;X=b+27840|0;Z=b+19356|0;ba=b+27308|0;ca=b+27880|0;da=I+7|0;ea=I+6|0;fa=I+5|0;ga=I+4|0;ha=I+20|0;ia=I+21|0;ja=I+22|0;ka=I+23|0;la=I+24|0;ma=I+25|0;na=I+26|0;oa=I+27|0;pa=I+11|0;qa=I+10|0;ra=I+9|0;sa=I+8|0;ta=b+27884|0;ua=b+27885|0;va=b+27886|0;wa=b+27887|0;xa=b+27888|0;ya=b+27472|0;za=b+27304|0;Aa=b+27296|0;Ba=b+27300|0;Ca=b+19232|0;Da=b+19244|0;Ea=b+19168|0;Fa=b+19132|0;Ga=b+19152|0;Ha=J+9|0;Ka=J+4|0;Ma=b+19228|0;Oa=I+4|0;Pa=b+19304|0;Qa=b+19320|0;Ra=b+19312|0;Sa=b+19308|0;Ta=b+19324|0;Ua=b+19316|0;Va=b+27316|0;Wa=b+19328|0;Xa=b+27456|0;Ya=b+27416|0;Za=b+19172|0;_a=b+27436|0;$a=b+27428|0;ab=b+27432|0;bb=b+27440|0;cb=b+27444|0;eb=b+19256|0;fb=0;a:while(1){gb=c[U>>2]|0;hb=c[gb+44>>2]|0;if(!hb)ib=gb;else{Ja[hb&127](b);ib=c[U>>2]|0}hb=Na[c[ib+12>>2]&127](b,O)|0;if((hb|0)<1){jb=hb;break}else kb=fb;b:while(1){c:do if((c[aa>>2]|0)==0?(mb=c[O>>2]|0,(mb&3072|0)==3072|((mb&61440|0)==61440|(mb>>>0<4292870144|(mb&393216|0)==0))):0){c[I>>2]=0;c[J>>2]=mb;if((mb&-256|0)==1229206272){nb=15;break b}if(((c[$>>2]&32|0)==0?(c[V>>2]|0)>1:0)?(a[W>>0]|0)==0:0){c[H>>2]=mb;Lc(0,20412,H)}d:do if((mb|0)==1380533830){e:do if(((c[$>>2]&32|0)==0?(c[V>>2]|0)>1:0)?(a[W>>0]|0)==0:0){hb=c[1719]|0;gb=(hb|0)==0;if((c[1734]|0)>-1){do if(gb){ob=a[6934]|0;a[6934]=ob+255|ob;ob=c[1715]|0;if(!(ob&8)){c[1717]=0;c[1716]=0;pb=c[1726]|0;c[1722]=pb;c[1720]=pb;qb=pb+(c[1727]|0)|0;c[1719]=qb;rb=qb;sb=pb;break}else{c[1715]=ob|32;break e}}else{rb=hb;sb=c[1720]|0}while(0);if((rb-sb|0)>>>0<32){Ia[c[6896>>2]&127](6860,20451,32)|0;break}ob=sb;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,20451,32)|0)>>>0<32)break;tb=0;vb=20483;wb=c[1720]|0}else{tb=32;vb=20451;wb=ob}Wc(wb|0,vb|0,tb|0)|0;c[1720]=(c[1720]|0)+tb;break}else{do if(gb){ob=a[6934]|0;a[6934]=ob+255|ob;ob=c[1715]|0;if(!(ob&8)){c[1717]=0;c[1716]=0;pb=c[1726]|0;c[1722]=pb;c[1720]=pb;qb=pb+(c[1727]|0)|0;c[1719]=qb;xb=qb;yb=pb;break}else{c[1715]=ob|32;break e}}else{xb=hb;yb=c[1720]|0}while(0);if((xb-yb|0)>>>0<32){Ia[c[6896>>2]&127](6860,20451,32)|0;break}hb=yb;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,20451,32)|0)>>>0<32)break;zb=0;Bb=20483;Cb=c[1720]|0}else{zb=32;Bb=20451;Cb=hb}Wc(Cb|0,Bb|0,zb|0)|0;c[1720]=(c[1720]|0)+zb;break}}while(0);hb=Na[c[(c[U>>2]|0)+12>>2]&127](b,J)|0;if((hb|0)>=1){gb=0;while(1){if((c[J>>2]|0)==1684108385)break;ob=gb+1|0;gb=ob>>>0>1024?0:ob;ob=Na[c[(c[U>>2]|0)+16>>2]&127](b,J)|0;pb=(ob|0)<1;if((!((gb|0)!=0|pb)?(qb=c[U>>2]|0,c[qb+44>>2]|0):0)?(Na[c[qb+28>>2]&127](b,4)|0)==0:0){Ja[c[(c[U>>2]|0)+44>>2]&127](b);Na[c[(c[U>>2]|0)+28>>2]&127](b,-4)|0}if(pb){Db=ob;Eb=kb;break d}}gb=Na[c[(c[U>>2]|0)+12>>2]&127](b,J)|0;if((gb|0)<1){Db=gb;Eb=kb}else{nb=57;break b}}else{Db=hb;Eb=kb}}else{c[O>>2]=0;gb=c[X>>2]|0;ob=gb>>>0>65536?gb:65536;gb=kb+1|0;pb=(ob|0)>-1;qb=pb^1;f:do if((gb|0)<(ob|0)|qb){g:do if(pb){Fb=0;Gb=gb;while(1){Hb=Fb+1|0;Fb=Hb>>>0>1024?0:Hb;Hb=Na[c[(c[U>>2]|0)+16>>2]&127](b,J)|0;Ib=(Hb|0)<1;do if(!((Fb|0)!=0|Ib)?(Jb=c[U>>2]|0,c[Jb+44>>2]|0):0){if(Na[c[Jb+28>>2]&127](b,4)|0)break;Ja[c[(c[U>>2]|0)+44>>2]&127](b);Na[c[(c[U>>2]|0)+28>>2]&127](b,-4)|0}while(0);if(Ib){Db=Hb;Eb=Gb;break d}Jb=c[J>>2]|0;if(!((Jb&3072|0)==3072|((Jb&61440|0)==61440|(Jb>>>0<4292870144|(Jb&393216|0)==0)))?(Kb=lb(b,Jb,I)|0,Kb|0):0){Lb=Kb;Mb=Gb;break g}Kb=Gb+1|0;if((Kb|0)>=(ob|0)){Nb=Kb;break f}else Gb=Kb}}else{Gb=0;Fb=gb;while(1){Kb=Gb+1|0;Jb=Kb>>>0>1024?0:Kb;Kb=Na[c[(c[U>>2]|0)+16>>2]&127](b,J)|0;Ob=(Kb|0)<1;do if(!((Jb|0)!=0|Ob)?(Pb=c[U>>2]|0,c[Pb+44>>2]|0):0){if(Na[c[Pb+28>>2]&127](b,4)|0)break;Ja[c[(c[U>>2]|0)+44>>2]&127](b);Na[c[(c[U>>2]|0)+28>>2]&127](b,-4)|0}while(0);if(Ob){Db=Kb;Eb=Fb;break d}Hb=c[J>>2]|0;if(!((Hb&3072|0)==3072|((Hb&61440|0)==61440|(Hb>>>0<4292870144|(Hb&393216|0)==0)))?(Ib=lb(b,Hb,I)|0,Ib|0):0){Lb=Ib;Mb=Fb;break g}Gb=Jb;Fb=Fb+1|0}}while(0);if((Lb|0)<0){Qb=Lb;nb=106;break a}else Nb=Mb}else Nb=gb;while(0);if(!((Nb|0)<(ob|0)|qb)){nb=104;break a}c[O>>2]=c[J>>2];Rb=Nb;break c}while(0);if((Db|0)<0){jb=Db;break a}else Rb=Eb}else Rb=kb;while(0);gb=c[O>>2]|0;if((gb&3072|0)==3072|((gb&61440|0)==61440|(gb>>>0<4292870144|(gb&393216|0)==0)))Sb=gb;else{pb=lb(b,gb,N)|0;if((pb|0)<0){jb=pb;break a}switch(pb|0){case 3:{fb=Rb;continue a;break}case 10:{jb=0;break a;break}case 2:{kb=Rb;continue b;break}case 0:break;default:{nb=265;break b}}Sb=c[O>>2]|0}c[J>>2]=Sb;c[O>>2]=0;pb=Sb&-256;if((pb|0)<1413564160)switch(pb|0){case 1229206272:{nb=142;break b;break}default:{}}else switch(pb|0){case 1413564160:{nb=116;break b;break}default:{}}if((Sb|0)==1095779668){nb=146;break}gb=c[$>>2]|0;if((gb&32|0)==0?(a[W>>0]|0)==0:0){hb=(La[c[(c[U>>2]|0)+36>>2]&127](b)|0)+-4|0;c[E>>2]=Sb;c[E+4>>2]=hb;Lc(0,21289,E);Tb=c[$>>2]|0}else Tb=gb;if((pb|0)==1651339264&(Tb&32|0)==0){pb=c[1719]|0;gb=(pb|0)==0;h:do if((c[1734]|0)>-1){do if(gb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;Fb=c[1726]|0;c[1722]=Fb;c[1720]=Fb;Gb=Fb+(c[1727]|0)|0;c[1719]=Gb;Ub=Gb;Vb=Fb;break}else{c[1715]=hb|32;break h}}else{Ub=pb;Vb=c[1720]|0}while(0);if((Ub-Vb|0)>>>0<32){Ia[c[6896>>2]&127](6860,21345,32)|0;break}hb=Vb;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21345,32)|0)>>>0<32)break;Wb=0;Xb=21377;Yb=c[1720]|0}else{Wb=32;Xb=21345;Yb=hb}Wc(Yb|0,Xb|0,Wb|0)|0;c[1720]=(c[1720]|0)+Wb}else{do if(gb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;Fb=c[1726]|0;c[1722]=Fb;c[1720]=Fb;Gb=Fb+(c[1727]|0)|0;c[1719]=Gb;Zb=Gb;_b=Fb;break}else{c[1715]=hb|32;break h}}else{Zb=pb;_b=c[1720]|0}while(0);if((Zb-_b|0)>>>0<32){Ia[c[6896>>2]&127](6860,21345,32)|0;break}hb=_b;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21345,32)|0)>>>0<32)break;$b=0;ac=21377;bc=c[1720]|0}else{$b=32;ac=21345;bc=hb}Wc(bc|0,ac|0,$b|0)|0;c[1720]=(c[1720]|0)+$b}while(0);cc=c[$>>2]|0}else cc=Tb;if(cc&128|0){nb=257;break a}pb=c[X>>2]|0;c[Z>>2]=0;i:do if((cc&32|0)==0?(a[W>>0]|0)==0:0){gb=c[1719]|0;hb=(gb|0)==0;if((c[1734]|0)>-1){do if(hb){Fb=a[6934]|0;a[6934]=Fb+255|Fb;Fb=c[1715]|0;if(!(Fb&8)){c[1717]=0;c[1716]=0;Gb=c[1726]|0;c[1722]=Gb;c[1720]=Gb;Ib=Gb+(c[1727]|0)|0;c[1719]=Ib;dc=Ib;ec=Gb;break}else{c[1715]=Fb|32;break i}}else{dc=gb;ec=c[1720]|0}while(0);if((dc-ec|0)>>>0<26){Ia[c[6896>>2]&127](6860,21378,26)|0;break}Fb=ec;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21378,26)|0)>>>0<26)break;fc=0;gc=21404;hc=c[1720]|0}else{fc=26;gc=21378;hc=Fb}Wc(hc|0,gc|0,fc|0)|0;c[1720]=(c[1720]|0)+fc;break}else{do if(hb){Fb=a[6934]|0;a[6934]=Fb+255|Fb;Fb=c[1715]|0;if(!(Fb&8)){c[1717]=0;c[1716]=0;Gb=c[1726]|0;c[1722]=Gb;c[1720]=Gb;Ib=Gb+(c[1727]|0)|0;c[1719]=Ib;ic=Ib;jc=Gb;break}else{c[1715]=Fb|32;break i}}else{ic=gb;jc=c[1720]|0}while(0);if((ic-jc|0)>>>0<26){Ia[c[6896>>2]&127](6860,21378,26)|0;break}gb=jc;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21378,26)|0)>>>0<26)break;kc=0;lc=21404;mc=c[1720]|0}else{kc=26;lc=21378;mc=gb}Wc(mc|0,lc|0,kc|0)|0;c[1720]=(c[1720]|0)+kc;break}}while(0);j:do if((pb|0)<0){gb=0;hb=0;while(1){Fb=hb+1|0;Gb=gb+1|0;gb=Gb>>>0>1024?0:Gb;Gb=Na[c[(c[U>>2]|0)+16>>2]&127](b,J)|0;Ib=(Gb|0)<1;if((!((gb|0)!=0|Ib)?(Hb=c[U>>2]|0,c[Hb+44>>2]|0):0)?(Na[c[Hb+28>>2]&127](b,4)|0)==0:0){Ja[c[(c[U>>2]|0)+44>>2]&127](b);Na[c[(c[U>>2]|0)+28>>2]&127](b,-4)|0}Hb=c[J>>2]|0;if(Ib){nc=Gb;oc=Hb;nb=223;break a}if(!((Hb&3072|0)==3072|((Hb&61440|0)==61440|(Hb>>>0<4292870144|(Hb&393216|0)==0)))){pc=Fb;qc=Hb;rc=1;break}else hb=Fb}}else{hb=Sb;gb=0;Fb=0;while(1){Hb=Fb+1|0;if((Hb|0)>=(pb|0)){pc=Hb;qc=hb;rc=0;break j}Gb=gb+1|0;gb=Gb>>>0>1024?0:Gb;Gb=Na[c[(c[U>>2]|0)+16>>2]&127](b,J)|0;Ib=(Gb|0)<1;do if(!((gb|0)!=0|Ib)?(Pb=c[U>>2]|0,c[Pb+44>>2]|0):0){if(Na[c[Pb+28>>2]&127](b,4)|0)break;Ja[c[(c[U>>2]|0)+44>>2]&127](b);Na[c[(c[U>>2]|0)+28>>2]&127](b,-4)|0}while(0);qb=c[J>>2]|0;if(Ib){nc=Gb;oc=qb;nb=223;break a}if(!((qb&3072|0)==3072|((qb&61440|0)==61440|(qb>>>0<4292870144|(qb&393216|0)==0)))){pc=Hb;qc=qb;rc=1;break}else{hb=qb;Fb=Hb}}}while(0);c[O>>2]=qc;if((c[$>>2]&32|0)==0?(a[W>>0]|0)==0:0){c[D>>2]=pc;Lc(0,21455,D)}if(!rc){nb=253;break a}c[ba>>2]=0;kb=Rb}k:do if((nb|0)==15){nb=0;c[ba>>2]=0;pb=Ab(b,mb)|0;if((pb|0)<0){Qb=pb;nb=106;break a}if((pb|0)>0){c[ca>>2]=c[ca>>2]|3;nb=108}else nb=108}else if((nb|0)==57){nb=0;l:do if(((c[$>>2]&32|0)==0?(c[V>>2]|0)>1:0)?(a[W>>0]|0)==0:0){pb=c[1719]|0;Fb=(pb|0)==0;if((c[1734]|0)>-1){do if(Fb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;qb=gb+(c[1727]|0)|0;c[1719]=qb;sc=qb;tc=gb;break}else{c[1715]=hb|32;break l}}else{sc=pb;tc=c[1720]|0}while(0);if((sc-tc|0)>>>0<27){Ia[c[6896>>2]&127](6860,20484,27)|0;break}hb=tc;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,20484,27)|0)>>>0<27)break;uc=0;vc=20511;wc=c[1720]|0}else{uc=27;vc=20484;wc=hb}Wc(wc|0,vc|0,uc|0)|0;c[1720]=(c[1720]|0)+uc;break}else{do if(Fb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;qb=gb+(c[1727]|0)|0;c[1719]=qb;xc=qb;yc=gb;break}else{c[1715]=hb|32;break l}}else{xc=pb;yc=c[1720]|0}while(0);if((xc-yc|0)>>>0<27){Ia[c[6896>>2]&127](6860,20484,27)|0;break}pb=yc;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,20484,27)|0)>>>0<27)break;zc=0;Ac=20511;Bc=c[1720]|0}else{zc=27;Ac=20484;Bc=pb}Wc(Bc|0,Ac|0,zc|0)|0;c[1720]=(c[1720]|0)+zc;break}}while(0);c[ba>>2]=0;c[O>>2]=c[J>>2];nb=108}else if((nb|0)==116){nb=0;a[ta>>0]=Sb>>>24;a[ua>>0]=Sb>>>16;a[va>>0]=Sb>>>8;a[wa>>0]=Sb;pb=Ia[c[(c[U>>2]|0)+8>>2]&127](b,xa,124)|0;if((pb|0)<0){Cc=pb;nb=260;break a}c[ca>>2]=c[ca>>2]|3;c[ya>>2]=c[ya>>2]|2;if((c[$>>2]&32|0)==0?(c[V>>2]|0)>2:0){pb=c[1719]|0;Fb=(pb|0)==0;if((c[1734]|0)>-1){do if(Fb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;qb=gb+(c[1727]|0)|0;c[1719]=qb;Dc=qb;Ec=gb;break}else{c[1715]=hb|32;nb=263;break k}}else{Dc=pb;Ec=c[1720]|0}while(0);if((Dc-Ec|0)>>>0<25){Ia[c[6896>>2]&127](6860,21183,25)|0;nb=263;break}hb=Ec;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21183,25)|0)>>>0<25){nb=263;break}Fc=0;Gc=21208;Hc=c[1720]|0}else{Fc=25;Gc=21183;Hc=hb}Wc(Hc|0,Gc|0,Fc|0)|0;c[1720]=(c[1720]|0)+Fc;nb=263;break}else{do if(Fb){hb=a[6934]|0;a[6934]=hb+255|hb;hb=c[1715]|0;if(!(hb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;qb=gb+(c[1727]|0)|0;c[1719]=qb;Ic=qb;Kc=gb;break}else{c[1715]=hb|32;nb=263;break k}}else{Ic=pb;Kc=c[1720]|0}while(0);if((Ic-Kc|0)>>>0<25){Ia[c[6896>>2]&127](6860,21183,25)|0;nb=263;break}pb=Kc;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21183,25)|0)>>>0<25){nb=263;break}Nc=0;Oc=21208;Pc=c[1720]|0}else{Nc=25;Oc=21183;Pc=pb}Wc(Pc|0,Oc|0,Nc|0)|0;c[1720]=(c[1720]|0)+Nc;nb=263;break}}else nb=263}else if((nb|0)==142){nb=0;c[ba>>2]=0;pb=Ab(b,Sb)|0;if((pb|0)<0){Cc=pb;nb=260;break a}if((pb|0)>0){c[ca>>2]=c[ca>>2]|3;nb=263}else nb=263}else if((nb|0)==146){nb=0;c[ba>>2]=0;pb=Ia[c[(c[U>>2]|0)+8>>2]&127](b,I,28)|0;if((pb|0)<0){Qc=pb;nb=262;break a}pb=a[I>>0]|0;m:do if(!(pb<<24>>24)){Rc=0;Sc=21209}else{Fb=4;hb=pb;gb=I;qb=21209;while(1){Fb=Fb+-1|0;ob=a[qb>>0]|0;if(!(hb<<24>>24==ob<<24>>24&((Fb|0)!=0&ob<<24>>24!=0))){Rc=hb;Sc=qb;break m}gb=gb+1|0;ob=qb+1|0;hb=a[gb>>0]|0;if(!(hb<<24>>24)){Rc=0;Sc=ob;break}else qb=ob}}while(0);if(Rc<<24>>24==(a[Sc>>0]|0)?((d[ea>>0]<<16|d[da>>0]<<24|d[fa>>0]<<8|d[ga>>0]|0)==2e3?(a[ha>>0]|a[ia>>0]|a[ja>>0]|a[ka>>0]|a[la>>0]|a[ma>>0]|a[na>>0]|a[oa>>0])<<24>>24==0:0):0){pb=Na[c[(c[U>>2]|0)+20>>2]&127](b,d[qa>>0]<<16|d[pa>>0]<<24|d[ra>>0]<<8|d[sa>>0])|0;if((pb|0)<0){Qc=pb;nb=262;break a}}else nb=152;if(((nb|0)==152?(nb=0,(Na[c[(c[U>>2]|0)+28>>2]&127](b,31)|0)<0):0)?(c[$>>2]&32|0)==0:0){c[F>>2]=1113;Lc(0,21214,F)}fb=Rb;continue a}else if((nb|0)==265){nb=0;if(!(c[aa>>2]|0)){pb=c[O>>2]|0;c[I>>2]=0;do if(c[ya>>2]&12|0){qb=La[c[(c[U>>2]|0)+36>>2]&127](b)|0;Tc=Na[c[(c[U>>2]|0)+20>>2]&127](b,c[P>>2]|0)|0;if((Tc|0)<0){nb=268;break a}hb=Na[c[(c[U>>2]|0)+12>>2]&127](b,I)|0;gb=c[U>>2]|0;Fb=c[gb+28>>2]|0;ob=(La[c[gb+36>>2]&127](b)|0)-qb|0;if((Na[Fb&127](b,ob)|0)<0){nb=273;break a}switch(hb|0){case -10:{Uc=-10;nb=283;break a;break}case 0:{nb=285;break a;break}default:{}}hb=c[I>>2]|0;if((!((hb&3072|0)==3072|((hb&61440|0)==61440|(hb>>>0<4292870144|(hb&393216|0)==0)))?((hb^pb)&-128e3|0)==0:0)?!((pb&192|0)==192^(hb&192|0)==192):0)break;c[ba>>2]=0;if((Na[c[(c[U>>2]|0)+28>>2]&127](b,3)|0)<0){nb=281;break a}fb=Rb;continue a}while(0)}Vc=(La[c[(c[U>>2]|0)+36>>2]&127](b)|0)+-4|0;Xc=b+19360+((c[za>>2]|0)*3968|0)+512|0;pb=Ia[c[(c[U>>2]|0)+24>>2]&127](b,Xc,c[P>>2]|0)|0;if((pb|0)<0){jb=pb;break a}c[Ba>>2]=c[Aa>>2];c[Aa>>2]=Xc;c[za>>2]=c[za>>2]&1^1;if(c[aa>>2]|0){nb=490;break a}c[aa>>2]=c[O>>2];if((c[Ca>>2]|0)>=0){nb=490;break a}c[Da>>2]=Vc;if((c[Ea>>2]|0)!=3){nb=489;break a}pb=(c[Ga>>2]|0)!=0;hb=(c[Fa>>2]|0)==2?(pb?17:32):pb?9:17;pb=c[$>>2]|0;if(pb&16384|0){nb=489;break a}if((c[P>>2]|0)<(hb+8|0)){nb=489;break a}else Yc=2;do{if(a[Xc+Yc>>0]|0){nb=489;break a}Yc=Yc+1|0}while((Yc|0)<(hb|0));switch(a[Xc+hb>>0]|0){case 73:{if((a[Xc+(hb+1)>>0]|0)!=110){nb=489;break a}if((a[Xc+(hb|2)>>0]|0)!=102){nb=489;break a}if((a[Xc+(hb+3)>>0]|0)!=111){nb=489;break a}break}case 88:{if((a[Xc+(hb+1)>>0]|0)!=105){nb=489;break a}if((a[Xc+(hb|2)>>0]|0)!=110){nb=489;break a}if((a[Xc+(hb+3)>>0]|0)!=103){nb=489;break a}c[Ma>>2]=1;break}default:{nb=489;break a}}if((pb&32|0)==0?(c[V>>2]|0)>1:0){ob=c[1719]|0;Fb=(ob|0)==0;n:do if((c[1734]|0)>-1){do if(Fb){qb=a[6934]|0;a[6934]=qb+255|qb;qb=c[1715]|0;if(!(qb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;Pb=gb+(c[1727]|0)|0;c[1719]=Pb;Zc=Pb;_c=gb;break}else{c[1715]=qb|32;break n}}else{Zc=ob;_c=c[1720]|0}while(0);if((Zc-_c|0)>>>0<37){Ia[c[6896>>2]&127](6860,21921,37)|0;break}qb=_c;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21921,37)|0)>>>0<37)break;$c=0;ad=21958;bd=c[1720]|0}else{$c=37;ad=21921;bd=qb}Wc(bd|0,ad|0,$c|0)|0;c[1720]=(c[1720]|0)+$c}else{do if(Fb){qb=a[6934]|0;a[6934]=qb+255|qb;qb=c[1715]|0;if(!(qb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;Pb=gb+(c[1727]|0)|0;c[1719]=Pb;cd=Pb;dd=gb;break}else{c[1715]=qb|32;break n}}else{cd=ob;dd=c[1720]|0}while(0);if((cd-dd|0)>>>0<37){Ia[c[6896>>2]&127](6860,21921,37)|0;break}qb=dd;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21921,37)|0)>>>0<37)break;ed=0;fd=21958;gd=c[1720]|0}else{ed=37;fd=21921;gd=qb}Wc(gd|0,fd|0,ed|0)|0;c[1720]=(c[1720]|0)+ed}while(0);hd=c[Aa>>2]|0}else hd=Xc;ob=hb|4;Fb=d[hd+(ob+3)>>0]|0;pb=ob+4|0;o:do if(Fb&1){qb=ob+8|0;if((c[P>>2]|0)>=(qb|0)){gb=d[hd+(ob+5)>>0]<<16|d[hd+pb>>0]<<24|d[hd+(ob+6)>>0]<<8|d[hd+(ob+7)>>0];Pb=c[$>>2]|0;if(!(Pb&4096)){id=gb>>>0>932067?0:gb;c[Wa>>2]=id;if(Pb&64|0){c[Ya>>2]=id;if((id|0)>0){jd=529;kd=(_(c[Za>>2]|0,id)|0)+529|0}else{jd=0;kd=0}c[_a>>2]=kd;c[$a>>2]=jd;c[ab>>2]=0;c[bb>>2]=0;c[cb>>2]=0}if(Pb&32|0){ld=qb;nb=363;break}if((c[V>>2]|0)<=2){ld=qb;nb=363;break}c[x>>2]=gb;Lc(0,22025,x);ld=qb;nb=363;break}if((Pb&32|0)==0?(c[V>>2]|0)>2:0){Pb=c[1719]|0;gb=(Pb|0)==0;if((c[1734]|0)>-1){do if(gb){id=a[6934]|0;a[6934]=id+255|id;id=c[1715]|0;if(!(id&8)){c[1717]=0;c[1716]=0;md=c[1726]|0;c[1722]=md;c[1720]=md;nd=md+(c[1727]|0)|0;c[1719]=nd;od=nd;pd=md;break}else{c[1715]=id|32;ld=qb;nb=363;break o}}else{od=Pb;pd=c[1720]|0}while(0);if((od-pd|0)>>>0<65){Ia[c[6896>>2]&127](6860,21959,65)|0;ld=qb;nb=363;break}id=pd;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21959,65)|0)>>>0<65){ld=qb;nb=363;break}qd=0;rd=22024;sd=c[1720]|0}else{qd=65;rd=21959;sd=id}Wc(sd|0,rd|0,qd|0)|0;c[1720]=(c[1720]|0)+qd;ld=qb;nb=363;break}else{do if(gb){id=a[6934]|0;a[6934]=id+255|id;id=c[1715]|0;if(!(id&8)){c[1717]=0;c[1716]=0;md=c[1726]|0;c[1722]=md;c[1720]=md;nd=md+(c[1727]|0)|0;c[1719]=nd;td=nd;ud=md;break}else{c[1715]=id|32;ld=qb;nb=363;break o}}else{td=Pb;ud=c[1720]|0}while(0);if((td-ud|0)>>>0<65){Ia[c[6896>>2]&127](6860,21959,65)|0;ld=qb;nb=363;break}Pb=ud;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21959,65)|0)>>>0<65){ld=qb;nb=363;break}vd=0;wd=22024;xd=c[1720]|0}else{vd=65;wd=21959;xd=Pb}Wc(xd|0,wd|0,vd|0)|0;c[1720]=(c[1720]|0)+vd;ld=qb;nb=363;break}}else{ld=qb;nb=363}}}else{ld=pb;nb=363}while(0);p:do if((nb|0)==363){nb=0;q:do if(Fb&2){pb=ld+4|0;if((c[P>>2]|0)<(pb|0))break p;ob=c[Aa>>2]|0;hb=d[ob+(ld+1)>>0]<<16|d[ob+ld>>0]<<24|d[ob+(ld+2)>>0]<<8|d[ob+(ld+3)>>0];ob=c[$>>2]|0;if(!(ob&4096)){Pb=c[Xa>>2]|0;gb=c[Da>>2]|0;do if((Pb|0)<1)c[Xa>>2]=gb+hb;else{id=Pb-gb|0;if(!((ob&32|0)==0&(id|0)!=(hb|0)))break;yd=+(id-hb|0)*(100.0/+(Pb|0));zd=yd<0.0?-yd:yd;if((c[V>>2]|0)>2){c[w>>2]=hb;h[w+8>>3]=zd;Lc(0,22114,w)}if(!(zd>1.0))break;if(c[$>>2]&32|0)break;Lc(0,22191,v)}while(0);if(c[$>>2]&32|0){Ad=pb;break}if((c[V>>2]|0)<=2){Ad=pb;break}c[u>>2]=hb;Lc(0,22293,u);Ad=pb;break}if(!(ob&32)){if((c[V>>2]|0)<=2){Ad=pb;break}Pb=c[1719]|0;gb=(Pb|0)==0;if((c[1734]|0)>-1){do if(gb){Hb=a[6934]|0;a[6934]=Hb+255|Hb;Hb=c[1715]|0;if(!(Hb&8)){c[1717]=0;c[1716]=0;Gb=c[1726]|0;c[1722]=Gb;c[1720]=Gb;Ib=Gb+(c[1727]|0)|0;c[1719]=Ib;Bd=Ib;Cd=Gb;break}else{c[1715]=Hb|32;Ad=pb;break q}}else{Bd=Pb;Cd=c[1720]|0}while(0);if((Bd-Cd|0)>>>0<64){Ia[c[6896>>2]&127](6860,22049,64)|0;Ad=pb;break}ob=Cd;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22049,64)|0)>>>0<64){Ad=pb;break}Dd=0;Ed=22113;Fd=c[1720]|0}else{Dd=64;Ed=22049;Fd=ob}Wc(Fd|0,Ed|0,Dd|0)|0;c[1720]=(c[1720]|0)+Dd;Ad=pb;break}else{do if(gb){ob=a[6934]|0;a[6934]=ob+255|ob;ob=c[1715]|0;if(!(ob&8)){c[1717]=0;c[1716]=0;hb=c[1726]|0;c[1722]=hb;c[1720]=hb;Hb=hb+(c[1727]|0)|0;c[1719]=Hb;Gd=Hb;Hd=hb;break}else{c[1715]=ob|32;Ad=pb;break q}}else{Gd=Pb;Hd=c[1720]|0}while(0);if((Gd-Hd|0)>>>0<64){Ia[c[6896>>2]&127](6860,22049,64)|0;Ad=pb;break}Pb=Hd;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22049,64)|0)>>>0<64){Ad=pb;break}Id=0;Jd=22113;Kd=c[1720]|0}else{Id=64;Jd=22049;Kd=Pb}Wc(Kd|0,Jd|0,Id|0)|0;c[1720]=(c[1720]|0)+Id;Ad=pb;break}}else Ad=pb}else Ad=ld;while(0);do if(!(Fb&4))Ld=Ad;else{qb=Ad+100|0;if((c[P>>2]|0)<(qb|0))break p;Pb=(c[Aa>>2]|0)+Ad|0;gb=c[eb>>2]|0;if(!gb){ob=Mc(100)|0;c[eb>>2]=ob;if(!ob){Ld=qb;break}else Md=ob}else Md=gb;Nd=Md;Od=Pb;Pd=Nd+100|0;do{a[Nd>>0]=a[Od>>0]|0;Nd=Nd+1|0;Od=Od+1|0}while((Nd|0)<(Pd|0));Ld=qb}while(0);do if(!(Fb&8))Qd=Ld;else{pb=Ld+4|0;if((c[P>>2]|0)<(pb|0))break p;Pb=c[Aa>>2]|0;if(c[$>>2]&32|0){Qd=pb;break}if((c[V>>2]|0)<=2){Qd=pb;break}c[t>>2]=d[Pb+(Ld+1)>>0]<<16|d[Pb+Ld>>0]<<24|d[Pb+(Ld+2)>>0]<<8|d[Pb+(Ld+3)>>0];Lc(0,22316,t);Qd=pb}while(0);if((c[P>>2]|0)>=(Qd+24|0)?(pb=(c[Aa>>2]|0)+Qd|0,a[pb>>0]|0):0){Pb=I;c[Pb>>2]=0;c[Pb+4>>2]=0;Nd=J;Od=pb;Pd=Nd+9|0;do{a[Nd>>0]=a[Od>>0]|0;Nd=Nd+1|0;Od=Od+1|0}while((Nd|0)<(Pd|0));a[Ha>>0]=0;do if(!(c[$>>2]&32)){if((c[V>>2]|0)<=2){Rd=4;Sd=76;Td=22368;Ud=J;break}c[s>>2]=J;Lc(0,22343,s);Rd=4;Sd=76;Td=22368;Ud=J}else{Rd=4;Sd=76;Td=22368;Ud=J}while(0);while(1){Rd=Rd+-1|0;pb=a[Ud>>0]|0;if(!(Sd<<24>>24==pb<<24>>24&((Rd|0)!=0&pb<<24>>24!=0))){Vd=Sd;Wd=pb;break}Td=Td+1|0;Ud=Ud+1|0;Sd=a[Td>>0]|0;if(!(Sd<<24>>24)){nb=419;break}}if((nb|0)==419){nb=0;Vd=0;Wd=a[Ud>>0]|0}if(Vd<<24>>24==Wd<<24>>24){a[M>>0]=0;c[r>>2]=K;c[r+4>>2]=L;c[r+8>>2]=M;r:do if((Jc(Ka,22373,r)|0)<=1){if(c[$>>2]&32|0){Xd=0.0;break}if((c[V>>2]|0)<=2){Xd=0.0;break}pb=c[1719]|0;Pb=(pb|0)==0;if((c[1734]|0)>-1){do if(Pb){gb=a[6934]|0;a[6934]=gb+255|gb;gb=c[1715]|0;if(!(gb&8)){c[1717]=0;c[1716]=0;ob=c[1726]|0;c[1722]=ob;c[1720]=ob;hb=ob+(c[1727]|0)|0;c[1719]=hb;Yd=hb;Zd=ob;break}else{c[1715]=gb|32;Xd=0.0;break r}}else{Yd=pb;Zd=c[1720]|0}while(0);if((Yd-Zd|0)>>>0<43){Ia[c[6896>>2]&127](6860,22447,43)|0;Xd=0.0;break}qb=Zd;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22447,43)|0)>>>0<43){Xd=0.0;break}_d=0;$d=22490;ae=c[1720]|0}else{_d=43;$d=22447;ae=qb}Wc(ae|0,$d|0,_d|0)|0;c[1720]=(c[1720]|0)+_d;Xd=0.0;break}else{do if(Pb){qb=a[6934]|0;a[6934]=qb+255|qb;qb=c[1715]|0;if(!(qb&8)){c[1717]=0;c[1716]=0;gb=c[1726]|0;c[1722]=gb;c[1720]=gb;ob=gb+(c[1727]|0)|0;c[1719]=ob;be=ob;ce=gb;break}else{c[1715]=qb|32;Xd=0.0;break r}}else{be=pb;ce=c[1720]|0}while(0);if((be-ce|0)>>>0<43){Ia[c[6896>>2]&127](6860,22447,43)|0;Xd=0.0;break}pb=ce;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22447,43)|0)>>>0<43){Xd=0.0;break}de=0;ee=22490;fe=c[1720]|0}else{de=43;ee=22447;fe=pb}Wc(fe|0,ee|0,de|0)|0;c[1720]=(c[1720]|0)+de;Xd=0.0;break}}else{pb=c[K>>2]|0;if(pb>>>0>=3?!((pb|0)==3&(c[L>>2]|0)>>>0<95):0){Xd=0.0;break}if(c[$>>2]&32|0){Xd=6.0;break}if((c[V>>2]|0)<=2){Xd=6.0;break}h[q>>3]=6.0;Lc(0,22381,q);Xd=6.0}while(0);ge=Xd}else ge=0.0;pb=c[Aa>>2]|0;Pb=d[pb+(Qd+9)>>0]&15;qb=Qd+10|0;do if(!(c[$>>2]&32)){if((c[V>>2]|0)<=2)break;c[p>>2]=(d[pb+qb>>0]|0)>>>4;Lc(0,22491,p);c[o>>2]=Pb;Lc(0,22511,o)}while(0);switch(Pb|0){case 8:case 1:{c[Ma>>2]=0;break}case 9:case 2:{c[Ma>>2]=2;break}default:c[Ma>>2]=1}do if(!(c[$>>2]&32)){if((c[V>>2]|0)<=2)break;h[n>>3]=0.0;Lc(0,22536,n)}while(0);Pb=c[Aa>>2]|0;qb=a[Pb+(Qd+15)>>0]|0;pb=qb&255;gb=(qb&255)>>>5;ob=pb>>>2&7;if(!((qb&255)>95|(gb<<24>>24==0|(ob|0)==0))){zd=+((d[Pb+(Qd+16)>>0]|pb<<8&256)&65535)*(pb&2|0?-.10000000149011612:.10000000149011612);g[I+((gb+-1&255)<<2)>>2]=(ob|0)==3?zd+ge:zd}ob=a[Pb+(Qd+17)>>0]|0;gb=ob&255;pb=(ob&255)>>>5;qb=gb>>>2&7;if(!((ob&255)>95|(pb<<24>>24==0|(qb|0)==0))){zd=+((d[Pb+(Qd+18)>>0]|gb<<8&256)&65535)*(gb&2|0?-.10000000149011612:.10000000149011612);g[I+((pb+-1&255)<<2)>>2]=(qb|0)==3?zd+ge:zd}do if(!(c[$>>2]&32)){if((c[V>>2]|0)<=2)break;h[m>>3]=+g[I>>2];Lc(0,22578,m);h[l>>3]=+g[Oa>>2];Lc(0,22613,l)}while(0);if((c[Pa>>2]|0)<1){g[Qa>>2]=0.0;c[Ra>>2]=c[I>>2];c[Pa>>2]=0}if((c[Sa>>2]|0)<1){g[Ta>>2]=0.0;c[Ua>>2]=c[Oa>>2];c[Sa>>2]=0}do if((c[Ma>>2]|0)==2){qb=d[(c[Aa>>2]|0)+(Qd+20)>>0]|0;c[Va>>2]=qb;if(c[$>>2]&32|0)break;if((c[V>>2]|0)<=2)break;c[k>>2]=qb;Lc(0,22653,k)}while(0);qb=c[Aa>>2]|0;pb=d[qb+(Qd+22)>>0]|0;gb=pb>>>4|d[qb+(Qd+21)>>0]<<4;Pb=pb<<8&3840|d[qb+(Qd+23)>>0];qb=c[$>>2]|0;do if(!(qb&32)){if((c[V>>2]|0)<=2){he=qb;break}c[j>>2]=gb;c[j+4>>2]=Pb;Lc(0,22680,j);he=c[$>>2]|0}else he=qb;while(0);if(he&64|0){qb=c[Wa>>2]|0;c[Ya>>2]=qb;if((qb|0)>0){ie=gb+529|0;je=529-Pb+(_(c[Za>>2]|0,qb)|0)|0}else{ie=0;je=0}c[_a>>2]=je;c[$a>>2]=ie;c[ab>>2]=0;c[bb>>2]=0;c[cb>>2]=0}}}while(0);Fb=c[za>>2]|0;c[Aa>>2]=b+19360+(Fb*3968|0)+512;c[za>>2]=Fb&1^1;Fb=c[(c[U>>2]|0)+44>>2]|0;if(Fb|0)Ja[Fb&127](b);c[ba>>2]=0;fb=Rb;continue a}while(0);if((nb|0)==108){nb=0;fb=kb;continue}else if((nb|0)==263){nb=0;fb=Rb;continue}}switch(nb|0){case 104:{if(!(c[$>>2]&32)){c[G>>2]=1204;c[G+4>>2]=Nb;Lc(0,21072,G)}jb=0;break}case 106:{jb=Qb;break}case 223:{c[O>>2]=oc;s:do if(!(c[$>>2]&32)){oc=c[1719]|0;Qb=(oc|0)==0;if((c[1734]|0)>-1){do if(Qb){G=a[6934]|0;a[6934]=G+255|G;G=c[1715]|0;if(!(G&8)){c[1717]=0;c[1716]=0;Nb=c[1726]|0;c[1722]=Nb;c[1720]=Nb;Rb=Nb+(c[1727]|0)|0;c[1719]=Rb;ke=Rb;le=Nb;break}else{c[1715]=G|32;break s}}else{ke=oc;le=c[1720]|0}while(0);if((ke-le|0)>>>0<49){Ia[c[6896>>2]&127](6860,21405,49)|0;break}G=le;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21405,49)|0)>>>0<49)break;me=0;ne=21454;oe=c[1720]|0}else{me=49;ne=21405;oe=G}Wc(oe|0,ne|0,me|0)|0;c[1720]=(c[1720]|0)+me;break}else{do if(Qb){G=a[6934]|0;a[6934]=G+255|G;G=c[1715]|0;if(!(G&8)){c[1717]=0;c[1716]=0;Nb=c[1726]|0;c[1722]=Nb;c[1720]=Nb;Rb=Nb+(c[1727]|0)|0;c[1719]=Rb;pe=Rb;qe=Nb;break}else{c[1715]=G|32;break s}}else{pe=oc;qe=c[1720]|0}while(0);if((pe-qe|0)>>>0<49){Ia[c[6896>>2]&127](6860,21405,49)|0;break}oc=qe;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,21405,49)|0)>>>0<49)break;re=0;se=21454;te=c[1720]|0}else{re=49;se=21405;te=oc}Wc(te|0,se|0,re|0)|0;c[1720]=(c[1720]|0)+re;break}}while(0);if(!nc)jb=0;else{Cc=nc;nb=260}break}case 253:{if(!(c[$>>2]&32)){c[C>>2]=1292;c[C+4>>2]=pc;Lc(0,21490,C)}c[b+27864>>2]=28;Cc=-1;nb=260;break}case 257:{if(!(cc&32)){c[B>>2]=1306;Lc(0,21644,B)}c[b+27864>>2]=27;Cc=-1;nb=260;break}case 262:{jb=Qc;break}case 268:{if((Tc|0)==-1?(c[$>>2]&32|0)==0:0){c[A>>2]=1028;Lc(0,21720,A)}Uc=(Tc|0)==-10?-10:-1;nb=283;break}case 273:{if(!(c[$>>2]&32)){c[z>>2]=1037;Lc(0,21781,z);Uc=-1;nb=283}else{Uc=-1;nb=283}break}case 281:{if(!(c[$>>2]&32)){c[y>>2]=1058;Lc(0,21847,y);Uc=-1;nb=283}else{Uc=-1;nb=283}break}case 285:{jb=0;break}case 489:{ub(b);ue=c[Aa>>2]|0;nb=491;break}case 490:{ue=Xc;nb=491;break}}if((nb|0)==260)jb=Cc;else if((nb|0)==283){Na[c[(c[U>>2]|0)+28>>2]&127](b,4)|0;jb=Uc}else if((nb|0)==491){Uc=b+19268|0;c[Uc>>2]=0;Cc=b+19272|0;c[Cc>>2]=ue;ue=b+19344|0;Xc=c[ue>>2]|0;y=Xc+1|0;c[ue>>2]=y;if(y|0){ue=b+19336|0;ge=+h[ue>>3]*+(Xc|0);Xc=c[Ea>>2]|0;switch(Xc|0){case 1:{z=c[Ga>>2]|0;ve=+(c[4576+(z*192|0)+(c[b+19184>>2]<<2)>>2]|0)*48.0e3/+(c[4960+(c[b+19188>>2]<<2)>>2]<>2]|0;ve=+(c[4576+(z*192|0)+(Xc+-1<<6)+(c[b+19184>>2]<<2)>>2]|0)*144.0e3/+(c[4960+(c[b+19188>>2]<<2)>>2]<>3]=(ve+ge)/+(y|0)}y=(c[Ca>>2]|0)+1|0;c[Ca>>2]=y;ue=b+19248|0;z=c[ue>>2]|0;do if(!(z&2)){Xc=c[Wa>>2]|0;if((Xc|0)<1|(y|0)<(Xc|0)?(Ga=c[Ya>>2]|0,(Ga|0)<1|(y|0)<(Ga|0)):0)break;c[ue>>2]=z|2;if(!(c[$>>2]&32)){Ga=c[Ya>>2]|0;c[f>>2]=y;c[f+4>>2]=(Ga|0)>0?Ga:Xc;Lc(0,22720,f)}}while(0);if(c[T>>2]|0?(c[Ea>>2]|0)==3:0)Wc(b+9288|0,c[Aa>>2]|0,c[b+19352>>2]|0)|0;c[b+19236>>2]=Vc;do if((c[ue>>2]&1|0?(Aa=b+27320|0,Ea=b+27332|0,T=c[Ea>>2]|0,T|0):0)?(f=b+27328|0,(c[Ca>>2]|0)==(c[f>>2]|0)):0){y=b+27336|0;Ya=c[y>>2]|0;if((Ya|0)==(T|0)){z=b+27324|0;Wa=_(c[z>>2]|0,T)|0;Xc=c[b+27340>>2]|0;if(Xc){if(db(Aa,Xc+T|0)|0){we=c[y>>2]|0;nb=511}}else{we=T;nb=511}if((nb|0)==511?we>>>0>=2:0){Xc=c[z>>2]<<1;c[z>>2]=Xc;Ga=we>>>1;c[y>>2]=Ga;if(!Ga){xe=Xc;ye=0}else{Xc=c[Aa>>2]|0;Ga=0;do{c[Xc+(Ga<<2)>>2]=c[Xc+(Ga<<1<<2)>>2];Ga=Ga+1|0;ze=c[y>>2]|0}while(Ga>>>0>>0);xe=c[z>>2]|0;ye=ze}c[f>>2]=_(xe,ye)|0}if((c[f>>2]|0)!=(Wa|0))break;Ae=c[y>>2]|0;Be=c[Ea>>2]|0}else{Ae=Ya;Be=T}if(Ae>>>0>>0){c[(c[Aa>>2]|0)+(Ae<<2)>>2]=Vc;Ga=(c[y>>2]|0)+1|0;c[y>>2]=Ga;c[f>>2]=_(c[b+27324>>2]|0,Ga)|0}}while(0);Vc=a[W>>0]|0;if(Vc<<24>>24>0)a[W>>0]=Vc+-1<<24>>24;Vc=c[(c[U>>2]|0)+44>>2]|0;if(Vc|0)Ja[Vc&127](b);c[b+27400>>2]=1;c[b+27396>>2]=1;if(c[b+19180>>2]|0){Vc=c[Cc>>2]|0;Ae=c[Uc>>2]|0;Be=Ae+16|0;ye=((d[Vc>>0]<<8|d[Vc+1>>0])<<8|d[Vc+2>>0])<>>8&65535;c[Cc>>2]=Vc+(Be>>3);c[Uc>>2]=Be&7;c[b+27448>>2]=ye}ye=b+19164|0;t:do if((c[ye>>2]|0)<2){c[ye>>2]=2;Be=c[ba>>2]|0;if(!Be){Uc=c[aa>>2]|0;if(!Uc)break;Vc=c[O>>2]|0;if(((Vc^Uc)&-128e3|0)==0?!((Uc&192|0)==192^(Vc&192|0)==192):0)break;c[ue>>2]=c[ue>>2]|2;if(c[$>>2]&32|0)break;Vc=c[1719]|0;Uc=(Vc|0)==0;if((c[1734]|0)>-1){do if(Uc){Cc=a[6934]|0;a[6934]=Cc+255|Cc;Cc=c[1715]|0;if(!(Cc&8)){c[1717]=0;c[1716]=0;Ae=c[1726]|0;c[1722]=Ae;c[1720]=Ae;xe=Ae+(c[1727]|0)|0;c[1719]=xe;Ce=xe;De=Ae;break}else{c[1715]=Cc|32;break t}}else{Ce=Vc;De=c[1720]|0}while(0);if((Ce-De|0)>>>0<82){Ia[c[6896>>2]&127](6860,22885,82)|0;break}f=De;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22885,82)|0)>>>0<82)break;Ee=0;Fe=22967;Ge=c[1720]|0}else{Ee=82;Fe=22885;Ge=f}Wc(Ge|0,Fe|0,Ee|0)|0;c[1720]=(c[1720]|0)+Ee;break}else{do if(Uc){f=a[6934]|0;a[6934]=f+255|f;f=c[1715]|0;if(!(f&8)){c[1717]=0;c[1716]=0;y=c[1726]|0;c[1722]=y;c[1720]=y;Aa=y+(c[1727]|0)|0;c[1719]=Aa;He=Aa;Ie=y;break}else{c[1715]=f|32;break t}}else{He=Vc;Ie=c[1720]|0}while(0);if((He-Ie|0)>>>0<82){Ia[c[6896>>2]&127](6860,22885,82)|0;break}Vc=Ie;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22885,82)|0)>>>0<82)break;Je=0;Ke=22967;Le=c[1720]|0}else{Je=82;Ke=22885;Le=Vc}Wc(Le|0,Ke|0,Je|0)|0;c[1720]=(c[1720]|0)+Je;break}}Vc=c[O>>2]|0;if((Be|0)==(Vc|0)){c[ye>>2]=0;break}if(((Vc^Be)&-128e3|0)==0?!((Be&192|0)==192^(Vc&192|0)==192):0){c[ye>>2]=1;break}c[ue>>2]=c[ue>>2]|2;if(!(c[$>>2]&32)){Vc=c[1719]|0;Uc=(Vc|0)==0;if((c[1734]|0)>-1){do if(Uc){f=a[6934]|0;a[6934]=f+255|f;f=c[1715]|0;if(!(f&8)){c[1717]=0;c[1716]=0;y=c[1726]|0;c[1722]=y;c[1720]=y;Aa=y+(c[1727]|0)|0;c[1719]=Aa;Me=Aa;Ne=y;break}else{c[1715]=f|32;break t}}else{Me=Vc;Ne=c[1720]|0}while(0);if((Me-Ne|0)>>>0<71){Ia[c[6896>>2]&127](6860,22813,71)|0;break}Be=Ne;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22813,71)|0)>>>0<71)break;Oe=0;Pe=22884;Qe=c[1720]|0}else{Oe=71;Pe=22813;Qe=Be}Wc(Qe|0,Pe|0,Oe|0)|0;c[1720]=(c[1720]|0)+Oe;break}else{do if(Uc){Be=a[6934]|0;a[6934]=Be+255|Be;Be=c[1715]|0;if(!(Be&8)){c[1717]=0;c[1716]=0;f=c[1726]|0;c[1722]=f;c[1720]=f;y=f+(c[1727]|0)|0;c[1719]=y;Re=y;Se=f;break}else{c[1715]=Be|32;break t}}else{Re=Vc;Se=c[1720]|0}while(0);if((Re-Se|0)>>>0<71){Ia[c[6896>>2]&127](6860,22813,71)|0;break}Vc=Se;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,22813,71)|0)>>>0<71)break;Te=0;Ue=22884;Ve=c[1720]|0}else{Te=71;Ue=22813;Ve=Vc}Wc(Ve|0,Ue|0,Te|0)|0;c[1720]=(c[1720]|0)+Te;break}}}while(0);c[ba>>2]=c[O>>2];Y=1;i=e;return Y|0}O=c[(c[U>>2]|0)+44>>2]|0;if(O|0)Ja[O&127](b);a[W>>0]=0;W=b+27864|0;if(!(c[W>>2]|0))c[W>>2]=18;c[P>>2]=Q;c[R>>2]=S;Y=jb;i=e;return Y|0}function lb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=i;i=i+64|0;f=e+40|0;g=e+32|0;h=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+48|0;n=a+19168|0;c[n>>2]=4-(b>>>17&3);o=b>>>19;if(!(o&2)){p=(b>>>10&3)+6|0;q=1;r=1}else{s=o&1^1;p=(0-s&3)+(b>>>10&3)|0;q=0;r=s}s=a+19152|0;c[s>>2]=r;c[a+19156>>2]=q;q=a+19188|0;c[q>>2]=p;p=a+19180|0;c[p>>2]=b>>>16&1^1;r=b&61440;o=a+19184|0;c[o>>2]=r>>>12;t=b>>>9&1;u=a+19192|0;c[u>>2]=t;c[a+19196>>2]=b>>>8&1;v=b>>>6&3;c[a+19200>>2]=v;c[a+19204>>2]=b>>>4&3;c[a+19208>>2]=b>>>3&1;c[a+19212>>2]=b>>>2&1;c[a+19216>>2]=b&3;w=(r|0)==0;r=a+19260|0;c[r>>2]=w&1;x=a+19132|0;c[x>>2]=(v|0)==3?1:2;a:do if(w){v=a+19264|0;y=c[v>>2]|0;if((y|0)>=0){c[a+19220>>2]=t+y;break}y=c[d>>2]|0;c[d>>2]=y+1;if((y|0)>4){if(c[a+27564>>2]&32|0){z=0;i=e;return z|0}if((c[a+27560>>2]|0)<=2){z=0;i=e;return z|0}c[l>>2]=791;Lc(0,20512,l);z=0;i=e;return z|0}b:do if(!(c[a+27472>>2]&12))if(!(c[a+27564>>2]&32)){c[k>>2]=704;Lc(0,20635,k);A=20}else A=20;else{y=a+27452|0;B=Na[c[(c[y>>2]|0)+12>>2]&127](a,m)|0;c:do if((B|0)>=1){C=c[y>>2]|0;D=4;while(1){E=Na[c[C+16>>2]&127](a,m)|0;if((E|0)<1){F=E;A=21;break c}if(!((c[m>>2]^b)&-66320)){A=17;break}G=D+1|0;C=c[y>>2]|0;if((G|0)>=3460){A=19;break}else D=G}if((A|0)==17){Na[c[(c[y>>2]|0)+28>>2]&127](a,D+1|0)|0;E=D+-3|0;c[a+19220>>2]=E;H=E;break}else if((A|0)==19){Na[c[C+28>>2]&127](a,G)|0;A=20;break b}}else{F=B;A=21}while(0);d:do if((A|0)==21)switch(F|0){case 1:{H=c[a+19220>>2]|0;break d;break}case -10:{z=-10;i=e;return z|0}default:{I=F;break b}}while(0);B=H-(c[u>>2]|0)|0;c[v>>2]=B;if(c[a+27564>>2]&32|0)break a;if((c[a+27560>>2]|0)<=1)break a;c[j>>2]=B;Lc(0,20764,j);break a}while(0);if((A|0)==20)I=0;if(c[a+27564>>2]&32|0){z=I;i=e;return z|0}if((c[a+27560>>2]|0)<=2){z=I;i=e;return z|0}c[h>>2]=806;Lc(0,20798,h);z=I;i=e;return z|0}while(0);I=c[n>>2]|0;if((I|0)!=3){if(c[a+27564>>2]&32|0){z=0;i=e;return z|0}c[g>>2]=866;c[g+4>>2]=I;Lc(0,20910,g);z=0;i=e;return z|0}g=c[s>>2]|0;c[a+19172>>2]=g|0?576:1152;c[a+19176>>2]=108;s=(c[x>>2]|0)==1;x=(g|0)==0?(s?17:32):s?9:17;s=a+19352|0;c[s>>2]=x;if(c[p>>2]|0)c[s>>2]=x|2;if(!(c[r>>2]|0)){r=(((c[4576+(g*192|0)+128+(c[o>>2]<<2)>>2]|0)*144e3|0)/(c[4960+(c[q>>2]<<2)>>2]<>2]|0)|0;c[a+19220>>2]=r;J=r}else J=c[a+19220>>2]|0;if((J|0)<=3456){z=1;i=e;return z|0}if(c[a+27564>>2]&32|0){z=0;i=e;return z|0}a=J+4-(c[u>>2]|0)|0;c[f>>2]=872;c[f+4>>2]=a;Lc(0,21001,f);z=0;i=e;return z|0}function mb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c[b+27388>>2]=1;c[b+27344>>2]=0;c[b+27360>>2]=0;c[b+27352>>2]=0;c[b+27356>>2]=0;c[b+9264>>2]=0;c[b+9268>>2]=0;c[b+9276>>2]=0;c[b+9280>>2]=0;c[b+28072>>2]=0;c[b+19256>>2]=0;c[b+19100>>2]=1;c[b+19104>>2]=1;e=b+28012|0;a[e>>0]=0;f=b+28016|0;g=f;i=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(i|0));c[b+27364>>2]=0;c[b+27384>>2]=0;c[b+27380>>2]=0;j=b+27484|0;c[b+27468>>2]=0;c[b+28084>>2]=0;c[b+28088>>2]=0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[b+27868>>2]=1;c[b+27864>>2]=0;j=b+27560|0;if(!d){h[b+27832>>3]=1.0;c[b+27564>>2]=32832;k=b+27568|0;c[j>>2]=0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[b+27840>>2]=1024;k=b+27844|0;c[k>>2]=1e3;l=b+27848|0;c[l>>2]=4;m=b+27588|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;a[m+4>>0]=0;a[m+5>>0]=0;a[b+27594>>0]=1;m=b+27606|0;g=b+27595|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27618|0;g=b+27607|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27630|0;g=b+27619|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27642|0;g=b+27631|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27654|0;g=b+27643|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27666|0;g=b+27655|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27678|0;g=b+27667|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27690|0;g=b+27679|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27702|0;g=b+27691|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27714|0;g=b+27703|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27726|0;g=b+27715|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27738|0;g=b+27727|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27750|0;g=b+27739|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27762|0;g=b+27751|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27774|0;g=b+27763|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27786|0;g=b+27775|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27798|0;g=b+27787|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27810|0;g=b+27799|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27822|0;g=b+27811|0;i=g+11|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));a[m>>0]=1;m=b+27823|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;a[m+4>>0]=0;c[b+27852>>2]=5;c[b+27856>>2]=4096;n=l;o=k;p=5;q=4096}else{Wc(j|0,d|0,304)|0;n=b+27848|0;o=b+27844|0;p=c[b+27852>>2]|0;q=c[b+27856>>2]|0}d=b+27516|0;c[b+27544>>2]=p;c[b+27540>>2]=q;c[b+27552>>2]=0;c[b+27548>>2]=0;c[b+19160>>2]=0;c[b+27452>>2]=5340;c[b+27472>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[b+27456>>2]=-1;c[b+27396>>2]=0;c[b+27400>>2]=0;c[b+27880>>2]=0;c[b+27392>>2]=0;c[b+19232>>2]=-1;c[b+19236>>2]=-1;c[b+19240>>2]=-1;c[b+19248>>2]=1;a[b+19252>>0]=0;c[b+19244>>2]=0;c[b+27876>>2]=0;c[b+27308>>2]=0;c[b+27312>>2]=0;c[b+19228>>2]=0;c[b+27316>>2]=0;c[b+19328>>2]=0;c[b+19332>>2]=-1;c[b+19220>>2]=0;c[b+19344>>2]=0;h[b+19336>>3]=0.0;c[b+19224>>2]=0;h[b+19296>>3]=-1.0;c[b+19304>>2]=-1;c[b+19308>>2]=-1;d=b+19312|0;c[b+19348>>2]=0;c[b+27404>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b+27412>>2]=0-(c[n>>2]|0);c[b+19164>>2]=0;c[b+27408>>2]=-1;c[b>>2]=1;c[b+4>>2]=0;c[b+27416>>2]=-1;n=b+27420|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;c[n+24>>2]=0;c[b+9272>>2]=1;vb(b);a[e>>0]=0;g=f;i=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(i|0));c[b+9324>>2]=0;c[b+19180>>2]=0;c[b+19264>>2]=-1;c[b+19116>>2]=0;c[b+19124>>2]=0;c[b+19128>>2]=0;g=b+27320|0;c[g>>2]=0;c[b+27324>>2]=1;i=b+27328|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;i=c[o>>2]|0;if((i|0)>-1){c[b+27340>>2]=0;db(g,i)|0;return}else{o=0-i|0;c[b+27340>>2]=o;db(g,o)|0;return}}function nb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+16|0;d=b;e=c[a+27392>>2]|0;f=a+27388|0;g=a+27356|0;if((c[f>>2]|0)==0?(h=c[g>>2]|0,h>>>0>>0):0){c[a+27864>>2]=6;if(c[a+27564>>2]&32|0){j=-1;i=b;return j|0}c[d>>2]=186;c[d+4>>2]=h;c[d+8>>2]=e;Lc(0,22968,d);j=-1;i=b;return j|0}d=a+27360|0;h=c[d>>2]|0;do if(h)if((c[g>>2]|0)==(e|0)){c[g>>2]=e;k=a+27344|0;c[k>>2]=0;l=h;m=k;break}else{Nc(h);c[d>>2]=0;n=9;break}else n=9;while(0);if((n|0)==9){c[g>>2]=e;g=a+27344|0;c[g>>2]=0;n=Mc(e+15|0)|0;c[d>>2]=n;if(!n){c[a+27864>>2]=7;j=-1;i=b;return j|0}else{l=n;m=g}}g=l&15;c[m>>2]=(g|0)==0?l:l+16+(0-g)|0;c[f>>2]=1;c[a+27352>>2]=0;j=0;i=b;return j|0}function ob(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=c[a+19100>>2]|0;switch(b|0){case 10:{d=17408;break}case 6:case 5:{e=3;break}default:if((b|0)==8)e=3;else d=0}if((e|0)==3)d=4352;b=(d>>>0<4352?4352:d)|15;d=a+9264|0;f=c[d>>2]|0;if(f){g=a+9268|0;if((c[g>>2]|0)==(b|0)){h=g;i=f}else{Nc(f);c[d>>2]=0;e=7}}else e=7;do if((e|0)==7){f=Mc(b)|0;c[d>>2]=f;if(!f){j=-1;return j|0}else{h=a+9268|0;i=f;break}}while(0);c[h>>2]=b;b=i&15;f=(b|0)==0?i:i+16+(0-b)|0;c[a+9232>>2]=f;c[a+9236>>2]=f+544;b=f+1088|0;c[a+9240>>2]=b;c[a+9244>>2]=f+1632;c[a+9248>>2]=f;c[a+9252>>2]=b;c[a+9256>>2]=f+2176;c[a+9260>>2]=f+3264;f=a+9276|0;b=c[f>>2]|0;if(b){i=a+9280|0;if((c[i>>2]|0)==2176){k=b;l=i}else{Nc(b);c[f>>2]=0;e=12}}else e=12;do if((e|0)==12){b=Mc(2176)|0;c[f>>2]=b;if(!b){j=-1;return j|0}else{k=b;l=a+9280|0;break}}while(0);c[l>>2]=2176;c[a+9284>>2]=k;k=a+28072|0;do if(!(c[k>>2]|0)){l=Mc(9279)|0;c[k>>2]=l;if(!l){j=-1;return j|0}else{f=l&63;e=(f|0)==0?l:l+64+(0-f)|0;c[a+28076>>2]=e;c[a+28080>>2]=e+4608;break}}while(0);Tc(c[d>>2]|0,0,c[h>>2]|0)|0;j=0;return j|0}function pb(d){d=d|0;var e=0,f=0,g=0,i=0,j=0;c[d+27352>>2]=0;c[d+27304>>2]=0;e=d+23328|0;c[d+27296>>2]=e;c[d+27300>>2]=e;c[d+19356>>2]=0;Tc(c[d+9264>>2]|0,0,c[d+9268>>2]|0)|0;Tc(d+19360|0,0,7936)|0;e=d+9288|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;b[e+32>>1]=0;Tc(d+8|0,0,9224)|0;c[d+27452>>2]=5340;c[d+27472>>2]=0;e=d+27516|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[d+27456>>2]=-1;c[d+27396>>2]=0;c[d+27400>>2]=0;c[d+27880>>2]=0;c[d+27392>>2]=0;c[d+19232>>2]=-1;c[d+19236>>2]=-1;c[d+19240>>2]=-1;c[d+19248>>2]=1;a[d+19252>>0]=0;c[d+19244>>2]=0;c[d+27876>>2]=0;c[d+27308>>2]=0;c[d+27312>>2]=0;c[d+19228>>2]=0;c[d+27316>>2]=0;c[d+19328>>2]=0;c[d+19332>>2]=-1;c[d+19220>>2]=0;c[d+19344>>2]=0;h[d+19336>>3]=0.0;c[d+19224>>2]=0;h[d+19296>>3]=-1.0;c[d+19304>>2]=-1;c[d+19308>>2]=-1;e=d+19312|0;c[d+19348>>2]=0;c[d+27404>>2]=0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[d+27412>>2]=0-(c[d+27848>>2]|0);c[d+19164>>2]=0;c[d+27408>>2]=-1;c[d>>2]=1;c[d+4>>2]=0;c[d+27416>>2]=-1;e=d+27420|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[d+9272>>2]=1;vb(d);a[d+28012>>0]=0;e=d+28016|0;f=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d+9324>>2]=0;c[d+19180>>2]=0;c[d+19264>>2]=-1;e=d+19256|0;f=c[e>>2]|0;if(!f){g=d+27336|0;c[g>>2]=0;i=d+27324|0;c[i>>2]=1;j=d+27328|0;c[j>>2]=0;return 0}Nc(f);c[e>>2]=0;g=d+27336|0;c[g>>2]=0;i=d+27324|0;c[i>>2]=1;j=d+27328|0;c[j>>2]=0;return 0}function qb(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+27360|0;d=c[b>>2]|0;if(d|0)Nc(d);c[b>>2]=0;b=a+9264|0;d=c[b>>2]|0;if(d|0)Nc(d);c[b>>2]=0;c[a+9268>>2]=0;b=a+9276|0;d=c[b>>2]|0;if(d|0)Nc(d);c[b>>2]=0;c[a+9280>>2]=0;b=c[a+28072>>2]|0;if(b|0)Nc(b);b=a+19256|0;d=c[b>>2]|0;if(d|0){Nc(d);c[b>>2]=0}b=a+27320|0;if(c[a+27332>>2]|0?(d=c[b>>2]|0,d|0):0)Nc(d);c[b>>2]=0;c[a+27324>>2]=1;b=a+27328|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;vb(a);b=c[a+28088>>2]|0;if(b|0){d=a+28084|0;Ja[b&127](c[d>>2]|0);c[d>>2]=0}d=a+27552|0;b=c[d>>2]|0;if(!b){c[d>>2]=0;e=a+27548|0;c[e>>2]=0;return}else f=b;do{b=f;f=c[f+12>>2]|0;Nc(c[b>>2]|0);Nc(b)}while((f|0)!=0);c[d>>2]=0;e=a+27548|0;c[e>>2]=0;return}function rb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;c[f>>2]=0;g=b+27336|0;i=c[g>>2]|0;if(!i){if(!(c[b+27564>>2]&512)){c[b+27312>>2]=0;c[b+27308>>2]=0;j=0;return j|0}k=b+19244|0;l=c[k>>2]|0;c[f>>2]=0;m=c[b+19256>>2]|0;if((m|0?(n=c[b+19328>>2]|0,(n|0)>0):0)?(o=b+27456|0,(c[o>>2]|0)>0):0){p=+(n|0);n=~~(+(e|0)*100.0/p);q=(n|0)<0?0:n;n=(q|0)>99?99:q;c[f>>2]=~~(p*.01*+(n|0));q=b+19248|0;c[q>>2]=c[q>>2]&-2;a[b+19252>>0]=1;j=~~(+(d[m+n>>0]|0)*.00390625*+(c[o>>2]|0));return j|0}p=+h[b+19336>>3];if(!(p>0.0)){j=l;return j|0}l=b+19248|0;c[l>>2]=c[l>>2]&-2;a[b+19252>>0]=1;c[f>>2]=e;j=~~(+(c[k>>2]|0)+p*+(e|0));return j|0}k=b+27324|0;l=c[k>>2]|0;o=(e|0)/(l|0)|0;if(o>>>0>>0){r=l;s=o}else{do if((c[b+27564>>2]&512|0)!=0?(e-(_(l,i+-1|0)|0)|0)>>>0>10:0){o=b+19244|0;n=c[o>>2]|0;c[f>>2]=0;m=c[b+19256>>2]|0;if(((m|0)!=0?(q=c[b+19328>>2]|0,(q|0)>0):0)?(t=b+27456|0,(c[t>>2]|0)>0):0){p=+(q|0);q=~~(+(e|0)*100.0/p);u=(q|0)<0?0:q;q=(u|0)>99?99:u;c[f>>2]=~~(p*.01*+(q|0));u=b+19248|0;c[u>>2]=c[u>>2]&-2;a[b+19252>>0]=1;v=~~(+(d[m+q>>0]|0)*.00390625*+(c[t>>2]|0))}else{p=+h[b+19336>>3];if(p>0.0){t=b+19248|0;c[t>>2]=c[t>>2]&-2;a[b+19252>>0]=1;c[f>>2]=e;v=~~(+(c[o>>2]|0)+p*+(e|0))}else v=n}if((v|0)>(c[o>>2]|0)){j=v;return j|0}else{w=c[k>>2]|0;x=c[g>>2]|0;break}}else{w=l;x=i}while(0);r=w;s=x+-1|0}c[f>>2]=_(r,s)|0;r=c[(c[b+27320>>2]|0)+(s<<2)>>2]|0;s=b+19248|0;c[s>>2]=c[s>>2]|1;j=r;return j|0}function sb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+32|0;d=b+16|0;e=b+8|0;f=b;g=a+19160|0;h=c[g>>2]|0;if(h){c[f>>2]=740;c[f+4>>2]=h;Lc(0,23059,f);f=c[g>>2]|0;c[a+27432>>2]=0;if(!f)j=c[a+27436>>2]|0;else{c[e>>2]=740;c[e+4>>2]=f;Lc(0,23059,e);j=0}}else{c[a+27432>>2]=c[a+27428>>2];j=c[a+27436>>2]|0}c[a+27440>>2]=j;j=c[a+27416>>2]|0;if((j|0)<=0){c[a+27444>>2]=0;i=b;return}e=_(c[a+19172>>2]|0,j)|0;j=c[g>>2]|0;if(!j)k=e;else{c[d>>2]=740;c[d+4>>2]=j;Lc(0,23059,d);k=0}c[a+27444>>2]=k;i=b;return}function tb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=i;i=i+32|0;e=d+24|0;f=d+16|0;g=d+8|0;h=d;j=a+27404|0;c[j>>2]=b;do if((c[a+27564>>2]&64|0)!=0?(c[a+27416>>2]|0)>0:0){k=a+27432|0;l=a+19160|0;if(!(c[l>>2]|0))m=(c[k>>2]|0)/(c[a+19172>>2]|0)|0;else{c[h>>2]=802;Lc(0,23157,h);m=0}if((m|0)<(b|0))c[a+27420>>2]=0;else{c[j>>2]=m;n=c[k>>2]|0;k=c[l>>2]|0;if(!k)o=_(c[a+19172>>2]|0,m)|0;else{c[g>>2]=760;c[g+4>>2]=k;Lc(0,23059,g);o=0}c[a+27420>>2]=n-o}n=a+27440|0;k=c[n>>2]|0;if((k|0)<=0){c[a+27408>>2]=-1;c[a+27424>>2]=0;break}do if(c[l>>2]|0){c[f>>2]=802;Lc(0,23157,f);p=c[n>>2]|0;q=c[l>>2]|0;c[a+27408>>2]=0;if(!q){r=c[a+19172>>2]|0;s=p;t=0;u=17;break}else{c[e>>2]=760;c[e+4>>2]=q;Lc(0,23059,e);v=p;w=0;break}}else{p=c[a+19172>>2]|0;q=(k|0)/(p|0)|0;c[a+27408>>2]=q;r=p;s=k;t=q;u=17}while(0);if((u|0)==17){v=s;w=_(r,t)|0}c[a+27424>>2]=v-w}else u=21;while(0);if((u|0)==21){c[a+27424>>2]=0;c[a+27420>>2]=0;c[a+27408>>2]=-1}u=c[a+19168>>2]|0;w=c[a+27848>>2]|0;v=(u|0)==3&(w|0)<1?1:w;c[a+27412>>2]=(c[j>>2]|0)-((u|0)!=3&(v|0)>2?2:v);i=d;return}function ub(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,j=0,k=0,l=0.0,m=0.0;b=i;i=i+16|0;d=b;switch(c[a+27572>>2]|0){case 0:{e=-1.0;f=1.0;break}case 2:{j=(c[a+19308>>2]|0)!=-1&1;k=3;break}default:{j=0;k=3}}if((k|0)==3)if((c[a+19304+(j<<2)>>2]|0)==-1){e=-1.0;f=1.0}else{l=+g[a+19320+(j<<2)>>2];m=+g[a+19312+(j<<2)>>2];if((c[a+27564>>2]&32|0)==0?(c[a+27560>>2]|0)>1:0){h[d>>3]=m;Lc(0,23250,d)}e=l;f=+P(10.0,+(m*.05))}m=+h[a+27832>>3]*f;f=m*e>1.0?1.0/e:m;d=a+19296|0;if(!(f!=+h[d>>3])?(c[a+27868>>2]|0)==0:0){i=b;return}h[d>>3]=f;d=c[a+19128>>2]|0;if(!d){i=b;return}Ja[d&127](a);i=b;return}function vb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a+28064|0;d=a+28068|0;if(c[d>>2]|0){e=0;do{f=c[b>>2]|0;g=f+(e*36|0)+16|0;h=c[g>>2]|0;if(h|0)Nc(h);c[g>>2]=0;c[f+(e*36|0)+20>>2]=0;c[f+(e*36|0)+24>>2]=0;g=f+(e*36|0)+4|0;h=c[g>>2]|0;if(h|0)Nc(h);c[g>>2]=0;c[f+(e*36|0)+8>>2]=0;c[f+(e*36|0)+12>>2]=0;g=c[f+(e*36|0)+32>>2]|0;if(g|0)Nc(g);e=e+1|0}while(e>>>0<(c[d>>2]|0)>>>0)}Nc(c[b>>2]|0);c[b>>2]=0;c[d>>2]=0;d=a+28040|0;b=a+28044|0;if(c[b>>2]|0){e=0;do{g=c[d>>2]|0;f=g+(e<<5)+20|0;h=c[f>>2]|0;if(h|0)Nc(h);c[f>>2]=0;c[g+(e<<5)+24>>2]=0;c[g+(e<<5)+28>>2]=0;f=g+(e<<5)+8|0;h=c[f>>2]|0;if(h|0)Nc(h);c[f>>2]=0;c[g+(e<<5)+12>>2]=0;c[g+(e<<5)+16>>2]=0;e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Nc(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;b=a+28056|0;d=a+28060|0;if(c[d>>2]|0){e=0;do{g=c[b>>2]|0;f=g+(e<<5)+20|0;h=c[f>>2]|0;if(h|0)Nc(h);c[f>>2]=0;c[g+(e<<5)+24>>2]=0;c[g+(e<<5)+28>>2]=0;f=g+(e<<5)+8|0;h=c[f>>2]|0;if(h|0)Nc(h);c[f>>2]=0;c[g+(e<<5)+12>>2]=0;c[g+(e<<5)+16>>2]=0;e=e+1|0}while(e>>>0<(c[d>>2]|0)>>>0)}Nc(c[b>>2]|0);c[b>>2]=0;c[d>>2]=0;d=a+28048|0;b=a+28052|0;if(!(c[b>>2]|0)){i=c[d>>2]|0;Nc(i);c[d>>2]=0;c[b>>2]=0;return}else j=0;do{a=c[d>>2]|0;e=a+(j<<5)+20|0;g=c[e>>2]|0;if(g|0)Nc(g);c[e>>2]=0;c[a+(j<<5)+24>>2]=0;c[a+(j<<5)+28>>2]=0;e=a+(j<<5)+8|0;g=c[e>>2]|0;if(g|0)Nc(g);c[e>>2]=0;c[a+(j<<5)+12>>2]=0;c[a+(j<<5)+16>>2]=0;j=j+1|0}while(j>>>0<(c[b>>2]|0)>>>0);i=c[d>>2]|0;Nc(i);c[d>>2]=0;c[b>>2]=0;return}function wb(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=(f|0)==0;if(g)h=0;else{i=0;j=f;while(1){k=((d[e+i>>0]|0)>>>7&255)+j|0;i=i+1|0;if((i|0)==(f|0)){h=k;break}else j=k}}j=h+1|0;if(!b)return;i=b+4|0;k=c[i>>2]|0;do if(j){l=c[b>>2]|0;if((k|0)==(j|0)){m=b;n=l}else{if(!l)o=Mc(j)|0;else o=Oc(l,j)|0;if(o|0){c[b>>2]=o;c[i>>2]=j;m=b;n=o;break}l=c[b>>2]|0;if(l|0)Nc(l);c[b>>2]=0;c[i>>2]=0;c[b+8>>2]=0;return}}else{if(k|0?(l=c[b>>2]|0,l|0):0)Nc(l);c[b>>2]=0;c[i>>2]=0;c[b+8>>2]=0;m=b;n=0}while(0);if(g)p=n;else{g=0;i=n;while(1){n=e+g|0;k=a[n>>0]|0;if(k<<24>>24>-1){a[i>>0]=k;q=i+1|0}else{a[i>>0]=(k&255)>>>6|192;a[i+1>>0]=(d[n>>0]|0)&63|128;q=i+2|0}g=g+1|0;if((g|0)==(f|0))break;else i=q}p=c[m>>2]|0}a[p+h>>0]=0;c[b+8>>2]=j;return}function xb(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;h=i;i=i+32|0;j=h;k=h+16|0;l=h+12|0;c[k>>2]=e;c[l>>2]=f;f=(yb(k,l)|0)==-1;e=f&1;m=e^1;n=c[l>>2]|0;l=n&-2;a:do if(l){o=c[k>>2]|0;p=f?3:2;q=0;r=0;while(1){s=(d[o+(q+e)>>0]|0)<<8;t=s|(d[o+(q+m)>>0]|0);if((s&64512|0)==55296){if((q+3|0)>>>0>=n>>>0)break;if((a[o+(p+q)>>0]&-4)<<24>>24!=-36)break;u=4;v=q+2|0}else{u=t>>>0<128?1:t>>>0<2048?2:3;v=q}s=u+r|0;w=v+2|0;if(w>>>0>>0){q=w;r=s}else{x=s;y=l;break a}}if(!g){x=r;y=q}else{c[j>>2]=1065;c[j+4>>2]=q;c[j+8>>2]=t;Lc(0,23403,j);x=r;y=q}}else{x=0;y=0}while(0);j=x+1|0;if(!b){i=h;return}x=b+4|0;t=c[x>>2]|0;do if(j){g=c[b>>2]|0;if((t|0)==(j|0)){z=b;A=j;B=g}else{if(!g)C=Mc(j)|0;else C=Oc(g,j)|0;if(C|0){c[b>>2]=C;c[x>>2]=j;z=b;A=j;B=C;break}g=c[b>>2]|0;if(g|0)Nc(g);c[b>>2]=0;c[x>>2]=0;c[b+8>>2]=0;i=h;return}}else{if(t|0?(g=c[b>>2]|0,g|0):0)Nc(g);c[b>>2]=0;c[x>>2]=0;c[b+8>>2]=0;z=b;A=0;B=0}while(0);if(!y){D=A;E=B}else{A=0;t=B;while(1){B=c[k>>2]|0;C=d[B+(A+e)>>0]|0;j=C<<8;g=a[B+(A+m)>>0]|0;l=g&255;v=j|l;do if((j&64512|0)!=55296){if(v>>>0<128){a[t>>0]=g;F=A;G=t+1|0;break}if(v>>>0<2048){a[t>>0]=v>>>6|192;a[t+1>>0]=l&63|128;F=A;G=t+2|0;break}else{a[t>>0]=C>>>4|224;a[t+1>>0]=v>>>6&63|128;a[t+2>>0]=l&63|128;F=A;G=t+3|0;break}}else{u=A+2|0;n=(d[B+(u+m)>>0]|0|v<<10&1047552|(d[B+(u+e)>>0]|0)<<8&768)+65536|0;a[t>>0]=n>>>18|240;a[t+1>>0]=n>>>12&63|128;a[t+2>>0]=n>>>6&63|128;a[t+3>>0]=n&63|128;F=u;G=t+4|0}while(0);A=F+2|0;if(A>>>0>=y>>>0)break;else t=G}D=c[x>>2]|0;E=c[z>>2]|0}a[E+(D+-1)>>0]=0;c[b+8>>2]=c[x>>2];i=h;return}function yb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[d>>2]|0;if(e>>>0<2)return 0;f=c[b>>2]|0;switch(a[f>>0]|0){case -1:{g=(a[f+1>>0]|0)==-2;if(g)h=g<<31>>31;else return 0;break}case -2:{if((a[f+1>>0]|0)==-1)h=1;else return 0;break}default:return 0}c[b>>2]=f+2;c[d>>2]=e+-2;e=yb(b,d)|0;return ((e|0)==0?h:e)|0}function zb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;f=e+1|0;if(!b)return;g=b+4|0;h=c[g>>2]|0;do if(f){i=c[b>>2]|0;if((h|0)==(f|0)){j=b;k=i}else{if(!i)l=Mc(f)|0;else l=Oc(i,f)|0;if(l|0){c[b>>2]=l;c[g>>2]=f;j=b;k=l;break}i=c[b>>2]|0;if(i|0)Nc(i);c[b>>2]=0;c[g>>2]=0;c[b+8>>2]=0;return}}else{if(h|0?(i=c[b>>2]|0,i|0):0)Nc(i);c[b>>2]=0;c[g>>2]=0;c[b+8>>2]=0;j=b;k=0}while(0);Wc(k|0,d|0,e|0)|0;a[(c[j>>2]|0)+e>>0]=0;c[b+8>>2]=f;return} +function Ab(e,f){e=e|0;f=f|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Pc=0,Qc=0,Rc=0,Sc=0,Uc=0,Vc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0.0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0;j=i;i=i+704|0;k=j+536|0;l=j+528|0;m=j+520|0;n=j+512|0;o=j+504|0;p=j+496|0;q=j+488|0;r=j+480|0;s=j+472|0;t=j+464|0;u=j+440|0;v=j+432|0;w=j+424|0;x=j+416|0;y=j+408|0;z=j+400|0;A=j+392|0;B=j+384|0;C=j+376|0;D=j+368|0;E=j+360|0;F=j+352|0;G=j+344|0;H=j+336|0;I=j+328|0;J=j+320|0;K=j+312|0;L=j+304|0;M=j+296|0;N=j+288|0;O=j+280|0;P=j+272|0;Q=j+264|0;R=j+256|0;S=j+248|0;T=j+240|0;U=j+232|0;V=j+224|0;W=j+216|0;X=j+208|0;Y=j+200|0;Z=j+192|0;_=j+184|0;$=j+176|0;aa=j+168|0;ba=j+160|0;ca=j+152|0;da=j+144|0;ea=j+136|0;fa=j+128|0;ga=j+120|0;ha=j+112|0;ia=j+96|0;ja=j+88|0;ka=j+80|0;la=j+72|0;ma=j+64|0;na=j+40|0;oa=j+24|0;pa=j;qa=j+584|0;ra=j+552|0;sa=j+696|0;ta=j+544|0;ua=f&255;va=f&255;if((va|0)==255){wa=0;i=j;return wa|0}f=e+27452|0;xa=Ia[c[(c[f>>2]|0)+24>>2]&127](e,sa,6)|0;if((xa|0)<0){wa=xa;i=j;return wa|0}xa=a[sa>>0]|0;ya=xa&255;if(xa<<24>>24==-1){wa=0;i=j;return wa|0}xa=a[sa+1>>0]|0;za=a[sa+2>>0]|0;Aa=a[sa+3>>0]|0;Ba=a[sa+4>>0]|0;Ca=a[sa+5>>0]|0;if((Aa|za|Ba|Ca)<<24>>24<0){if(c[e+27564>>2]&32|0){wa=0;i=j;return wa|0}c[pa>>2]=702;c[pa+4>>2]=za&255;c[pa+8>>2]=Aa&255;c[pa+12>>2]=Ba&255;c[pa+16>>2]=Ca&255;Lc(0,23496,pa);wa=0;i=j;return wa|0}pa=(Aa&255)<<14|(za&255)<<21|(Ba&255)<<7|Ca&255;Ca=e+27560|0;Ba=e+27564|0;za=c[Ba>>2]|0;if((za&32|0)==0?(c[Ca>>2]|0)>1:0){c[oa>>2]=va;c[oa+4>>2]=ya;c[oa+8>>2]=pa;Lc(0,23622,oa);Da=c[Ba>>2]|0}else Da=za;if((Da&8192|0)==0?(za=xa&255,!((va+-2|0)>>>0>2|(za&15|0)!=0)):0){oa=e+28012|0;a[oa>>0]=ua;ua=Mc(pa+1|0)|0;if(!ua){if(!(Da&32)){c[k>>2]=940;c[k+4>>2]=pa;Lc(0,26653,k)}k=Na[c[(c[f>>2]|0)+20>>2]&127](e,pa)|0;wa=(k|0)<0?k:0;i=j;return wa|0}k=Ia[c[(c[f>>2]|0)+24>>2]&127](e,ua,pa)|0;a:do if((k|0)<=0)if((pa|0)!=0?(k|0)!=-10&(c[Ba>>2]&32|0)==0:0){c[l>>2]=932;Lc(0,26562,l);Ea=k}else Ea=k;else{a[ua+pa>>0]=0;do if(!(za&64))Fa=0;else{ya=a[ua>>0]|0;Aa=ya&255;if((va|0)==3){Fa=d[ua+1>>0]<<16|Aa<<24|d[ua+2>>0]<<8|d[ua+3>>0];break}sa=a[ua+1>>0]|0;Ga=sa&255;Ha=a[ua+2>>0]|0;Ja=Ha&255;Ka=a[ua+3>>0]|0;La=Ka&255;if((sa|ya|Ha|Ka)<<24>>24>=0){Fa=Ga<<14|Aa<<21|Ja<<7|La;break}if(c[Ba>>2]&32|0){Ea=0;break a}c[na>>2]=745;c[na+4>>2]=Aa;c[na+8>>2]=Ga;c[na+12>>2]=Ja;c[na+16>>2]=La;Lc(0,23706,na);Ea=0;break a}while(0);a[ta+4>>0]=0;La=pa+-10|0;b:do if(Fa>>>0>>0){Ja=za&128;Ga=e+28048|0;Aa=e+28052|0;Ka=e+28040|0;Ha=e+28044|0;ya=ra+20|0;sa=ra+8|0;Ma=ra+16|0;Pa=ra+8|0;Qa=ra+28|0;Ra=e+28056|0;Sa=e+28060|0;Ta=ra+20|0;Ua=ra+8|0;Va=ra+16|0;Wa=ra+28|0;Xa=e+28064|0;Ya=e+28068|0;Za=e+27560|0;_a=(va|0)==3;$a=ra+24|0;ab=ra+12|0;bb=qa+4|0;cb=qa+8|0;db=qa+44|0;eb=qa+76|0;fb=qa+104|0;gb=qa+108|0;hb=qa+100|0;ib=ra+24|0;jb=ra+12|0;kb=qa+4|0;lb=qa+8|0;mb=qa+44|0;nb=qa+76|0;ob=qa+104|0;pb=qa+108|0;qb=qa+100|0;rb=Fa;c:while(1){sb=(a[oa>>0]|0)==2;tb=sb?3:4;ub=0;do{vb=a[ua+(ub+rb)>>0]|0;ub=ub+1|0;if(!((vb+-48&255)<10|(vb+-65&255)<26))break b}while((ub|0)<(tb|0));ub=ua+rb|0;do if(!(ub&3))if(a[ub>>0]|0){if(sb){wb=ub;xb=ta;yb=tb;zb=60;break}else{Ab=tb;Cb=ta;Db=ub}while(1){vb=c[Db>>2]|0;if((vb&-2139062144^-2139062144)&vb+-16843009|0){zb=57;break}c[Cb>>2]=vb;vb=Ab+-4|0;Eb=Db+4|0;Fb=Cb+4|0;if(vb>>>0>3){Ab=vb;Cb=Fb;Db=Eb}else{Gb=vb;Hb=Fb;Ib=Eb;zb=59;break}}if((zb|0)==57){zb=0;wb=Db;xb=Cb;yb=Ab;zb=60;break}else if((zb|0)==59){zb=0;if(!Gb){Jb=Hb;Kb=0;break}else{wb=Ib;xb=Hb;yb=Gb;zb=60;break}}}else{Jb=ta;Kb=tb}else{wb=ub;xb=ta;yb=tb;zb=60}while(0);d:do if((zb|0)==60)while(1){zb=0;ub=a[wb>>0]|0;a[xb>>0]=ub;if(!(ub<<24>>24)){Jb=xb;Kb=yb;break d}yb=yb+-1|0;ub=xb+1|0;if(!yb){Jb=ub;Kb=0;break}else{wb=wb+1|0;xb=ub;zb=60}}while(0);Tc(Jb|0,0,Kb|0)|0;a[ta+tb>>0]=0;ub=tb+rb|0;Eb=ua+ub|0;Fb=a[Eb>>0]|0;vb=Fb&255;do if((a[oa>>0]|0)==2)Lb=d[Eb+1>>0]<<8|vb<<16|d[Eb+2>>0];else{if(_a){Lb=d[Eb+1>>0]<<16|vb<<24|d[Eb+2>>0]<<8|d[Eb+3>>0];break}Mb=a[Eb+1>>0]|0;Nb=a[Eb+2>>0]|0;Ob=a[Eb+3>>0]|0;if((Mb|Fb|Nb|Ob)<<24>>24<0){zb=68;break c}Lb=(Mb&255)<<14|vb<<21|(Nb&255)<<7|Ob&255}while(0);if((c[Ba>>2]&32|0)==0?(c[Ca>>2]|0)>2:0){c[la>>2]=ta;c[la+4>>2]=Lb;Lc(0,23917,la)}vb=ub+tb|0;Fb=vb+Lb|0;if(Fb>>>0>pa>>>0){zb=74;break}if((d[oa>>0]|0)>2){Pb=d[ua+vb>>0]<<8|d[ua+(vb+1)>>0];Qb=vb+2|0;Rb=Fb+2|0}else{Pb=0;Qb=vb;Rb=Fb}do if(sb){Fb=a[ta>>0]|0;vb=Fb<<24>>24==0;Eb=0;while(1){Sb=c[5028+(Eb<<2)>>2]|0;e:do if(vb){Tb=0;Ub=Sb}else{Ob=3;Nb=Fb;Mb=ta;Vb=Sb;while(1){Ob=Ob+-1|0;Wb=a[Vb>>0]|0;if(!(Nb<<24>>24==Wb<<24>>24&((Ob|0)!=0&Wb<<24>>24!=0))){Tb=Nb;Ub=Vb;break e}Mb=Mb+1|0;Wb=Vb+1|0;Nb=a[Mb>>0]|0;if(!(Nb<<24>>24)){Tb=0;Ub=Wb;break}else Vb=Wb}}while(0);if(Tb<<24>>24==(a[Ub>>0]|0))break;Vb=Eb+1|0;if(Vb>>>0<37)Eb=Vb;else{zb=88;break}}if((zb|0)==88){zb=0;if(c[Ba>>2]&32|0)break;if((c[Za>>2]|0)<=2)break;Fb=c[ta>>2]|0;c[ia>>2]=Fb<<24>>24;c[ia+4>>2]=Fb>>>8<<24>>24;c[ia+8>>2]=Fb<<8>>24;Lc(0,24406,ia);break}Fb=c[5176+(Eb<<2)>>2]|0;c[ta>>2]=d[Fb>>0]|d[Fb+1>>0]<<8|d[Fb+2>>0]<<16|d[Fb+3>>0]<<24;do if(!(c[Ba>>2]&32)){if((c[Za>>2]|0)<=2)break;c[ja>>2]=Sb;c[ja+4>>2]=Fb;Lc(0,24371,ja)}while(0);if(!(Pb&36796)){Xb=4;Yb=67;Zb=24450;_b=ta;zb=94}}else if(!(Pb&36796)){Xb=4;Yb=67;Zb=24450;_b=ta;zb=94}while(0);f:do if((zb|0)==94){while(1){zb=0;Xb=Xb+-1|0;sb=a[_b>>0]|0;if(!(Yb<<24>>24==sb<<24>>24&((Xb|0)!=0&sb<<24>>24!=0))){$b=Yb;ac=sb;break}Zb=Zb+1|0;_b=_b+1|0;Yb=a[Zb>>0]|0;if(!(Yb<<24>>24)){zb=96;break}else zb=94}if((zb|0)==96){zb=0;$b=0;ac=a[_b>>0]|0}do if($b<<24>>24==ac<<24>>24)bc=0;else{sb=4;tb=84;ub=24455;Fb=ta;while(1){sb=sb+-1|0;Eb=a[Fb>>0]|0;if(!(tb<<24>>24==Eb<<24>>24&((sb|0)!=0&Eb<<24>>24!=0))){cc=tb;dc=Eb;break}ub=ub+1|0;Fb=Fb+1|0;tb=a[ub>>0]|0;if(!(tb<<24>>24)){zb=100;break}}if((zb|0)==100){zb=0;cc=0;dc=a[Fb>>0]|0}if(cc<<24>>24==dc<<24>>24){bc=1;break}else{ec=4;fc=82;gc=24460;hc=ta}while(1){ec=ec+-1|0;tb=a[hc>>0]|0;if(!(fc<<24>>24==tb<<24>>24&((ec|0)!=0&tb<<24>>24!=0))){ic=fc;jc=tb;break}gc=gc+1|0;hc=hc+1|0;fc=a[gc>>0]|0;if(!(fc<<24>>24)){zb=762;break}}if((zb|0)==762){zb=0;ic=0;jc=a[hc>>0]|0}if(ic<<24>>24==jc<<24>>24){bc=2;break}else{kc=4;lc=85;mc=24465;nc=ta}while(1){kc=kc+-1|0;Fb=a[nc>>0]|0;if(!(lc<<24>>24==Fb<<24>>24&((kc|0)!=0&Fb<<24>>24!=0))){oc=lc;pc=Fb;break}mc=mc+1|0;nc=nc+1|0;lc=a[mc>>0]|0;if(!(lc<<24>>24)){zb=766;break}}if((zb|0)==766){zb=0;oc=0;pc=a[nc>>0]|0}if(oc<<24>>24==pc<<24>>24){bc=3;break}else{qc=4;rc=65;sc=24470;tc=ta}while(1){qc=qc+-1|0;Fb=a[tc>>0]|0;if(!(rc<<24>>24==Fb<<24>>24&((qc|0)!=0&Fb<<24>>24!=0))){uc=rc;vc=Fb;break}sc=sc+1|0;tc=tc+1|0;rc=a[sc>>0]|0;if(!(rc<<24>>24)){zb=770;break}}if((zb|0)==770){zb=0;uc=0;vc=a[tc>>0]|0}bc=uc<<24>>24==vc<<24>>24?4:-2}while(0);Fb=(bc|0)!=1&(a[ta>>0]|0)==84?-1:bc;if((Fb|0)==-2)break;tb=ua+Qb|0;ub=(Pb&2|Ja|0)==0;g:do if(ub){wc=tb;xc=Lb}else{sb=Mc(Lb)|0;if(!sb){if(c[Ba>>2]&32|0)break f;c[ha>>2]=845;Lc(0,24475,ha);break f}a[sb>>0]=a[tb>>0]|0;Eb=Qb+Lb|0;vb=Qb;Vb=1;while(1){Nb=vb;while(1){Mb=Nb;Nb=Nb+1|0;if(Nb>>>0>=Eb>>>0){wc=sb;xc=Vb;break g}Ob=a[ua+Nb>>0]|0;if(Ob<<24>>24){yc=Ob;break}if((a[ua+Mb>>0]|0)!=-1){yc=0;break}}a[sb+Vb>>0]=yc;vb=Nb;Vb=Vb+1|0}}while(0);h:do switch(Fb|0){case 3:case 0:{tb=a[wc>>0]|0;Vb=wc+1|0;vb=wc+4|0;sb=vb;Eb=wc;i:do if(xc>>>0<4){if(c[Ba>>2]&32|0)break;c[ga>>2]=447;c[ga+4>>2]=xc;Lc(0,24576,ga)}else{do if((Fb|0)==3){Mb=c[Ga>>2]|0;Ob=(c[Aa>>2]<<5)+32|0;if(!Mb)zc=Mc(Ob)|0;else zc=Oc(Mb,Ob)|0;if(!zc){Ac=0;break}c[Ga>>2]=zc;Ob=c[Aa>>2]|0;c[Aa>>2]=Ob+1;Mb=zc+(Ob<<5)+8|0;Wb=zc+(Ob<<5)|0;c[Wb>>2]=0;b[Wb+4>>1]=0;a[Wb+6>>0]=0;c[Mb>>2]=0;c[Mb+4>>2]=0;c[Mb+8>>2]=0;c[Mb+12>>2]=0;c[Mb+16>>2]=0;c[Mb+20>>2]=0;Ac=(c[Ga>>2]|0)+((c[Aa>>2]|0)+-1<<5)|0}else{Mb=c[Ka>>2]|0;Wb=(c[Ha>>2]<<5)+32|0;if(!Mb)Bc=Mc(Wb)|0;else Bc=Oc(Mb,Wb)|0;if(!Bc){Ac=0;break}c[Ka>>2]=Bc;Wb=c[Ha>>2]|0;c[Ha>>2]=Wb+1;Mb=Bc+(Wb<<5)+8|0;Ob=Bc+(Wb<<5)|0;c[Ob>>2]=0;b[Ob+4>>1]=0;a[Ob+6>>0]=0;c[Mb>>2]=0;c[Mb+4>>2]=0;c[Mb+8>>2]=0;c[Mb+12>>2]=0;c[Mb+16>>2]=0;c[Mb+20>>2]=0;Ac=(c[Ka>>2]|0)+((c[Ha>>2]|0)+-1<<5)|0}while(0);do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=3)break;switch(d[wc>>0]|0){case 0:{Cc=24710;break}case 1:{Cc=24699;break}case 2:{Cc=24689;break}case 3:{Cc=24683;break}default:Cc=24674}c[fa>>2]=Cc;Lc(0,24718,fa)}while(0);if(!Ac){if(c[Ba>>2]&32|0)break;c[ea>>2]=454;Lc(0,24758,ea);break};a[Ac>>0]=a[Vb>>0]|0;a[Ac+1>>0]=a[Vb+1>>0]|0;a[Ac+2>>0]=a[Vb+2>>0]|0;Nb=Ac+3|0;Mb=c[ta>>2]|0;a[Nb>>0]=Mb;a[Nb+1>>0]=Mb>>8;a[Nb+2>>0]=Mb>>16;a[Nb+3>>0]=Mb>>24;Mb=wc+3|0;a[Mb>>0]=tb;Nb=xc+-4|0;Ob=tb&255;Wb=c[4996+(Ob<<2)>>2]|0;j:do if((Nb|0)>0){if((Ob+-1|0)>>>0<2){Dc=0;Fc=vb;while(1){if(!(a[Fc>>0]|0)){if(Wb>>>0>(Nb-Dc|0)>>>0)break j;else Gc=1;while(1){if(a[Fc+Gc>>0]|0){Hc=Gc;break}Ic=Gc+1|0;if(Ic>>>0>>0)Gc=Ic;else{Hc=Ic;break}}Ic=Fc+Wb|0;if((Hc|0)==(Wb|0)){Jc=Ic;zb=162;break j}else Kc=Ic}else Kc=Fc+Wb|0;Dc=Kc-sb|0;if((Dc|0)>=(Nb|0)){Jc=Kc;zb=162;break j}else Fc=Kc}}switch(tb<<24>>24){case 3:{Fc=0;Dc=vb;while(1){if(!(a[Dc>>0]|0))break;Ic=Dc+Wb|0;Pc=Ic-sb|0;if((Pc|0)<(Nb|0)){Fc=Pc;Dc=Ic}else{Jc=Ic;zb=162;break j}}if(Wb>>>0>(Nb-Fc|0)>>>0)break j;Jc=Dc+Wb|0;zb=162;break j;break}case 0:{Ic=0;Pc=vb;while(1){if(!(a[Pc>>0]|0))break;Qc=Pc+Wb|0;Rc=Qc-sb|0;if((Rc|0)<(Nb|0)){Ic=Rc;Pc=Qc}else{Jc=Qc;zb=162;break j}}if(Wb>>>0>(Nb-Ic|0)>>>0)break j;Jc=Pc+Wb|0;zb=162;break j;break}default:{Dc=0;Fc=vb;while(1){if(!(a[Fc>>0]|0)){if(Wb>>>0>(Nb-Dc|0)>>>0)break j;Qc=Fc+Wb|0;switch(tb<<24>>24){case 0:case 3:{Jc=Qc;zb=162;break j;break}default:Sc=Qc}}else Sc=Fc+Wb|0;Dc=Sc-sb|0;if((Dc|0)>=(Nb|0)){Jc=Sc;zb=162;break}else Fc=Sc}}}}else{Jc=vb;zb=162}while(0);do if((zb|0)==162){zb=0;Fc=Jc;Dc=Fc-sb|0;if((Jc|0)==0|Dc>>>0>=Nb>>>0)break;c[ra>>2]=0;b[ra+4>>1]=0;a[ra+6>>0]=0;Pc=Ac+8|0;Ic=Dc+1|0;c[sa>>2]=0;c[sa+4>>2]=0;c[sa+8>>2]=0;c[sa+12>>2]=0;c[sa+16>>2]=0;c[sa+20>>2]=0;Qc=c[Ba>>2]|0;Rc=Qc>>>5&1;Uc=Rc^1;Vc=(Ic|0)==0;k:do if(!Vc){if(Qc&2048|0){Xc=Ac+12|0;Yc=c[Pc>>2]|0;do if((c[Xc>>2]|0)==(Ic|0))Zc=Yc;else{if(!Yc)_c=Mc(Ic)|0;else _c=Oc(Yc,Ic)|0;if(_c|0){c[Pc>>2]=_c;c[Xc>>2]=Ic;Zc=_c;break}if(Rc|0)break k;c[ca>>2]=265;Lc(0,24917,ca);break k}while(0);Wc(Zc|0,Mb|0,Ic|0)|0;c[Ac+16>>2]=Ic;break}Xc=a[Mb>>0]|0;Yc=Xc&255;if((Xc&255)>3){if(!Rc){c[ba>>2]=289;c[ba+4>>2]=Yc;Lc(0,23305,ba)}$c=c[Pc>>2]|0;if($c|0)Nc($c);c[Pc>>2]=0;c[Ac+12>>2]=0;c[Ac+16>>2]=0;ad=0}else{$c=c[4996+(Yc<<2)>>2]|0;l:do if(Xc<<24>>24!=2&$c>>>0>>0){bd=Dc;cd=vb;while(1){if(a[cd>>0]|0){dd=cd;ed=bd;break l}fd=bd+-1|0;gd=cd+1|0;if(fd>>>0>$c>>>0){bd=fd;cd=gd}else{dd=gd;ed=fd;break}}}else{dd=vb;ed=Dc}while(0);Oa[c[5012+(Yc<<2)>>2]&127](Pc,dd,ed-((ed>>>0)%($c>>>0)|0)|0,Uc);ad=c[Ac+16>>2]|0}if(ad|Rc|0)break;c[aa>>2]=277;Lc(0,25007,aa)}while(0);Rc=(Fb|0)==0;do if(Rc){Uc=(c[Ba>>2]|0)>>>5&1;Pc=Uc^1;if(Vc)break;Ic=a[Mb>>0]|0;Qc=Ic&255;if((Ic&255)>3){if(!Uc){c[$>>2]=289;c[$+4>>2]=Qc;Lc(0,23305,$)}Xc=c[sa>>2]|0;if(Xc|0)Nc(Xc);c[sa>>2]=0;c[ab>>2]=0;c[Ma>>2]=0;hd=0}else{Xc=c[4996+(Qc<<2)>>2]|0;m:do if(Ic<<24>>24!=2&Xc>>>0>>0){cd=Dc;bd=vb;while(1){if(a[bd>>0]|0){id=bd;jd=cd;break m}fd=cd+-1|0;gd=bd+1|0;if(fd>>>0>Xc>>>0){cd=fd;bd=gd}else{id=gd;jd=fd;break}}}else{id=vb;jd=Dc}while(0);Oa[c[5012+(Qc<<2)>>2]&127](sa,id,jd-((jd>>>0)%(Xc>>>0)|0)|0,Pc);hd=c[Ma>>2]|0}if(hd|Uc|0)break;c[_>>2]=277;Lc(0,25007,_)}while(0);Dc=Jc+-1|0;a[Dc>>0]=tb;Vc=Ac+20|0;Ic=Eb-Fc|0;$c=xc+1+Ic|0;Yc=c[Ba>>2]|0;bd=Yc>>>5&1;cd=bd^1;fd=($c|0)==0;n:do if(!fd){if(Yc&2048|0){gd=Ac+24|0;kd=c[Vc>>2]|0;do if((c[gd>>2]|0)==($c|0))ld=kd;else{if(!kd)md=Mc($c)|0;else md=Oc(kd,$c)|0;if(md|0){c[Vc>>2]=md;c[gd>>2]=$c;ld=md;break}if(bd|0)break n;c[Z>>2]=265;Lc(0,24917,Z);break n}while(0);Wc(ld|0,Dc|0,$c|0)|0;c[Ac+28>>2]=$c;break}gd=Ic+xc|0;if((tb&255)>3){if(!bd){c[Y>>2]=289;c[Y+4>>2]=Ob;Lc(0,23305,Y)}kd=c[Vc>>2]|0;if(kd|0)Nc(kd);c[Vc>>2]=0;c[Ac+24>>2]=0;c[Ac+28>>2]=0;nd=0}else{o:do if(tb<<24>>24!=2&Wb>>>0>>0){kd=gd;Uc=Jc;while(1){if(a[Uc>>0]|0){od=Uc;pd=kd;break o}Pc=kd+-1|0;Xc=Uc+1|0;if(Pc>>>0>Wb>>>0){kd=Pc;Uc=Xc}else{od=Xc;pd=Pc;break}}}else{od=Jc;pd=gd}while(0);Oa[c[5012+(Ob<<2)>>2]&127](Vc,od,pd-((pd>>>0)%(Wb>>>0)|0)|0,cd);nd=c[Ac+28>>2]|0}if(nd|bd|0)break;c[X>>2]=277;Lc(0,25007,X)}while(0);do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=3)break;c[W>>2]=c[Ac+16>>2];Lc(0,25117,W);c[V>>2]=c[Ac+28>>2];Lc(0,25158,V)}while(0);p:do if(!((c[Ma>>2]|0)==0|Rc^1)){bd=c[Pa>>2]|0;cd=a[bd>>0]|0;Vc=cd<<24>>24==0;q:do if(Vc){qd=0;rd=25199}else{$c=cd;Yc=cd&255;Fc=bd;gd=25199;while(1){Uc=a[gd>>0]|0;if(!(Uc<<24>>24)){qd=$c;rd=gd;break q}if($c<<24>>24!=Uc<<24>>24?(kd=Uc&255,(((Yc+-65|0)>>>0<26?Yc|32:Yc)|0)!=(((kd+-65|0)>>>0<26?kd|32:kd)|0)):0){qd=$c;rd=gd;break q}Fc=Fc+1|0;kd=gd+1|0;Uc=a[Fc>>0]|0;if(!(Uc<<24>>24)){qd=0;rd=kd;break}else{$c=Uc;Yc=Uc&255;gd=kd}}}while(0);gd=qd&255;Yc=d[rd>>0]|0;do if((((gd+-65|0)>>>0<26?gd|32:gd)|0)!=(((Yc+-65|0)>>>0<26?Yc|32:Yc)|0)){r:do if(Vc){sd=0;td=25203}else{$c=cd;Fc=cd&255;kd=bd;Uc=25203;while(1){Pc=a[Uc>>0]|0;if(!(Pc<<24>>24)){sd=$c;td=Uc;break r}if($c<<24>>24!=Pc<<24>>24?(Xc=Pc&255,(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)!=(((Xc+-65|0)>>>0<26?Xc|32:Xc)|0)):0){sd=$c;td=Uc;break r}kd=kd+1|0;Xc=Uc+1|0;Pc=a[kd>>0]|0;if(!(Pc<<24>>24)){sd=0;td=Xc;break}else{$c=Pc;Fc=Pc&255;Uc=Xc}}}while(0);Uc=sd&255;Fc=d[td>>0]|0;if((((Uc+-65|0)>>>0<26?Uc|32:Uc)|0)==(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)){ud=0;break}s:do if(Vc){vd=0;wd=25211}else{Fc=cd;Uc=cd&255;$c=bd;kd=25211;while(1){Xc=a[kd>>0]|0;if(!(Xc<<24>>24)){vd=Fc;wd=kd;break s}if(Fc<<24>>24!=Xc<<24>>24?(Pc=Xc&255,(((Uc+-65|0)>>>0<26?Uc|32:Uc)|0)!=(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)):0){vd=Fc;wd=kd;break s}$c=$c+1|0;Pc=kd+1|0;Xc=a[$c>>0]|0;if(!(Xc<<24>>24)){vd=0;wd=Pc;break}else{Fc=Xc;Uc=Xc&255;kd=Pc}}}while(0);kd=vd&255;Uc=d[wd>>0]|0;if((((kd+-65|0)>>>0<26?kd|32:kd)|0)==(((Uc+-65|0)>>>0<26?Uc|32:Uc)|0)){ud=0;break}t:do if(Vc){xd=0;yd=25221}else{Uc=cd;kd=cd&255;Fc=bd;$c=25221;while(1){Pc=a[$c>>0]|0;if(!(Pc<<24>>24)){xd=Uc;yd=$c;break t}if(Uc<<24>>24!=Pc<<24>>24?(Xc=Pc&255,(((kd+-65|0)>>>0<26?kd|32:kd)|0)!=(((Xc+-65|0)>>>0<26?Xc|32:Xc)|0)):0){xd=Uc;yd=$c;break t}Fc=Fc+1|0;Xc=$c+1|0;Pc=a[Fc>>0]|0;if(!(Pc<<24>>24)){xd=0;yd=Xc;break}else{Uc=Pc;kd=Pc&255;$c=Xc}}}while(0);$c=xd&255;kd=d[yd>>0]|0;if(((($c+-65|0)>>>0<26?$c|32:$c)|0)==(((kd+-65|0)>>>0<26?kd|32:kd)|0)){ud=0;break}u:do if(Vc){zd=0;Ad=25231}else{kd=cd;$c=cd&255;Uc=bd;Fc=25231;while(1){Xc=a[Fc>>0]|0;if(!(Xc<<24>>24)){zd=kd;Ad=Fc;break u}if(kd<<24>>24!=Xc<<24>>24?(Pc=Xc&255,((($c+-65|0)>>>0<26?$c|32:$c)|0)!=(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)):0){zd=kd;Ad=Fc;break u}Uc=Uc+1|0;Pc=Fc+1|0;Xc=a[Uc>>0]|0;if(!(Xc<<24>>24)){zd=0;Ad=Pc;break}else{kd=Xc;$c=Xc&255;Fc=Pc}}}while(0);Fc=zd&255;$c=d[Ad>>0]|0;if((((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)==((($c+-65|0)>>>0<26?$c|32:$c)|0)){ud=1;break}v:do if(Vc){Bd=0;Cd=25241}else{$c=cd;Fc=cd&255;kd=bd;Uc=25241;while(1){Pc=a[Uc>>0]|0;if(!(Pc<<24>>24)){Bd=$c;Cd=Uc;break v}if($c<<24>>24!=Pc<<24>>24?(Xc=Pc&255,(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)!=(((Xc+-65|0)>>>0<26?Xc|32:Xc)|0)):0){Bd=$c;Cd=Uc;break v}kd=kd+1|0;Xc=Uc+1|0;Pc=a[kd>>0]|0;if(!(Pc<<24>>24)){Bd=0;Cd=Xc;break}else{$c=Pc;Fc=Pc&255;Uc=Xc}}}while(0);Uc=Bd&255;Fc=d[Cd>>0]|0;if((((Uc+-65|0)>>>0<26?Uc|32:Uc)|0)==(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)){ud=1;break}w:do if(Vc){Dd=0;Ed=25256}else{Fc=cd;Uc=cd&255;$c=bd;kd=25256;while(1){Xc=a[kd>>0]|0;if(!(Xc<<24>>24)){Dd=Fc;Ed=kd;break w}if(Fc<<24>>24!=Xc<<24>>24?(Pc=Xc&255,(((Uc+-65|0)>>>0<26?Uc|32:Uc)|0)!=(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)):0){Dd=Fc;Ed=kd;break w}$c=$c+1|0;Pc=kd+1|0;Xc=a[$c>>0]|0;if(!(Xc<<24>>24)){Dd=0;Ed=Pc;break}else{Fc=Xc;Uc=Xc&255;kd=Pc}}}while(0);kd=Dd&255;Uc=d[Ed>>0]|0;if((((kd+-65|0)>>>0<26?kd|32:kd)|0)==(((Uc+-65|0)>>>0<26?Uc|32:Uc)|0))ud=1;else break p}else ud=0;while(0);bd=e+19304+(ud<<2)|0;if((c[bd>>2]|0)>=2)break;cd=(c[Ba>>2]|0)>>>5&1;Vc=cd^1;do if(fd)zb=304;else{Yc=a[Dc>>0]|0;gd=Ic+xc|0;Uc=Yc&255;if((Yc&255)>3){if(!cd){c[U>>2]=289;c[U+4>>2]=Uc;Lc(0,23305,U)}kd=c[ya>>2]|0;if(kd|0)Nc(kd);c[ya>>2]=0;c[$a>>2]=0;c[Qa>>2]=0;Fd=0}else{kd=c[4996+(Uc<<2)>>2]|0;x:do if(Yc<<24>>24!=2&kd>>>0>>0){Fc=gd;$c=Jc;while(1){if(a[$c>>0]|0){Gd=$c;Hd=Fc;break x}Pc=Fc+-1|0;Xc=$c+1|0;if(Pc>>>0>kd>>>0){Fc=Pc;$c=Xc}else{Gd=Xc;Hd=Pc;break}}}else{Gd=Jc;Hd=gd}while(0);Oa[c[5012+(Uc<<2)>>2]&127](ya,Gd,Hd-((Hd>>>0)%(kd>>>0)|0)|0,Vc);Fd=c[Qa>>2]|0}if(Fd|cd|0){Id=Fd;break}c[T>>2]=277;Lc(0,25007,T);zb=304}while(0);if((zb|0)==304){zb=0;Id=c[Qa>>2]|0}if(!Id)break;cd=c[ya>>2]|0;Jd=qa;Kd=Jd+108|0;do{c[Jd>>2]=0;Jd=Jd+4|0}while((Jd|0)<(Kd|0));c[bb>>2]=cd;c[cb>>2]=-1;c[db>>2]=cd;c[eb>>2]=-1;c[fb>>2]=0;c[gb>>2]=~cd;c[hb>>2]=-1;Ld=+Ec(qa,1,1);g[e+19312+(ud<<2)>>2]=Ld;do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=2)break;h[S>>3]=Ld;Lc(0,25265,S)}while(0);g[e+19320+(ud<<2)>>2]=0.0;c[bd>>2]=1}while(0);Ic=c[ya>>2]|0;if(Ic|0)Nc(Ic);c[ya>>2]=0;c[$a>>2]=0;c[Qa>>2]=0;Ic=c[sa>>2]|0;if(Ic|0)Nc(Ic);c[sa>>2]=0;c[ab>>2]=0;c[Ma>>2]=0;break i}while(0);if(!(c[Ba>>2]&32)){c[da>>2]=465;Lc(0,24834,da)}Wb=c[Ha>>2]|0;if(!Wb)break;Ob=Wb+-1|0;Wb=c[Ka>>2]|0;Mb=Wb+(Ob<<5)+20|0;Nb=c[Mb>>2]|0;if(Nb|0)Nc(Nb);c[Mb>>2]=0;c[Wb+(Ob<<5)+24>>2]=0;c[Wb+(Ob<<5)+28>>2]=0;Mb=Wb+(Ob<<5)+8|0;Nb=c[Mb>>2]|0;if(Nb|0)Nc(Nb);c[Mb>>2]=0;c[Wb+(Ob<<5)+12>>2]=0;c[Wb+(Ob<<5)+16>>2]=0;Ob=c[Ha>>2]|0;Wb=c[Ka>>2]|0;if(Ob>>>0<=1){Nc(Wb);c[Ka>>2]=0;c[Ha>>2]=0;break}Mb=(Ob<<5)+-32|0;if(!Wb)Md=Mc(Mb)|0;else Md=Oc(Wb,Mb)|0;if(!Md)break;c[Ka>>2]=Md;c[Ha>>2]=(c[Ha>>2]|0)+-1}while(0);break}case 1:{tb=a[wc>>0]|0;Eb=wc+1|0;vb=Eb;sb=wc;y:do if((xc|0)<1){if(c[Ba>>2]&32|0)break;c[R>>2]=529;c[R+4>>2]=xc;Lc(0,24576,R)}else{Vb=xc+-1|0;Mb=tb&255;Wb=c[4996+(Mb<<2)>>2]|0;z:do if((Vb|0)>0){if((Mb+-1|0)>>>0<2){Ob=0;Nb=Eb;while(1){if(!(a[Nb>>0]|0)){if(Wb>>>0>(Vb-Ob|0)>>>0){Nd=0;break z}else Od=1;while(1){if(a[Nb+Od>>0]|0){Pd=Od;break}Ic=Od+1|0;if(Ic>>>0>>0)Od=Ic;else{Pd=Ic;break}}bd=Nb+Wb|0;if((Pd|0)==(Wb|0)){Qd=bd;zb=342;break z}else Rd=bd}else Rd=Nb+Wb|0;Ob=Rd-vb|0;if((Ob|0)>=(Vb|0)){Qd=Rd;zb=342;break z}else Nb=Rd}}switch(tb<<24>>24){case 3:{Nb=0;Ob=Eb;while(1){if(!(a[Ob>>0]|0))break;bd=Ob+Wb|0;Ic=bd-vb|0;if((Ic|0)<(Vb|0)){Nb=Ic;Ob=bd}else{Qd=bd;zb=342;break z}}if(Wb>>>0>(Vb-Nb|0)>>>0){Nd=0;break z}Qd=Ob+Wb|0;zb=342;break z;break}case 0:{bd=0;Ic=Eb;while(1){if(!(a[Ic>>0]|0))break;Dc=Ic+Wb|0;fd=Dc-vb|0;if((fd|0)<(Vb|0)){bd=fd;Ic=Dc}else{Qd=Dc;zb=342;break z}}if(Wb>>>0>(Vb-bd|0)>>>0){Nd=0;break z}Qd=Ic+Wb|0;zb=342;break z;break}default:{Ob=0;Nb=Eb;while(1){if(!(a[Nb>>0]|0)){if(Wb>>>0>(Vb-Ob|0)>>>0){Nd=0;break z}Dc=Nb+Wb|0;switch(tb<<24>>24){case 0:case 3:{Qd=Dc;zb=342;break z;break}default:Sd=Dc}}else Sd=Nb+Wb|0;Ob=Sd-vb|0;if((Ob|0)>=(Vb|0)){Qd=Sd;zb=342;break}else Nb=Sd}}}}else{Qd=Eb;zb=342}while(0);if((zb|0)==342){zb=0;Nd=(Qd-vb|0)>>>0>>0?Qd:0}do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=3)break;switch(Mb|0){case 0:{Td=24710;break}case 1:{Td=24699;break}case 2:{Td=24689;break}case 3:{Td=24683;break}default:Td=24674}c[Q>>2]=Td;Lc(0,25287,Q)}while(0);if(!Nd){if(c[Ba>>2]&32|0)break;c[P>>2]=536;Lc(0,25325,P);break}Vb=c[Ra>>2]|0;Nb=(c[Sa>>2]<<5)+32|0;if(!Vb)Ud=Mc(Nb)|0;else Ud=Oc(Vb,Nb)|0;do if(Ud|0){c[Ra>>2]=Ud;Nb=c[Sa>>2]|0;c[Sa>>2]=Nb+1;Vb=Ud+(Nb<<5)+8|0;Ob=Ud+(Nb<<5)|0;c[Ob>>2]=0;b[Ob+4>>1]=0;a[Ob+6>>0]=0;c[Vb>>2]=0;c[Vb+4>>2]=0;c[Vb+8>>2]=0;c[Vb+12>>2]=0;c[Vb+16>>2]=0;c[Vb+20>>2]=0;Vb=(c[Sa>>2]|0)+-1|0;Ob=c[Ra>>2]|0;if(!(Ob+(Vb<<5)|0))break;Nb=Ob+(Vb<<5)+3|0;Ic=c[ta>>2]|0;a[Nb>>0]=Ic;a[Nb+1>>0]=Ic>>8;a[Nb+2>>0]=Ic>>16;a[Nb+3>>0]=Ic>>24;c[ra>>2]=0;b[ra+4>>1]=0;a[ra+6>>0]=0;Ic=Ob+(Vb<<5)+8|0;Nb=Nd;bd=Nb-vb|0;Dc=bd+1|0;c[Ua>>2]=0;c[Ua+4>>2]=0;c[Ua+8>>2]=0;c[Ua+12>>2]=0;c[Ua+16>>2]=0;c[Ua+20>>2]=0;fd=c[Ba>>2]|0;Rc=fd>>>5&1;cd=Rc^1;do if(Dc|0){A:do if(!(fd&2048)){Vc=a[wc>>0]|0;gd=Vc&255;if((Vc&255)>3){if(!Rc){c[M>>2]=289;c[M+4>>2]=gd;Lc(0,23305,M)}Yc=c[Ic>>2]|0;if(Yc|0)Nc(Yc);c[Ic>>2]=0;c[Ob+(Vb<<5)+12>>2]=0;c[Ob+(Vb<<5)+16>>2]=0;Vd=0}else{Yc=c[4996+(gd<<2)>>2]|0;B:do if(Vc<<24>>24!=2&Yc>>>0>>0){$c=bd;Fc=Eb;while(1){if(a[Fc>>0]|0){Wd=Fc;Xd=$c;break B}Pc=$c+-1|0;Xc=Fc+1|0;if(Pc>>>0>Yc>>>0){$c=Pc;Fc=Xc}else{Wd=Xc;Xd=Pc;break}}}else{Wd=Eb;Xd=bd}while(0);Oa[c[5012+(gd<<2)>>2]&127](Ic,Wd,Xd-((Xd>>>0)%(Yc>>>0)|0)|0,cd);Vd=c[Ob+(Vb<<5)+16>>2]|0}if(Vd|Rc|0)break;c[L>>2]=277;Lc(0,25007,L)}else{Vc=Ob+(Vb<<5)+12|0;kd=c[Ic>>2]|0;do if((c[Vc>>2]|0)==(Dc|0))Yd=kd;else{if(!kd)Zd=Mc(Dc)|0;else Zd=Oc(kd,Dc)|0;if(Zd|0){c[Ic>>2]=Zd;c[Vc>>2]=Dc;Yd=Zd;break}if(Rc|0)break A;c[N>>2]=265;Lc(0,24917,N);break A}while(0);Wc(Yd|0,wc|0,Dc|0)|0;c[Ob+(Vb<<5)+16>>2]=Dc}while(0);Vc=(c[Ba>>2]|0)>>>5&1;kd=Vc^1;Yc=a[wc>>0]|0;gd=Yc&255;if((Yc&255)>3){if(!Vc){c[K>>2]=289;c[K+4>>2]=gd;Lc(0,23305,K)}Uc=c[Ua>>2]|0;if(Uc|0)Nc(Uc);c[Ua>>2]=0;c[jb>>2]=0;c[Va>>2]=0;_d=0}else{Uc=c[4996+(gd<<2)>>2]|0;C:do if(Yc<<24>>24!=2&Uc>>>0>>0){Fc=bd;$c=Eb;while(1){if(a[$c>>0]|0){$d=$c;ae=Fc;break C}Pc=Fc+-1|0;Xc=$c+1|0;if(Pc>>>0>Uc>>>0){Fc=Pc;$c=Xc}else{$d=Xc;ae=Pc;break}}}else{$d=Eb;ae=bd}while(0);Oa[c[5012+(gd<<2)>>2]&127](Ua,$d,ae-((ae>>>0)%(Uc>>>0)|0)|0,kd);_d=c[Va>>2]|0}if(_d|Vc|0)break;c[J>>2]=277;Lc(0,25007,J)}while(0);bd=Nd+-1|0;a[bd>>0]=tb;Dc=Ob+(Vb<<5)+20|0;Rc=sb-Nb+xc|0;Ic=Rc+1|0;cd=c[Ba>>2]|0;fd=cd>>>5&1;Yc=fd^1;$c=(Ic|0)==0;D:do if(!$c){if(cd&2048|0){Fc=Ob+(Vb<<5)+24|0;Pc=c[Dc>>2]|0;do if((c[Fc>>2]|0)==(Ic|0))be=Pc;else{if(!Pc)ce=Mc(Ic)|0;else ce=Oc(Pc,Ic)|0;if(ce|0){c[Dc>>2]=ce;c[Fc>>2]=Ic;be=ce;break}if(fd|0)break D;c[I>>2]=265;Lc(0,24917,I);break D}while(0);Wc(be|0,bd|0,Ic|0)|0;c[Ob+(Vb<<5)+28>>2]=Ic;break}if((tb&255)>3){if(!fd){c[H>>2]=289;c[H+4>>2]=Mb;Lc(0,23305,H)}Fc=c[Dc>>2]|0;if(Fc|0)Nc(Fc);c[Dc>>2]=0;c[Ob+(Vb<<5)+24>>2]=0;c[Ob+(Vb<<5)+28>>2]=0;de=0}else{E:do if(tb<<24>>24!=2&Wb>>>0>>0){Fc=Rc;Pc=Nd;while(1){if(a[Pc>>0]|0){ee=Pc;fe=Fc;break E}Vc=Fc+-1|0;kd=Pc+1|0;if(Vc>>>0>Wb>>>0){Fc=Vc;Pc=kd}else{ee=kd;fe=Vc;break}}}else{ee=Nd;fe=Rc}while(0);Oa[c[5012+(Mb<<2)>>2]&127](Dc,ee,fe-((fe>>>0)%(Wb>>>0)|0)|0,Yc);de=c[Ob+(Vb<<5)+28>>2]|0}if(de|fd|0)break;c[G>>2]=277;Lc(0,25007,G)}while(0);F:do if(c[Va>>2]|0){fd=c[Ua>>2]|0;Vb=a[fd>>0]|0;Ob=Vb<<24>>24==0;G:do if(Ob){ge=0;he=25491}else{Yc=17;Dc=Vb;Ic=Vb&255;cd=fd;Nb=25491;while(1){Yc=Yc+-1|0;Pc=a[Nb>>0]|0;if(!((Yc|0)!=0&Pc<<24>>24!=0)){ge=Dc;he=Nb;break G}if(Dc<<24>>24!=Pc<<24>>24?(Fc=Pc&255,(((Ic+-65|0)>>>0<26?Ic|32:Ic)|0)!=(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)):0){ge=Dc;he=Nb;break G}cd=cd+1|0;Fc=Nb+1|0;Pc=a[cd>>0]|0;if(!(Pc<<24>>24)){ge=0;he=Fc;break}else{Dc=Pc;Ic=Pc&255;Nb=Fc}}}while(0);Nb=ge&255;Ic=d[he>>0]|0;do if((((Nb+-65|0)>>>0<26?Nb|32:Nb)|0)==(((Ic+-65|0)>>>0<26?Ic|32:Ic)|0)){do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=2){ie=Vb;je=fd;break}Dc=c[1719]|0;cd=(Dc|0)==0;H:do if((c[1734]|0)>-1){do if(cd){Yc=a[6934]|0;a[6934]=Yc+255|Yc;Yc=c[1715]|0;if(!(Yc&8)){c[1717]=0;c[1716]=0;Fc=c[1726]|0;c[1722]=Fc;c[1720]=Fc;Pc=Fc+(c[1727]|0)|0;c[1719]=Pc;ke=Pc;le=Fc;break}else{c[1715]=Yc|32;break H}}else{ke=Dc;le=c[1720]|0}while(0);if((ke-le|0)>>>0<37){Ia[c[6896>>2]&127](6860,25509,37)|0;break}Yc=le;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25509,37)|0)>>>0<37)break;me=0;ne=25546;oe=c[1720]|0}else{me=37;ne=25509;oe=Yc}Wc(oe|0,ne|0,me|0)|0;c[1720]=(c[1720]|0)+me}else{do if(cd){Yc=a[6934]|0;a[6934]=Yc+255|Yc;Yc=c[1715]|0;if(!(Yc&8)){c[1717]=0;c[1716]=0;Fc=c[1726]|0;c[1722]=Fc;c[1720]=Fc;Pc=Fc+(c[1727]|0)|0;c[1719]=Pc;pe=Pc;qe=Fc;break}else{c[1715]=Yc|32;break H}}else{pe=Dc;qe=c[1720]|0}while(0);if((pe-qe|0)>>>0<37){Ia[c[6896>>2]&127](6860,25509,37)|0;break}Yc=qe;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25509,37)|0)>>>0<37)break;re=0;se=25546;te=c[1720]|0}else{re=37;se=25509;te=Yc}Wc(te|0,se|0,re|0)|0;c[1720]=(c[1720]|0)+re}while(0);Dc=c[Ua>>2]|0;ie=a[Dc>>0]|0;je=Dc}else{ie=Vb;je=fd}while(0);Dc=ie<<24>>24==0;I:do if(Dc){ue=0;ve=25547}else{cd=ie;Yc=ie&255;Fc=je;Pc=25547;while(1){Vc=a[Pc>>0]|0;if(!(Vc<<24>>24)){ue=cd;ve=Pc;break I}if(cd<<24>>24!=Vc<<24>>24?(kd=Vc&255,(((Yc+-65|0)>>>0<26?Yc|32:Yc)|0)!=(((kd+-65|0)>>>0<26?kd|32:kd)|0)):0){ue=cd;ve=Pc;break I}Fc=Fc+1|0;kd=Pc+1|0;Vc=a[Fc>>0]|0;if(!(Vc<<24>>24)){ue=0;ve=kd;break}else{cd=Vc;Yc=Vc&255;Pc=kd}}}while(0);Pc=ue&255;Yc=d[ve>>0]|0;if((((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)==(((Yc+-65|0)>>>0<26?Yc|32:Yc)|0)){we=1;xe=0;break}J:do if(Dc){ye=0;ze=25569}else{Yc=ie;Pc=ie&255;cd=je;Fc=25569;while(1){kd=a[Fc>>0]|0;if(!(kd<<24>>24)){ye=Yc;ze=Fc;break J}if(Yc<<24>>24!=kd<<24>>24?(Vc=kd&255,(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)!=(((Vc+-65|0)>>>0<26?Vc|32:Vc)|0)):0){ye=Yc;ze=Fc;break J}cd=cd+1|0;Vc=Fc+1|0;kd=a[cd>>0]|0;if(!(kd<<24>>24)){ye=0;ze=Vc;break}else{Yc=kd;Pc=kd&255;Fc=Vc}}}while(0);Dc=ye&255;Fc=d[ze>>0]|0;if((((Dc+-65|0)>>>0<26?Dc|32:Dc)|0)==(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)){we=0;xe=0}else break F}else{K:do if(Ob){Ae=0;Be=25591}else{Fc=17;Dc=Vb;Pc=Vb&255;Yc=fd;cd=25591;while(1){Fc=Fc+-1|0;Vc=a[cd>>0]|0;if(!((Fc|0)!=0&Vc<<24>>24!=0)){Ae=Dc;Be=cd;break K}if(Dc<<24>>24!=Vc<<24>>24?(kd=Vc&255,(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)!=(((kd+-65|0)>>>0<26?kd|32:kd)|0)):0){Ae=Dc;Be=cd;break K}Yc=Yc+1|0;kd=cd+1|0;Vc=a[Yc>>0]|0;if(!(Vc<<24>>24)){Ae=0;Be=kd;break}else{Dc=Vc;Pc=Vc&255;cd=kd}}}while(0);cd=Ae&255;Pc=d[Be>>0]|0;if((((cd+-65|0)>>>0<26?cd|32:cd)|0)!=(((Pc+-65|0)>>>0<26?Pc|32:Pc)|0))break F;do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=2){Ce=Vb;De=fd;break}Pc=c[1719]|0;cd=(Pc|0)==0;L:do if((c[1734]|0)>-1){do if(cd){Dc=a[6934]|0;a[6934]=Dc+255|Dc;Dc=c[1715]|0;if(!(Dc&8)){c[1717]=0;c[1716]=0;Yc=c[1726]|0;c[1722]=Yc;c[1720]=Yc;Fc=Yc+(c[1727]|0)|0;c[1719]=Fc;Ee=Fc;Fe=Yc;break}else{c[1715]=Dc|32;break L}}else{Ee=Pc;Fe=c[1720]|0}while(0);if((Ee-Fe|0)>>>0<37){Ia[c[6896>>2]&127](6860,25609,37)|0;break}Dc=Fe;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25609,37)|0)>>>0<37)break;Ge=0;He=25646;Ie=c[1720]|0}else{Ge=37;He=25609;Ie=Dc}Wc(Ie|0,He|0,Ge|0)|0;c[1720]=(c[1720]|0)+Ge}else{do if(cd){Dc=a[6934]|0;a[6934]=Dc+255|Dc;Dc=c[1715]|0;if(!(Dc&8)){c[1717]=0;c[1716]=0;Yc=c[1726]|0;c[1722]=Yc;c[1720]=Yc;Fc=Yc+(c[1727]|0)|0;c[1719]=Fc;Je=Fc;Ke=Yc;break}else{c[1715]=Dc|32;break L}}else{Je=Pc;Ke=c[1720]|0}while(0);if((Je-Ke|0)>>>0<37){Ia[c[6896>>2]&127](6860,25609,37)|0;break}Dc=Ke;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25609,37)|0)>>>0<37)break;Le=0;Me=25646;Ne=c[1720]|0}else{Le=37;Me=25609;Ne=Dc}Wc(Ne|0,Me|0,Le|0)|0;c[1720]=(c[1720]|0)+Le}while(0);Pc=c[Ua>>2]|0;Ce=a[Pc>>0]|0;De=Pc}else{Ce=Vb;De=fd}while(0);Pc=Ce<<24>>24==0;M:do if(Pc){Oe=0;Pe=25647}else{cd=Ce;Dc=Ce&255;Yc=De;Fc=25647;while(1){kd=a[Fc>>0]|0;if(!(kd<<24>>24)){Oe=cd;Pe=Fc;break M}if(cd<<24>>24!=kd<<24>>24?(Vc=kd&255,(((Dc+-65|0)>>>0<26?Dc|32:Dc)|0)!=(((Vc+-65|0)>>>0<26?Vc|32:Vc)|0)):0){Oe=cd;Pe=Fc;break M}Yc=Yc+1|0;Vc=Fc+1|0;kd=a[Yc>>0]|0;if(!(kd<<24>>24)){Oe=0;Pe=Vc;break}else{cd=kd;Dc=kd&255;Fc=Vc}}}while(0);Fc=Oe&255;Dc=d[Pe>>0]|0;if((((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)==(((Dc+-65|0)>>>0<26?Dc|32:Dc)|0)){we=1;xe=1;break}N:do if(Pc){Qe=0;Re=25669}else{Dc=Ce;Fc=Ce&255;cd=De;Yc=25669;while(1){Vc=a[Yc>>0]|0;if(!(Vc<<24>>24)){Qe=Dc;Re=Yc;break N}if(Dc<<24>>24!=Vc<<24>>24?(kd=Vc&255,(((Fc+-65|0)>>>0<26?Fc|32:Fc)|0)!=(((kd+-65|0)>>>0<26?kd|32:kd)|0)):0){Qe=Dc;Re=Yc;break N}cd=cd+1|0;kd=Yc+1|0;Vc=a[cd>>0]|0;if(!(Vc<<24>>24)){Qe=0;Re=kd;break}else{Dc=Vc;Fc=Vc&255;Yc=kd}}}while(0);Pc=Qe&255;Yc=d[Re>>0]|0;if((((Pc+-65|0)>>>0<26?Pc|32:Pc)|0)==(((Yc+-65|0)>>>0<26?Yc|32:Yc)|0)){we=0;xe=1}else break F}while(0);fd=e+19304+(xe<<2)|0;if((c[fd>>2]|0)>=3)break;Vb=(c[Ba>>2]|0)>>>5&1;Ob=Vb^1;do if($c)zb=528;else{Ic=a[bd>>0]|0;Nb=Ic&255;if((Ic&255)>3){if(!Vb){c[F>>2]=289;c[F+4>>2]=Nb;Lc(0,23305,F)}Yc=c[Ta>>2]|0;if(Yc|0)Nc(Yc);c[Ta>>2]=0;c[ib>>2]=0;c[Wa>>2]=0;Se=0}else{Yc=c[4996+(Nb<<2)>>2]|0;O:do if(Ic<<24>>24!=2&Yc>>>0>>0){Pc=Rc;Fc=Nd;while(1){if(a[Fc>>0]|0){Te=Fc;Ue=Pc;break O}Dc=Pc+-1|0;cd=Fc+1|0;if(Dc>>>0>Yc>>>0){Pc=Dc;Fc=cd}else{Te=cd;Ue=Dc;break}}}else{Te=Nd;Ue=Rc}while(0);Oa[c[5012+(Nb<<2)>>2]&127](Ta,Te,Ue-((Ue>>>0)%(Yc>>>0)|0)|0,Ob);Se=c[Wa>>2]|0}if(Se|Vb|0){Ve=Se;break}c[E>>2]=277;Lc(0,25007,E);zb=528}while(0);if((zb|0)==528){zb=0;Ve=c[Wa>>2]|0}if(!Ve)break;Vb=(we|0)==0;Ob=c[Ta>>2]|0;Jd=qa;Kd=Jd+108|0;do{c[Jd>>2]=0;Jd=Jd+4|0}while((Jd|0)<(Kd|0));c[kb>>2]=Ob;c[lb>>2]=-1;c[mb>>2]=Ob;c[nb>>2]=-1;c[ob>>2]=0;c[pb>>2]=~Ob;c[qb>>2]=-1;Ld=+Ec(qa,1,1);do if(Vb){g[e+19312+(xe<<2)>>2]=Ld;if(c[Ba>>2]&32|0)break;if((c[Ca>>2]|0)<=2)break;h[C>>3]=Ld;Lc(0,25710,C)}else{g[e+19320+(xe<<2)>>2]=Ld;if(c[Ba>>2]&32|0)break;if((c[Ca>>2]|0)<=2)break;h[D>>3]=Ld;Lc(0,25691,D)}while(0);c[fd>>2]=2}while(0);Rc=c[Ta>>2]|0;if(Rc|0)Nc(Rc);c[Ta>>2]=0;c[ib>>2]=0;c[Wa>>2]=0;Rc=c[Ua>>2]|0;if(Rc|0)Nc(Rc);c[Ua>>2]=0;c[jb>>2]=0;c[Va>>2]=0;break y}while(0);if(c[Ba>>2]&32|0)break;c[O>>2]=542;Lc(0,25412,O)}while(0);break}case 2:{do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=2)break;c[B>>2]=wc;Lc(0,25731,B)}while(0);tb=a[wc>>0]|0;sb=tb<<24>>24==0;P:do if(sb){We=0;Xe=25763}else{Eb=5;vb=tb;Wb=tb&255;Mb=wc;Rc=25763;while(1){Eb=Eb+-1|0;bd=a[Rc>>0]|0;if(!((Eb|0)!=0&bd<<24>>24!=0)){We=vb;Xe=Rc;break P}if(vb<<24>>24!=bd<<24>>24?($c=bd&255,(((Wb+-65|0)>>>0<26?Wb|32:Wb)|0)!=((($c+-65|0)>>>0<26?$c|32:$c)|0)):0){We=vb;Xe=Rc;break P}Mb=Mb+1|0;$c=Rc+1|0;bd=a[Mb>>0]|0;if(!(bd<<24>>24)){We=0;Xe=$c;break}else{vb=bd;Wb=bd&255;Rc=$c}}}while(0);Rc=We&255;Wb=d[Xe>>0]|0;do if((((Rc+-65|0)>>>0<26?Rc|32:Rc)|0)!=(((Wb+-65|0)>>>0<26?Wb|32:Wb)|0)){Q:do if(sb){Ye=0;Ze=25769}else{vb=10;Mb=tb;Eb=tb&255;$c=wc;bd=25769;while(1){vb=vb+-1|0;Vb=a[bd>>0]|0;if(!((vb|0)!=0&Vb<<24>>24!=0)){Ye=Mb;Ze=bd;break Q}if(Mb<<24>>24!=Vb<<24>>24?(Ob=Vb&255,(((Eb+-65|0)>>>0<26?Eb|32:Eb)|0)!=(((Ob+-65|0)>>>0<26?Ob|32:Ob)|0)):0){Ye=Mb;Ze=bd;break Q}$c=$c+1|0;Ob=bd+1|0;Vb=a[$c>>0]|0;if(!(Vb<<24>>24)){Ye=0;Ze=Ob;break}else{Mb=Vb;Eb=Vb&255;bd=Ob}}}while(0);bd=Ye&255;Eb=d[Ze>>0]|0;if((((bd+-65|0)>>>0<26?bd|32:bd)|0)==(((Eb+-65|0)>>>0<26?Eb|32:Eb)|0)){zb=568;break}R:do if(sb){_e=0;$e=25780}else{Eb=4;bd=tb;Mb=tb&255;$c=wc;vb=25780;while(1){Eb=Eb+-1|0;Ob=a[vb>>0]|0;if(!((Eb|0)!=0&Ob<<24>>24!=0)){_e=bd;$e=vb;break R}if(bd<<24>>24!=Ob<<24>>24?(Vb=Ob&255,(((Mb+-65|0)>>>0<26?Mb|32:Mb)|0)!=(((Vb+-65|0)>>>0<26?Vb|32:Vb)|0)):0){_e=bd;$e=vb;break R}$c=$c+1|0;Vb=vb+1|0;Ob=a[$c>>0]|0;if(!(Ob<<24>>24)){_e=0;$e=Vb;break}else{bd=Ob;Mb=Ob&255;vb=Vb}}}while(0);vb=_e&255;Mb=d[$e>>0]|0;if((((vb+-65|0)>>>0<26?vb|32:vb)|0)!=(((Mb+-65|0)>>>0<26?Mb|32:Mb)|0))af=0;else zb=568}else zb=568;while(0);if((zb|0)==568){zb=0;af=1}sb=e+19304+(af<<2)|0;if((c[sb>>2]|0)>=4)break h;Wb=wc;S:do if(!(Wb&3)){bf=wc;zb=574}else{Rc=wc;Mb=tb;vb=Wb;while(1){if(!(Mb<<24>>24)){cf=vb;break S}bd=Rc+1|0;$c=bd;if(!($c&3)){bf=bd;zb=574;break S}Rc=bd;Mb=a[bd>>0]|0;vb=$c}}while(0);if((zb|0)==574){zb=0;tb=bf;while(1){df=c[tb>>2]|0;if(!((df&-2139062144^-2139062144)&df+-16843009))tb=tb+4|0;else break}if(!((df&255)<<24>>24))ef=tb;else{vb=tb;while(1){Mb=vb+1|0;if(!(a[Mb>>0]|0)){ef=Mb;break}else vb=Mb}}cf=ef}vb=cf-Wb|0;if((a[wc+(vb+1)>>0]|0)!=1)break h;Ld=+(a[wc+(vb+2)>>0]<<8|d[wc+(vb+3)>>0]|0)*.001953125;g[e+19312+(af<<2)>>2]=Ld;do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=2)break;h[A>>3]=Ld;Lc(0,25265,A)}while(0);g[e+19320+(af<<2)>>2]=0.0;c[sb>>2]=3;break}case -1:{Wb=c[Ga>>2]|0;vb=(c[Aa>>2]<<5)+32|0;if(!Wb)ff=Mc(vb)|0;else ff=Oc(Wb,vb)|0;if(!ff)gf=0;else{c[Ga>>2]=ff;vb=c[Aa>>2]|0;c[Aa>>2]=vb+1;Wb=ff+(vb<<5)+8|0;tb=ff+(vb<<5)|0;c[tb>>2]=0;b[tb+4>>1]=0;a[tb+6>>0]=0;c[Wb>>2]=0;c[Wb+4>>2]=0;c[Wb+8>>2]=0;c[Wb+12>>2]=0;c[Wb+16>>2]=0;c[Wb+20>>2]=0;gf=(c[Ga>>2]|0)+((c[Aa>>2]|0)+-1<<5)|0}do if(!(c[Ba>>2]&32)){if((c[Ca>>2]|0)<=3)break;switch(d[wc>>0]|0){case 0:{hf=24710;break}case 1:{hf=24699;break}case 2:{hf=24689;break}case 3:{hf=24683;break}default:hf=24674}c[z>>2]=hf;Lc(0,25785,z)}while(0);if(!gf){if(c[Ba>>2]&32|0)break h;c[y>>2]=364;Lc(0,25822,y);break h}sb=gf+3|0;Wb=c[ta>>2]|0;a[sb>>0]=Wb;a[sb+1>>0]=Wb>>8;a[sb+2>>0]=Wb>>16;a[sb+3>>0]=Wb>>24;Wb=gf+20|0;sb=c[Ba>>2]|0;tb=sb>>>5&1;vb=tb^1;T:do if(xc|0){if(sb&2048|0){Mb=gf+24|0;Rc=c[Wb>>2]|0;do if((c[Mb>>2]|0)==(xc|0))jf=Rc;else{if(!Rc)kf=Mc(xc)|0;else kf=Oc(Rc,xc)|0;if(kf|0){c[Wb>>2]=kf;c[Mb>>2]=xc;jf=kf;break}if(tb|0)break T;c[x>>2]=265;Lc(0,24917,x);break T}while(0);Wc(jf|0,wc|0,xc|0)|0;c[gf+28>>2]=xc;break}Mb=a[wc>>0]|0;Rc=wc+1|0;$c=xc+-1|0;bd=Mb&255;if((Mb&255)>3){if(!tb){c[w>>2]=289;c[w+4>>2]=bd;Lc(0,23305,w)}Eb=c[Wb>>2]|0;if(Eb|0)Nc(Eb);c[Wb>>2]=0;c[gf+24>>2]=0;c[gf+28>>2]=0;lf=0}else{Eb=c[4996+(bd<<2)>>2]|0;U:do if(Mb<<24>>24!=2&Eb>>>0<$c>>>0){Vb=$c;Ob=Rc;while(1){if(a[Ob>>0]|0){mf=Ob;nf=Vb;break U}Ic=Vb+-1|0;Fc=Ob+1|0;if(Ic>>>0>Eb>>>0){Vb=Ic;Ob=Fc}else{mf=Fc;nf=Ic;break}}}else{mf=Rc;nf=$c}while(0);Oa[c[5012+(bd<<2)>>2]&127](Wb,mf,nf-((nf>>>0)%(Eb>>>0)|0)|0,vb);lf=c[gf+28>>2]|0}if(lf|tb|0)break;c[v>>2]=277;Lc(0,25007,v)}while(0);if(c[Ba>>2]&32|0)break h;if((c[Ca>>2]|0)<=3)break h;tb=c[ta>>2]|0;vb=c[Wb>>2]|0;c[u>>2]=tb<<24>>24;c[u+4>>2]=tb>>>8<<24>>24;c[u+8>>2]=tb<<8>>24;c[u+12>>2]=tb>>24;c[u+16>>2]=vb;Lc(0,25895,u);break}case 4:{vb=c[Ba>>2]|0;if(!(vb&65536))break h;tb=a[wc>>0]|0;if(!xc)break h;V:do if(!(vb&32)){if((c[Ca>>2]|0)<=3)break;sb=c[1719]|0;$c=(sb|0)==0;if((c[1734]|0)>-1){do if($c){Rc=a[6934]|0;a[6934]=Rc+255|Rc;Rc=c[1715]|0;if(!(Rc&8)){c[1717]=0;c[1716]=0;Mb=c[1726]|0;c[1722]=Mb;c[1720]=Mb;Ob=Mb+(c[1727]|0)|0;c[1719]=Ob;of=Ob;pf=Mb;break}else{c[1715]=Rc|32;break V}}else{of=sb;pf=c[1720]|0}while(0);if((of-pf|0)>>>0<39){Ia[c[6896>>2]&127](6860,25932,39)|0;break}Eb=pf;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25932,39)|0)>>>0<39)break;qf=0;rf=25971;sf=c[1720]|0}else{qf=39;rf=25932;sf=Eb}Wc(sf|0,rf|0,qf|0)|0;c[1720]=(c[1720]|0)+qf;break}else{do if($c){Eb=a[6934]|0;a[6934]=Eb+255|Eb;Eb=c[1715]|0;if(!(Eb&8)){c[1717]=0;c[1716]=0;bd=c[1726]|0;c[1722]=bd;c[1720]=bd;Rc=bd+(c[1727]|0)|0;c[1719]=Rc;tf=Rc;uf=bd;break}else{c[1715]=Eb|32;break V}}else{tf=sb;uf=c[1720]|0}while(0);if((tf-uf|0)>>>0<39){Ia[c[6896>>2]&127](6860,25932,39)|0;break}sb=uf;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,25932,39)|0)>>>0<39)break;vf=0;wf=25971;xf=c[1720]|0}else{vf=39;wf=25932;xf=sb}Wc(xf|0,wf|0,vf|0)|0;c[1720]=(c[1720]|0)+vf;break}}while(0);vb=c[Xa>>2]|0;Wb=((c[Ya>>2]|0)*36|0)+36|0;if(!vb)yf=Mc(Wb)|0;else yf=Oc(vb,Wb)|0;do if(yf|0){c[Xa>>2]=yf;Wb=c[Ya>>2]|0;c[Ya>>2]=Wb+1;vb=yf+(Wb*36|0)+4|0;a[yf+(Wb*36|0)>>0]=0;c[vb>>2]=0;c[vb+4>>2]=0;c[vb+8>>2]=0;c[vb+12>>2]=0;c[vb+16>>2]=0;c[vb+20>>2]=0;c[vb+24>>2]=0;c[vb+28>>2]=0;vb=(c[Ya>>2]|0)+-1|0;Wb=c[Xa>>2]|0;sb=Wb+(vb*36|0)|0;if(!sb)break;$c=wc+1|0;Eb=xc+-1|0;bd=$c;W:do if((Eb|0)>0){Rc=0;Mb=$c;while(1){if(!(a[Mb>>0]|0))break;Ob=Mb+1|0;Vb=Ob-bd|0;if((Vb|0)<(Eb|0)){Rc=Vb;Mb=Ob}else{zf=Ob;zb=665;break W}}if((Eb|0)==(Rc|0))break;zf=Mb+1|0;zb=665}else{zf=$c;zb=665}while(0);do if((zb|0)==665){zb=0;Ob=zf-bd|0;if(Eb>>>0<=Ob>>>0)break;Vb=Wb+(vb*36|0)+16|0;X:do if(Ob>>>0>1){Ic=Ob;Fc=$c;while(1){if(a[Fc>>0]|0){Af=Fc;Bf=Ic;zb=673;break X}Pc=Ic+-1|0;Dc=Fc+1|0;if(Pc>>>0>1){Ic=Pc;Fc=Dc}else{Cf=Dc;Df=Pc;zb=671;break}}}else{Cf=$c;Df=Ob;zb=671}while(0);do if((zb|0)==671){zb=0;if(Df|0){Af=Cf;Bf=1;zb=673;break}Mb=Wb+(vb*36|0)+20|0;Ef=Cf;Ff=0;Gf=c[Mb>>2]|0;Hf=1;If=Mb;Jf=1;Kf=0;zb=680}while(0);do if((zb|0)==673){zb=0;Mb=0;Rc=Bf;do{Rc=((d[Af+Mb>>0]|0)>>>7&255)+Rc|0;Mb=Mb+1|0}while((Mb|0)!=(Bf|0));Mb=Rc+1|0;Fc=Wb+(vb*36|0)+20|0;Ic=c[Fc>>2]|0;if(Mb|0){Ef=Af;Ff=Bf;Gf=Ic;Hf=Mb;If=Fc;Jf=0;Kf=Rc;zb=680;break}do if(Ic|0){Mb=c[Vb>>2]|0;if(!Mb)break;Nc(Mb)}while(0);c[Vb>>2]=0;c[Fc>>2]=0;c[Wb+(vb*36|0)+24>>2]=0;Lf=Af;Mf=Bf;Nf=0;Of=Vb;Pf=0;Qf=Rc;zb=690}while(0);do if((zb|0)==680){zb=0;Ic=c[Vb>>2]|0;if((Gf|0)==(Hf|0))if(Jf){Rf=Gf;Sf=Ic;Tf=Kf;zb=696;break}else{Lf=Ef;Mf=Ff;Nf=Gf;Of=Vb;Pf=Ic;Qf=Kf;zb=690;break}if(!Ic)Uf=Mc(Hf)|0;else Uf=Oc(Ic,Hf)|0;if(Uf|0){c[Vb>>2]=Uf;c[If>>2]=Hf;if(Jf){Rf=Hf;Sf=Uf;Tf=Kf;zb=696;break}else{Lf=Ef;Mf=Ff;Nf=Hf;Of=Vb;Pf=Uf;Qf=Kf;zb=690;break}}Ic=c[Vb>>2]|0;if(Ic|0)Nc(Ic);c[Vb>>2]=0;c[Wb+(vb*36|0)+20>>2]=0;c[Wb+(vb*36|0)+24>>2]=0}while(0);if((zb|0)==690){zb=0;Vb=0;Ic=Pf;while(1){Mb=Lf+Vb|0;fd=a[Mb>>0]|0;if(fd<<24>>24>-1){a[Ic>>0]=fd;Vf=Ic+1|0}else{a[Ic>>0]=(fd&255)>>>6|192;a[Ic+1>>0]=d[Mb>>0]&63|128;Vf=Ic+2|0}Vb=Vb+1|0;if((Vb|0)==(Mf|0))break;else Ic=Vf}Rf=Nf;Sf=c[Of>>2]|0;Tf=Qf;zb=696}if((zb|0)==696){zb=0;a[Sf+Tf>>0]=0;c[Wb+(vb*36|0)+24>>2]=Rf}a[sb>>0]=a[zf>>0]|0;Ic=zf+1|0;Vb=Eb-Ob+-1|0;Mb=tb&255;fd=c[4996+(Mb<<2)>>2]|0;Pc=Ic;Y:do if((Vb|0)>0){if((Mb+-1|0)>>>0<2){Dc=0;cd=Ic;while(1){if(!(a[cd>>0]|0)){if(fd>>>0>(Vb-Dc|0)>>>0)break Y;else Wf=1;while(1){if(a[cd+Wf>>0]|0){Xf=Wf;break}kd=Wf+1|0;if(kd>>>0>>0)Wf=kd;else{Xf=kd;break}}Yc=cd+fd|0;if((Xf|0)==(fd|0)){Yf=Yc;zb=720;break Y}else Zf=Yc}else Zf=cd+fd|0;Dc=Zf-Pc|0;if((Dc|0)>=(Vb|0)){Yf=Zf;zb=720;break Y}else cd=Zf}}switch(tb<<24>>24){case 3:{cd=0;Dc=Ic;while(1){if(!(a[Dc>>0]|0))break;Rc=Dc+fd|0;Fc=Rc-Pc|0;if((Fc|0)<(Vb|0)){cd=Fc;Dc=Rc}else{Yf=Rc;zb=720;break Y}}if(fd>>>0>(Vb-cd|0)>>>0)break Y;Yf=Dc+fd|0;zb=720;break Y;break}case 0:{Rc=0;Fc=Ic;while(1){if(!(a[Fc>>0]|0))break;Yc=Fc+fd|0;Nb=Yc-Pc|0;if((Nb|0)<(Vb|0)){Rc=Nb;Fc=Yc}else{Yf=Yc;zb=720;break Y}}if(fd>>>0>(Vb-Rc|0)>>>0)break Y;Yf=Fc+fd|0;zb=720;break Y;break}default:{Dc=0;cd=Ic;while(1){if(!(a[cd>>0]|0)){if(fd>>>0>(Vb-Dc|0)>>>0)break Y;Yc=cd+fd|0;switch(tb<<24>>24){case 0:case 3:{Yf=Yc;zb=720;break Y;break}default:_f=Yc}}else _f=cd+fd|0;Dc=_f-Pc|0;if((Dc|0)>=(Vb|0)){Yf=_f;zb=720;break}else cd=_f}}}}else{Yf=Ic;zb=720}while(0);do if((zb|0)==720){zb=0;Ob=Yf-Pc|0;if((Yf|0)==0|Vb>>>0<=Ob>>>0)break;cd=Wb+(vb*36|0)+4|0;Dc=(c[Ba>>2]|0)>>>5&1;Fc=Dc^1;if((tb&255)>3){if(!Dc){c[q>>2]=289;c[q+4>>2]=Mb;Lc(0,23305,q)}Dc=c[cd>>2]|0;if(Dc|0)Nc(Dc);c[cd>>2]=0;c[Wb+(vb*36|0)+8>>2]=0;c[Wb+(vb*36|0)+12>>2]=0}else{Z:do if(tb<<24>>24!=2&fd>>>0>>0){Dc=Ob;Rc=Ic;while(1){if(a[Rc>>0]|0){$f=Rc;ag=Dc;break Z}Yc=Dc+-1|0;Nb=Rc+1|0;if(Yc>>>0>fd>>>0){Dc=Yc;Rc=Nb}else{$f=Nb;ag=Yc;break}}}else{$f=Ic;ag=Ob}while(0);Oa[c[5012+(Mb<<2)>>2]&127](cd,$f,ag-((ag>>>0)%(fd>>>0)|0)|0,Fc)}Rc=Vb-Ob|0;if((Vb|0)==(Ob|0)){if(!(c[Ba>>2]&32)){c[p>>2]=414;Lc(0,26252,p)}Bb(Xa,Ya);break h}Dc=Mc(Rc)|0;c[Wb+(vb*36|0)+32>>2]=Dc;if(!Dc){if(!(c[Ba>>2]&32)){c[o>>2]=421;Lc(0,26341,o)}Bb(Xa,Ya);break h}else{Wc(Dc|0,Yf|0,Rc|0)|0;c[Wb+(vb*36|0)+28>>2]=Rc;if(c[Ba>>2]&32|0)break h;if((c[Ca>>2]|0)<=3)break h;c[n>>2]=a[sb>>0];Lc(0,26443,n);break h}}while(0);if(!(c[Ba>>2]&32)){c[r>>2]=407;Lc(0,26149,r)}Bb(Xa,Ya);break h}while(0);Bb(Xa,Ya);if(c[Ba>>2]&32|0)break h;c[s>>2]=395;Lc(0,26048,s);break h}while(0);if(c[Ba>>2]&32|0)break h;c[t>>2]=387;Lc(0,25972,t);break}default:{if(c[Ba>>2]&32|0)break h;c[m>>2]=910;c[m+4>>2]=Fb;Lc(0,26487,m)}}while(0);if(ub)break;Nc(wc)}while(0);if(Rb>>>0>>0)rb=Rb;else break b}if((zb|0)==68){if(c[Ba>>2]&32|0)break;c[ma>>2]=785;c[ma+4>>2]=ta;Lc(0,23803,ma);break}else if((zb|0)==74){if(c[Ba>>2]&32|0)break;c[ka>>2]=792;Lc(0,23951,ka);break}}while(0);Ea=1}while(0);Nc(ua);bg=Ea}else{_:do if((Da&8224|0)==8192?(c[Ca>>2]|0)>2:0){Ea=c[1719]|0;ua=(Ea|0)==0;if((c[1734]|0)>-1){do if(ua){ka=a[6934]|0;a[6934]=ka+255|ka;ka=c[1715]|0;if(!(ka&8)){c[1717]=0;c[1716]=0;Ba=c[1726]|0;c[1722]=Ba;c[1720]=Ba;zb=Ba+(c[1727]|0)|0;c[1719]=zb;cg=zb;dg=Ba;break}else{c[1715]=ka|32;break _}}else{cg=Ea;dg=c[1720]|0}while(0);if((cg-dg|0)>>>0<43){Ia[c[6896>>2]&127](6860,23662,43)|0;break}ka=dg;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,23662,43)|0)>>>0<43)break;eg=0;fg=23705;gg=c[1720]|0}else{eg=43;fg=23662;gg=ka}Wc(gg|0,fg|0,eg|0)|0;c[1720]=(c[1720]|0)+eg;break}else{do if(ua){ka=a[6934]|0;a[6934]=ka+255|ka;ka=c[1715]|0;if(!(ka&8)){c[1717]=0;c[1716]=0;Ba=c[1726]|0;c[1722]=Ba;c[1720]=Ba;zb=Ba+(c[1727]|0)|0;c[1719]=zb;hg=zb;ig=Ba;break}else{c[1715]=ka|32;break _}}else{hg=Ea;ig=c[1720]|0}while(0);if((hg-ig|0)>>>0<43){Ia[c[6896>>2]&127](6860,23662,43)|0;break}Ea=ig;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,23662,43)|0)>>>0<43)break;jg=0;kg=23705;lg=c[1720]|0}else{jg=43;kg=23662;lg=Ea}Wc(lg|0,kg|0,jg|0)|0;c[1720]=(c[1720]|0)+jg;break}}while(0);jg=Na[c[(c[f>>2]|0)+20>>2]&127](e,pa)|0;bg=(jg|0)<0?jg:1}if((xa&16)==0|(bg|0)<1){wa=bg;i=j;return wa|0}xa=Na[c[(c[f>>2]|0)+20>>2]&127](e,pa)|0;wa=(xa|0)<0?xa:bg;i=j;return wa|0}function Bb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b>>2]|0;if(!d)return;e=d+-1|0;d=c[a>>2]|0;f=d+(e*36|0)+16|0;g=c[f>>2]|0;if(g|0)Nc(g);c[f>>2]=0;c[d+(e*36|0)+20>>2]=0;c[d+(e*36|0)+24>>2]=0;f=d+(e*36|0)+4|0;g=c[f>>2]|0;if(g|0)Nc(g);c[f>>2]=0;c[d+(e*36|0)+8>>2]=0;c[d+(e*36|0)+12>>2]=0;f=c[d+(e*36|0)+32>>2]|0;if(f|0)Nc(f);f=c[b>>2]|0;e=c[a>>2]|0;if(f>>>0<=1){Nc(e);c[a>>2]=0;c[b>>2]=0;return}d=(f*36|0)+-36|0;if(!e)h=Mc(d)|0;else h=Oc(e,d)|0;if(!h)return;c[a>>2]=h;c[b>>2]=(c[b>>2]|0)+-1;return}function Cb(a){a=a|0;var b=0,d=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+32|0;d=b+24|0;f=b+16|0;h=b+8|0;j=b;k=(c[a+27372>>2]&3584|0)==0;l=k<<31>>31;if(k){if(c[a+27564>>2]&32|0){m=-1;i=b;return m|0}c[j>>2]=391;Lc(0,26795,j);m=-1;i=b;return m|0}j=(c[a+19160>>2]|0)!=0;k=j<<31>>31;if(j){if(c[a+27564>>2]&32|0){m=-1;i=b;return m|0}c[h>>2]=411;Lc(0,26913,h);m=-1;i=b;return m|0}h=c[a+19084+(k<<2)+(l<<2)>>2]|0;c[a+19116>>2]=h;c[a+19120>>2]=c[a+19088+(k<<2)+(l<<2)>>2];c[a+19124>>2]=c[((c[a+27380>>2]|0)==2?a+19092+(k<<2)+(l<<2)|0:a+19096+(k<<2)+(l<<2)|0)>>2];l=(h|0)==102;h=l?1:20;if(!l){if(!(c[a+27564>>2]&32)){c[f>>2]=355;Lc(0,27038,f)}c[a+27864>>2]=37;m=-1;i=b;return m|0}c[a+19100>>2]=h;c[a+19104>>2]=(h+-15|0)>>>0<2?2:1;if(ob(a)|0){c[a+27864>>2]=11;if(c[a+27564>>2]&32|0){m=-1;i=b;return m|0}c[d>>2]=433;Lc(0,27157,d);m=-1;i=b;return m|0}d=-256;do{g[a+10660+(d+256<<2)>>2]=+Ic(+(d+210|0)*-.25);d=d+1|0}while((d|0)!=122);d=a+19148|0;h=0;do{f=0;do{l=(((e[7004+(h*110|0)+(f<<1)>>1]|0)+7|0)>>>0)/18|0;k=l+1|0;j=a+9328+(h*92|0)+(f<<2)|0;c[j>>2]=k;n=c[d>>2]|0;c[j>>2]=(l|0)<(n|0)?k:n;f=f+1|0}while((f|0)!=23);o=0;do{f=((e[7004+(h*110|0)+68+(o<<1)>>1]|0)+-1|0)/18|0;n=f+1|0;k=a+10156+(h*56|0)+(o<<2)|0;c[k>>2]=n;l=c[d>>2]|0;c[k>>2]=(f|0)<(l|0)?n:l;o=o+1|0}while((o|0)!=14);h=h+1|0}while((h|0)!=9);c[a+19128>>2]=107;kc(a);m=0;i=b;return m|0}function Db(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=d+19116|0;f=Ma[c[e>>2]&127](a,0,d,0)|0;return (Ma[c[e>>2]&127](b,1,d,1)|0)+f|0}function Eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if((d|0)<=0){e=0;return e|0}f=a+4|0;g=a+36|0;h=a+24|0;i=a+32|0;j=a+8|0;k=d;d=b;b=c[f>>2]|0;while(1){if(b){l=c[b+4>>2]|0;m=c[b+8>>2]|0;if((m|0)>(l|0)){n=m-l|0;m=(n|0)>(k|0)?k:n;Wc((c[b>>2]|0)+l|0,d|0,m|0)|0;l=c[f>>2]|0;n=l+4|0;c[n>>2]=(c[n>>2]|0)+m;n=k-m|0;c[j>>2]=(c[j>>2]|0)+m;if((n|0)>0){o=n;p=d+m|0;q=l}else{e=0;r=17;break}}else{o=k;p=d;q=b}}else{o=k;p=d;q=0}l=c[g>>2]|0;if(!l){m=c[h>>2]|0;s=Mc(16)|0;if(!s){e=-2;r=17;break}n=m>>>0>>0?o:m;c[s+8>>2]=n;m=Mc(n)|0;c[s>>2]=m;if(!m){r=10;break}c[s+4>>2]=0;c[s+12>>2]=0;t=s}else{m=l+12|0;c[g>>2]=c[m>>2];c[m>>2]=0;c[l+4>>2]=0;c[i>>2]=(c[i>>2]|0)+-1;t=l}if(!q){if(!(c[a>>2]|0))c[a>>2]=t}else c[q+12>>2]=t;c[f>>2]=t;k=o;d=p;b=t}if((r|0)==10){Nc(s);e=-2;return e|0}else if((r|0)==17)return e|0;return 0}function Fb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=a+32|0;d=c[b>>2]|0;e=a+28|0;f=c[e>>2]|0;if(d>>>0>f>>>0){g=a+36|0;h=f;i=d;while(1){j=c[g>>2]|0;c[g>>2]=c[j+12>>2];if(!j){k=i;l=h}else{Nc(c[j>>2]|0);Nc(j);k=c[b>>2]|0;l=c[e>>2]|0}j=k+-1|0;c[b>>2]=j;if(j>>>0>l>>>0){h=l;i=j}else{m=j;n=l;break}}}else{m=d;n=f}if(m>>>0>=n>>>0)return;f=a+36|0;d=c[a+24>>2]|0;a=m;while(1){o=Mc(16)|0;if(!o){p=12;break}c[o+8>>2]=d;m=Mc(d)|0;c[o>>2]=m;if(!m){p=10;break}c[o+4>>2]=0;c[o+12>>2]=c[f>>2];c[f>>2]=o;a=a+1|0;c[b>>2]=a;if(a>>>0>=n>>>0){p=12;break}}if((p|0)==10){Nc(o);return}else if((p|0)==12)return}function Gb(a){a=a|0;c[a+27864>>2]=24;return -1}function Hb(a){a=a|0;return}function Ib(a,b,d){a=a|0;b=b|0;d=d|0;c[a+27864>>2]=24;return -1}function Jb(a,b){a=a|0;b=b|0;c[a+27864>>2]=24;return -1}function Kb(a,b){a=a|0;b=b|0;c[a+27864>>2]=24;return -1}function Lb(a,b){a=a|0;b=b|0;c[a+27864>>2]=24;return -1}function Mb(a,b,d){a=a|0;b=b|0;d=d|0;c[a+27864>>2]=24;return -1}function Nb(a,b){a=a|0;b=b|0;c[a+27864>>2]=24;return -1}function Ob(a,b){a=a|0;b=b|0;c[a+27864>>2]=24;return -1}function Pb(a){a=a|0;c[a+27864>>2]=24;return -1}function Qb(a){a=a|0;return}function Rb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=i;i=i+16|0;e=d;c[b+27480>>2]=111;f=c[b+27484>>2]|0;c[b+27504>>2]=(f|0)==0?112:f;f=c[b+27488>>2]|0;g=(f|0)==0?113:f;f=b+27508|0;c[f>>2]=g;h=b+27472|0;if(c[h>>2]&64){j=c[b+27496>>2]|0;if(j|0){k=Ia[j&127](c[b+27468>>2]|0,0,2)|0;l=5}}else{k=Ia[g&127](c[b+27464>>2]|0,0,2)|0;l=5}do if((l|0)==5?(k|0)>=0:0){if(!(c[h>>2]&64))m=Ia[c[f>>2]&127](c[b+27464>>2]|0,-128,2)|0;else{g=c[b+27496>>2]|0;if(!g)break;m=Ia[g&127](c[b+27468>>2]|0,-128,2)|0}if((m|0)>=0?(g=b+27884|0,(Ia[c[(c[b+27452>>2]|0)+8>>2]&127](b,g,128)|0)==128):0){j=a[g>>0]|0;a:do if(!(j<<24>>24)){n=0;o=27346}else{p=3;q=j;r=g;s=27346;while(1){p=p+-1|0;t=a[s>>0]|0;if(!(q<<24>>24==t<<24>>24&((p|0)!=0&t<<24>>24!=0))){n=q;o=s;break a}r=r+1|0;t=s+1|0;q=a[r>>0]|0;if(!(q<<24>>24)){n=0;o=t;break}else s=t}}while(0);j=n<<24>>24==(a[o>>0]|0)?k+-128|0:k;if(!(c[h>>2]&64))u=Ia[c[f>>2]&127](c[b+27464>>2]|0,0,0)|0;else{s=c[b+27496>>2]|0;if(!s)break;u=Ia[s&127](c[b+27468>>2]|0,0,0)|0}if(!((j|0)<1|(u|0)<0)){c[b+27456>>2]=j;c[b+27460>>2]=0;j=c[h>>2]|0;c[h>>2]=j|4;s=a[g>>0]|0;b:do if(!(s<<24>>24)){v=0;w=27346}else{q=3;r=s;p=g;t=27346;while(1){q=q+-1|0;x=a[t>>0]|0;if(!(r<<24>>24==x<<24>>24&((q|0)!=0&x<<24>>24!=0))){v=r;w=t;break b}p=p+1|0;x=t+1|0;r=a[p>>0]|0;if(!(r<<24>>24)){v=0;w=x;break}else t=x}}while(0);if(v<<24>>24!=(a[w>>0]|0)){y=0;i=d;return y|0}c[h>>2]=j|6;g=b+27880|0;c[g>>2]=c[g>>2]|1;y=0;i=d;return y|0}}}while(0);w=b+27456|0;c[w>>2]=-1;c[b+27460>>2]=0;v=c[b+27564>>2]|0;if(!(v&256)){y=0;i=d;return y|0}u=b+27452|0;if((c[u>>2]|0)==5388){c[u>>2]=5532;c[b+27512>>2]=105;u=b+27516|0;c[u>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;c[w>>2]=0;c[h>>2]=c[h>>2]|8;y=0;i=d;return y|0}if(v&32|0){y=-1;i=d;return y|0}c[e>>2]=1090;Lc(0,27350,e);y=-1;i=d;return y|0}function Sb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!(c[a+27472>>2]&64)){e=Ia[c[a+27504>>2]&127](c[a+27464>>2]|0,b,d)|0;return e|0}f=c[a+27492>>2]|0;if(!f){e=-1;return e|0}e=Ia[f&127](c[a+27468>>2]|0,b,d)|0;return e|0}function Tb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=ta(3,f|0)|0;if(d>>>0<=4294963200){g=d;i=e;return g|0}if(!(c[20315]|0))h=81304;else h=c[(va()|0)+64>>2]|0;c[h>>2]=0-d;g=-1;i=e;return g|0}function Ub(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e;g=e+20|0;c[f>>2]=a;c[f+4>>2]=0;c[f+8>>2]=b;c[f+12>>2]=g;c[f+16>>2]=d;d=Ea(140,f|0)|0;if(d>>>0<=4294963200){h=d;j=(h|0)!=0;k=c[g>>2]|0;l=j?-1:k;i=e;return l|0}if(!(c[20315]|0))m=81304;else m=c[(va()|0)+64>>2]|0;c[m>>2]=0-d;h=-1;j=(h|0)!=0;k=c[g>>2]|0;l=j?-1:k;i=e;return l|0}function Vb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+27480|0;if((d|0)<=0){f=0;return f|0}g=a+27472|0;h=a+27460|0;i=0;while(1){j=Ia[c[e>>2]&127](a,b+i|0,d-i|0)|0;if((j|0)<0){f=-1;k=8;break}if(!j){f=i;k=8;break}if(!(c[g>>2]&8))c[h>>2]=(c[h>>2]|0)+j;l=j+i|0;if((l|0)<(d|0))i=l;else{f=l;k=8;break}}if((k|0)==8)return f|0;return 0}function Wb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+16|0;d=b;e=a+27472|0;f=c[e>>2]|0;g=a+27464|0;if(!(f&1))h=f;else{c[d>>2]=c[g>>2];f=ya(6,d|0)|0;d=(f|0)==-4?-115:f;if(d>>>0>4294963200){if(!(c[20315]|0))j=81304;else j=c[(va()|0)+64>>2]|0;c[j>>2]=0-d}h=c[e>>2]|0}c[g>>2]=0;if(!(h&8))k=h;else{h=a+27516|0;g=c[h>>2]|0;if(g|0){d=a+27548|0;j=a+27544|0;f=a+27552|0;l=g;while(1){g=l+12|0;m=c[g>>2]|0;c[h>>2]=m;n=c[d>>2]|0;if(n>>>0<(c[j>>2]|0)>>>0){c[g>>2]=c[f>>2];c[f>>2]=l;c[d>>2]=n+1;o=m}else{Nc(c[l>>2]|0);Nc(l);o=c[h>>2]|0}if(!o)break;else l=o}}Fb(h);c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;k=c[e>>2]|0}if(!(k&64)){i=b;return}k=c[a+27500>>2]|0;e=a+27468|0;if(k|0)Ja[k&127](c[e>>2]|0);c[e>>2]=0;i=b;return}function Xb(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;switch(Ia[c[(c[a+27452>>2]|0)+8>>2]&127](a,f,4)|0){case 4:{c[b>>2]=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);g=1;i=e;return g|0}case -10:{g=-10;i=e;return g|0}default:{g=0;i=e;return g|0}}return 0}function Yb(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;switch(Ia[c[(c[a+27452>>2]|0)+8>>2]&127](a,f,1)|0){case 1:{c[b>>2]=d[f>>0]|0|c[b>>2]<<8;g=1;i=e;return g|0}case -10:{g=-10;i=e;return g|0}default:{g=0;i=e;return g|0}}return 0}function Zb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+1024|0;e=d;f=c[a+27472>>2]|0;if(f&4|0){if(f&64){g=c[a+27496>>2]|0;if(!g)h=8;else{j=Ia[g&127](c[a+27468>>2]|0,b,1)|0;h=6}}else{j=Ia[c[a+27508>>2]&127](c[a+27464>>2]|0,b,1)|0;h=6}if((h|0)==6)if((j|0)>-1){c[a+27460>>2]=j;k=j}else h=8;if((h|0)==8){c[a+27864>>2]=40;k=-1}l=(k|0)>-1?k:-1;i=d;return l|0}if((b|0)>-1){k=a+27452|0;j=b;while(1){if((j|0)<=0){h=15;break}g=Ia[c[(c[k>>2]|0)+8>>2]&127](a,e,(j|0)<1024?j:1024)|0;if((g|0)<0){m=g;break}if(!g){h=15;break}else j=j-g|0}if((h|0)==15)m=La[c[(c[k>>2]|0)+36>>2]&127](a)|0;l=m;i=d;return l|0}if(!(f&8)){c[a+27864>>2]=23;l=-1;i=d;return l|0}f=a+27528|0;m=c[f>>2]|0;if((m|0)<(0-b|0)){c[a+27864>>2]=23;l=-1;i=d;return l|0}else{c[f>>2]=m+b;l=La[c[(c[a+27452>>2]|0)+36>>2]&127](a)|0;i=d;return l|0}return 0}function _b(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ia[c[(c[a+27452>>2]|0)+8>>2]&127](a,b,d)|0;return ((e|0)==(d|0)?e:-10)|0}function $b(a,b){a=a|0;b=b|0;var d=0,e=0;d=(La[c[(c[a+27452>>2]|0)+36>>2]&127](a)|0)-b|0;if((d|0)<0){e=-1;return e|0}e=((Zb(a,0-b|0)|0)!=(d|0))<<31>>31;return e|0}function ac(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+16|0;e=d;f=a+19232|0;if((c[a+27472>>2]&4|0)==0?(c[f>>2]|0)>(b|0):0){c[a+27864>>2]=23;g=-1;i=d;return g|0}h=rb(a,b,e)|0;j=c[f>>2]|0;k=c[e>>2]|0;if((j|0)>=(b|0)|(j|0)<(k|0)){e=a+27452|0;l=h-(La[c[(c[e>>2]|0)+36>>2]&127](a)|0)|0;if((Na[c[(c[e>>2]|0)+20>>2]&127](a,l)|0)==(h|0)){h=k+-1|0;c[f>>2]=h;m=h;n=6}else o=-1}else{m=j;n=6}a:do if((n|0)==6)if((m|0)<(b|0))while(1){if(!(kb(a)|0)){o=0;break a}if((c[f>>2]|0)>=(b|0)){o=0;break}}else o=0;while(0);g=o;i=d;return g|0}function bc(a){a=a|0;var b=0,d=0;if(!(c[a+27472>>2]&8)){b=c[a+27460>>2]|0;return b|0}else{d=(c[a+27528>>2]|0)+(c[a+27536>>2]|0)|0;c[a+27460>>2]=d;b=d;return b|0}return 0}function cc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+27472|0;d=c[b>>2]|0;if(!(d&4))e=d;else{if(d&64){d=c[a+27496>>2]|0;if(!d)f=8;else{g=Ia[d&127](c[a+27468>>2]|0,0,0)|0;f=6}}else{g=Ia[c[a+27508>>2]&127](c[a+27464>>2]|0,0,0)|0;f=6}if((f|0)==6)if((g|0)>-1){d=a+27460|0;c[d>>2]=g;h=d;i=g}else f=8;if((f|0)==8){c[a+27864>>2]=40;h=a+27460|0;i=-1}c[h>>2]=i;c[a+27536>>2]=i;e=c[b>>2]|0}if(!(e&8))return;c[a+27528>>2]=0;c[a+27532>>2]=0;c[a+27460>>2]=c[a+27536>>2];return}function dc(a){a=a|0;var b=0;b=a+27516|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;Fb(b);c[a+27456>>2]=0;c[a+27460>>2]=0;b=a+27472|0;c[b>>2]=c[b>>2]|8;return 0}function ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=a+27528|0;f=c[e>>2]|0;a:do if(((c[a+27524>>2]|0)-f|0)>=(d|0)){g=c[a+27516>>2]|0;if(g){h=g;g=0;while(1){i=c[h+4>>2]|0;j=i+g|0;if((j|0)>(f|0))break;k=c[h+12>>2]|0;if(!k){l=0;break a}else{h=k;g=j}}if((d|0)>0){j=f-g|0;k=i-j|0;m=(k|0)<(d|0);n=m?k:d;Wc(b|0,(c[h>>2]|0)+j|0,n|0)|0;j=(c[e>>2]|0)+n|0;c[e>>2]=j;k=c[h+12>>2]|0;if(m&(k|0)!=0){m=k;k=j;j=n;o=h;p=g;while(1){p=(c[o+4>>2]|0)+p|0;q=k-p|0;r=d-j|0;s=(c[m+4>>2]|0)-q|0;t=(r|0)>(s|0)?s:r;Wc(b+j|0,(c[m>>2]|0)+q|0,t|0)|0;q=t+j|0;k=(c[e>>2]|0)+t|0;c[e>>2]=k;t=c[m+12>>2]|0;if(!((q|0)<(d|0)&(t|0)!=0)){l=q;break}else{r=m;m=t;j=q;o=r}}}else l=n}else l=0}else l=0}else{c[e>>2]=c[a+27532>>2];l=-10}while(0);return ((l|0)<0|(l|0)==(d|0)?l:-1)|0}function fc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)<=-1){d=-1;return d|0}e=a+27528|0;f=c[e>>2]|0;if(((c[a+27524>>2]|0)-f|0)<(b|0)){c[e>>2]=c[a+27532>>2];d=-10;return d|0}g=f+b|0;c[e>>2]=g;if((g|0)<0){d=g;return d|0}d=(c[a+27536>>2]|0)+g|0;return d|0}function gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;do if((b|0)>-1){d=a+27528|0;e=c[d>>2]|0;if((e|0)<(b|0))f=-1;else{g=e-b|0;c[d>>2]=g;f=g}}else{g=a+27528|0;d=c[g>>2]|0;if(((c[a+27524>>2]|0)-d|0)<(0-b|0)){c[g>>2]=c[a+27532>>2];f=-10;break}e=d-b|0;c[g>>2]=e;if((e|0)<0)f=e;else f=(c[a+27536>>2]|0)+e|0}while(0);return f>>31|0}function hc(a,b){a=a|0;b=b|0;return -1}function ic(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=a+27516|0;d=c[b>>2]|0;e=a+27528|0;a:do if(!d){f=a+27536|0;g=0}else{h=a+27520|0;i=a+27536|0;j=a+27524|0;k=a+27548|0;l=a+27544|0;m=a+27552|0;n=d;while(1){o=c[e>>2]|0;p=c[n+4>>2]|0;if((o|0)<(p|0)){f=i;g=n;break a}q=n+12|0;r=n;n=c[q>>2]|0;s=(n|0)==0;if(s)c[h>>2]=0;c[i>>2]=(c[i>>2]|0)+p;c[e>>2]=o-p;c[j>>2]=(c[j>>2]|0)-p;p=c[k>>2]|0;if(p>>>0<(c[l>>2]|0)>>>0){c[q>>2]=c[m>>2];c[m>>2]=r;c[k>>2]=p+1}else{Nc(c[r>>2]|0);Nc(r)}if(s){f=i;g=0;break}}}while(0);c[b>>2]=g;g=c[e>>2]|0;c[a+27532>>2]=g;c[a+27460>>2]=(c[f>>2]|0)+g;return}function jc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;f=i;i=i+4128|0;g=f+16|0;h=f+8|0;j=f;k=f+24|0;l=b+27516|0;m=b+27524|0;n=c[m>>2]|0;o=b+27528|0;p=c[o>>2]|0;do if((n-p|0)<(e|0)){q=b+27512|0;r=e-n+p|0;while(1){if((r|0)<=0){s=37;break}t=Ia[c[q>>2]&127](b,k,4096)|0;if((t|0)<0){s=5;break}if((t|0)<=0){s=12;break}u=Eb(l,k,t)|0;if(u|0){s=9;break}if(t>>>0<4096){s=12;break}else r=r-t|0}a:do if((s|0)==5){if(!(c[b+27564>>2]&32)){c[j>>2]=844;Lc(0,27442,j)}}else if((s|0)==9){if(!(c[b+27564>>2]&32)){c[h>>2]=851;c[h+4>>2]=u;Lc(0,27507,h)}}else if((s|0)==12)if((c[b+27564>>2]&32|0)==0?(c[b+27560>>2]|0)>2:0){r=c[1719]|0;q=(r|0)==0;if((c[1734]|0)>-1){do if(q){t=a[6934]|0;a[6934]=t+255|t;t=c[1715]|0;if(!(t&8)){c[1717]=0;c[1716]=0;v=c[1726]|0;c[1722]=v;c[1720]=v;w=v+(c[1727]|0)|0;c[1719]=w;x=w;y=v;break}else{c[1715]=t|32;s=37;break a}}else{x=r;y=c[1720]|0}while(0);if((x-y|0)>>>0<22){Ia[c[6896>>2]&127](6860,27592,22)|0;s=37;break}t=y;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,27592,22)|0)>>>0<22){s=37;break}z=0;A=27614;B=c[1720]|0}else{z=22;A=27592;B=t}Wc(B|0,A|0,z|0)|0;c[1720]=(c[1720]|0)+z;s=37;break}else{do if(q){t=a[6934]|0;a[6934]=t+255|t;t=c[1715]|0;if(!(t&8)){c[1717]=0;c[1716]=0;v=c[1726]|0;c[1722]=v;c[1720]=v;w=v+(c[1727]|0)|0;c[1719]=w;C=w;D=v;break}else{c[1715]=t|32;s=37;break a}}else{C=r;D=c[1720]|0}while(0);if((C-D|0)>>>0<22){Ia[c[6896>>2]&127](6860,27592,22)|0;s=37;break}r=D;if((a[6935]|0)>-1){if((Ia[c[6896>>2]&127](6860,27592,22)|0)>>>0<22){s=37;break}E=0;F=27614;G=c[1720]|0}else{E=22;F=27592;G=r}Wc(G|0,F|0,E|0)|0;c[1720]=(c[1720]|0)+E;s=37;break}}else s=37;while(0);if((s|0)==37){r=c[m>>2]|0;q=c[o>>2]|0;t=r-q|0;H=(t|0)<(e|0)?t:e;I=q;J=r;break}K=-1;i=f;return K|0}else{H=e;I=p;J=n}while(0);b:do if((J-I|0)>=(H|0)){n=c[l>>2]|0;if(n){p=n;n=0;while(1){L=c[p+4>>2]|0;e=L+n|0;if((e|0)>(I|0))break;m=c[p+12>>2]|0;if(!m){M=0;break b}else{p=m;n=e}}if((H|0)>0){e=I-n|0;m=L-e|0;s=(H|0)>(m|0);E=s?m:H;Wc(d|0,(c[p>>2]|0)+e|0,E|0)|0;e=(c[o>>2]|0)+E|0;c[o>>2]=e;m=c[p+12>>2]|0;if(s&(m|0)!=0){s=m;m=e;e=E;F=p;G=n;while(1){G=(c[F+4>>2]|0)+G|0;D=m-G|0;C=H-e|0;z=(c[s+4>>2]|0)-D|0;A=(C|0)>(z|0)?z:C;Wc(d+e|0,(c[s>>2]|0)+D|0,A|0)|0;D=A+e|0;m=(c[o>>2]|0)+A|0;c[o>>2]=m;A=c[s+12>>2]|0;if(!((D|0)<(H|0)&(A|0)!=0)){M=D;break}else{C=s;s=A;e=D;F=C}}}else M=E}else M=0}else M=0}else{c[o>>2]=c[b+27532>>2];M=-10}while(0);if((M|0)==(H|0)){K=H;i=f;return K|0}if(c[b+27564>>2]&32|0){K=-1;i=f;return K|0}c[g>>2]=869;Lc(0,27615,g);K=-1;i=f;return K|0}function kc(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,i=0,j=0,k=0,l=0,m=0.0;b=+h[a+19296>>3];if(b<0.0)d=+h[a+27832>>3];else d=b;e=a+9284|0;a=0;f=0;b=d*-.5;while(1){if((a|0)<528){d=+(c[5628+(f<<2)>>2]|0)*b;i=c[e>>2]|0;g[i+(a<<2)>>2]=d;g[i+(a+16<<2)>>2]=d}d=((f|0)%64|0|0)==63?-b:b;i=(((f|0)%32|0|0)==31?a+-1023|0:a)+32|0;f=f+1|0;if((f|0)==256){j=256;k=i;l=256;m=d;break}else{a=i;b=d}}while(1){if((k|0)<528){b=+(c[5628+(l<<2)>>2]|0)*m;a=c[e>>2]|0;g[a+(k<<2)>>2]=b;g[a+(k+16<<2)>>2]=b}m=((j|0)%64|0|0)==63?-m:m;a=j;j=j+1|0;k=(((a|0)%32|0|0)==31?k+-1023|0:k)+32|0;if((j|0)==512)break;else l=l+-1|0}return}function lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=d+27352|0;h=(c[d+27344>>2]|0)+(c[f>>2]|0)|0;if(!b){b=d+9272|0;i=(c[b>>2]|0)+15&15;c[b>>2]=i;j=i;k=d+9248|0;l=h}else{j=c[d+9272>>2]|0;k=d+9256|0;l=h+4|0}h=c[k+4>>2]|0;if(!(j&1)){oc((c[k>>2]|0)+(j<<2)|0,h+(j<<2)+4|0,a);m=h;n=j+1|0}else{i=c[k>>2]|0;oc(h+((j+1&15)<<2)|0,i+(j<<2)|0,a);m=i;n=j}j=c[d+9284>>2]|0;d=528-n|0;i=496-n|0;a=m;h=16;k=l;b=j+64+(0-n<<2)|0;while(1){g[k>>2]=(+g[a+8>>2]*+g[b+8>>2]+ +g[a>>2]*+g[b>>2]+ +g[a+16>>2]*+g[b+16>>2]+ +g[a+24>>2]*+g[b+24>>2]+ +g[a+32>>2]*+g[b+32>>2]+ +g[a+40>>2]*+g[b+40>>2]+ +g[a+48>>2]*+g[b+48>>2]+ +g[a+56>>2]*+g[b+56>>2]-(+g[a+12>>2]*+g[b+12>>2]+ +g[a+4>>2]*+g[b+4>>2])-(+g[a+28>>2]*+g[b+28>>2]+ +g[a+20>>2]*+g[b+20>>2])-(+g[a+44>>2]*+g[b+44>>2]+ +g[a+36>>2]*+g[b+36>>2])-(+g[a+60>>2]*+g[b+60>>2]+ +g[a+52>>2]*+g[b+52>>2]))*.000030517578125;h=h+-1|0;if(!h)break;else{a=a+64|0;k=k+8|0;b=b+128|0}}b=j+(i<<2)|0;i=m+1024|0;g[l+128>>2]=(+g[m+1032>>2]*+g[b+136>>2]+ +g[i>>2]*+g[j+(d<<2)>>2]+ +g[m+1040>>2]*+g[b+144>>2]+ +g[m+1048>>2]*+g[b+152>>2]+ +g[m+1056>>2]*+g[b+160>>2]+ +g[m+1064>>2]*+g[b+168>>2]+ +g[m+1072>>2]*+g[b+176>>2]+ +g[m+1080>>2]*+g[b+184>>2])*.000030517578125;d=i;i=m+960|0;m=15;j=l+136|0;l=b+(n<<1<<2)|0;while(1){g[j>>2]=(-(+g[d+-56>>2]*+g[l+-12>>2]+ +g[d+-60>>2]*+g[l+-8>>2])-(+g[d+-48>>2]*+g[l+-20>>2]+ +g[d+-52>>2]*+g[l+-16>>2])-(+g[d+-40>>2]*+g[l+-28>>2]+ +g[d+-44>>2]*+g[l+-24>>2])-(+g[d+-32>>2]*+g[l+-36>>2]+ +g[d+-36>>2]*+g[l+-32>>2])-(+g[d+-24>>2]*+g[l+-44>>2]+ +g[d+-28>>2]*+g[l+-40>>2])-(+g[d+-16>>2]*+g[l+-52>>2]+ +g[d+-20>>2]*+g[l+-48>>2])-(+g[d+-8>>2]*+g[l+-60>>2]+ +g[d+-12>>2]*+g[l+-56>>2])-(+g[d+-4>>2]*+g[l+-64>>2]+ +g[i>>2]*+g[l+-4>>2]))*.000030517578125;m=m+-1|0;if(!m)break;else{n=i;i=i+-64|0;j=j+8|0;l=l+-128|0;d=n}}if(!e)return 0;c[f>>2]=(c[f>>2]|0)+256;return 0}function mc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+256|0;e=d;f=b+27344|0;g=c[f>>2]|0;h=b+27352|0;j=c[h>>2]|0;c[f>>2]=e;c[h>>2]=0;k=Ma[c[b+19084>>2]&127](a,0,b,0)|0;c[f>>2]=g;f=g+j|0;c[f>>2]=c[e>>2];g=f+4|0;c[g>>2]=c[e+8>>2];f=g+4|0;c[f>>2]=c[e+16>>2];g=f+4|0;c[g>>2]=c[e+24>>2];f=g+4|0;c[f>>2]=c[e+32>>2];g=f+4|0;c[g>>2]=c[e+40>>2];f=g+4|0;c[f>>2]=c[e+48>>2];g=f+4|0;c[g>>2]=c[e+56>>2];f=g+4|0;c[f>>2]=c[e+64>>2];g=f+4|0;c[g>>2]=c[e+72>>2];f=g+4|0;c[f>>2]=c[e+80>>2];g=f+4|0;c[g>>2]=c[e+88>>2];f=g+4|0;c[f>>2]=c[e+96>>2];g=f+4|0;c[g>>2]=c[e+104>>2];f=g+4|0;c[f>>2]=c[e+112>>2];g=f+4|0;c[g>>2]=c[e+120>>2];f=g+4|0;c[f>>2]=c[e+128>>2];g=f+4|0;c[g>>2]=c[e+136>>2];f=g+4|0;c[f>>2]=c[e+144>>2];g=f+4|0;c[g>>2]=c[e+152>>2];f=g+4|0;c[f>>2]=c[e+160>>2];g=f+4|0;c[g>>2]=c[e+168>>2];f=g+4|0;c[f>>2]=c[e+176>>2];g=f+4|0;c[g>>2]=c[e+184>>2];f=g+4|0;c[f>>2]=c[e+192>>2];g=f+4|0;c[g>>2]=c[e+200>>2];f=g+4|0;c[f>>2]=c[e+208>>2];g=f+4|0;c[g>>2]=c[e+216>>2];f=g+4|0;c[f>>2]=c[e+224>>2];g=f+4|0;c[g>>2]=c[e+232>>2];f=g+4|0;c[f>>2]=c[e+240>>2];c[f+4>>2]=c[e+248>>2];c[h>>2]=j+128;i=d;return k|0}function nc(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+27344>>2]|0;e=Ma[c[b+19084>>2]&127](a,0,b,1)|0;a=d+((c[b+27352>>2]|0)+-256)|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];a=b+8|0;c[a+4>>2]=c[a>>2];b=a+8|0;c[b+4>>2]=c[b>>2];return e|0}function oc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0,G=0.0,H=0.0,I=0,J=0.0,K=0.0,L=0,M=0.0,N=0.0,O=0,P=0.0,Q=0.0,R=0,S=0.0,T=0.0,U=0,V=0.0,W=0.0,X=0,Y=0.0,Z=0.0,_=0,$=0.0,aa=0.0,ba=0.0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0.0,Aa=0.0,Ba=0,Ca=0.0,Da=0.0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0;e=i;i=i+256|0;f=e;h=f+64|0;j=d+4|0;k=d+124|0;l=f+4|0;g[f>>2]=+g[k>>2]+ +g[d>>2];m=d+8|0;n=d+120|0;o=f+8|0;g[l>>2]=+g[n>>2]+ +g[j>>2];p=d+12|0;q=d+116|0;r=f+12|0;g[o>>2]=+g[q>>2]+ +g[m>>2];s=d+16|0;t=d+112|0;u=f+16|0;g[r>>2]=+g[t>>2]+ +g[p>>2];v=d+20|0;w=d+108|0;x=f+20|0;g[u>>2]=+g[w>>2]+ +g[s>>2];y=d+24|0;z=d+104|0;A=f+24|0;g[x>>2]=+g[z>>2]+ +g[v>>2];B=d+28|0;C=d+100|0;D=f+28|0;g[A>>2]=+g[C>>2]+ +g[y>>2];E=+g[d+96>>2];F=f+32|0;g[D>>2]=E+ +g[B>>2];G=+g[d+32>>2];H=+g[d+92>>2];I=f+36|0;g[F>>2]=H+G;J=+g[d+36>>2];K=+g[d+88>>2];L=f+40|0;g[I>>2]=K+J;M=+g[d+40>>2];N=+g[d+84>>2];O=f+44|0;g[L>>2]=N+M;P=+g[d+44>>2];Q=+g[d+80>>2];R=f+48|0;g[O>>2]=Q+P;S=+g[d+48>>2];T=+g[d+76>>2];U=f+52|0;g[R>>2]=T+S;V=+g[d+52>>2];W=+g[d+72>>2];X=f+56|0;g[U>>2]=W+V;Y=+g[d+56>>2];Z=+g[d+68>>2];_=f+60|0;g[X>>2]=Z+Y;$=+g[d+60>>2];aa=+g[d+64>>2];ba=aa+$;g[_>>2]=ba;ca=f+68|0;g[h>>2]=($-aa)*+g[20314];da=f+72|0;g[ca>>2]=(Y-Z)*+g[20313];ea=f+76|0;g[da>>2]=(V-W)*+g[20312];fa=f+80|0;g[ea>>2]=(S-T)*+g[20311];ga=f+84|0;g[fa>>2]=(P-Q)*+g[20310];ha=f+88|0;g[ga>>2]=(M-N)*+g[20309];ia=f+92|0;g[ha>>2]=(J-K)*+g[20308];ja=f+96|0;g[ia>>2]=(G-H)*+g[20307];ka=f+100|0;g[ja>>2]=(+g[B>>2]-E)*+g[20306];B=f+104|0;g[ka>>2]=(+g[y>>2]-+g[C>>2])*+g[20305];C=f+108|0;g[B>>2]=(+g[v>>2]-+g[z>>2])*+g[20304];z=f+112|0;g[C>>2]=(+g[s>>2]-+g[w>>2])*+g[20303];w=f+116|0;g[z>>2]=(+g[p>>2]-+g[t>>2])*+g[20302];t=f+120|0;g[w>>2]=(+g[m>>2]-+g[q>>2])*+g[20301];E=(+g[j>>2]-+g[n>>2])*+g[20300];n=f+124|0;g[t>>2]=E;H=(+g[d>>2]-+g[k>>2])*+g[20299];g[n>>2]=H;k=f+128|0;d=f+160|0;G=+g[f>>2];j=f+132|0;g[k>>2]=ba+G;ba=+g[l>>2];K=+g[X>>2];q=f+136|0;g[j>>2]=K+ba;J=+g[o>>2];N=+g[U>>2];m=f+140|0;g[q>>2]=N+J;M=+g[r>>2];Q=+g[R>>2];p=f+144|0;g[m>>2]=Q+M;P=+g[u>>2];T=+g[O>>2];s=f+148|0;g[p>>2]=T+P;S=+g[x>>2];W=+g[L>>2];v=f+152|0;g[s>>2]=W+S;V=+g[A>>2];Z=+g[I>>2];y=f+156|0;g[v>>2]=Z+V;Y=+g[D>>2];aa=+g[F>>2];g[y>>2]=aa+Y;la=f+192|0;$=+g[20471];ma=f+164|0;g[d>>2]=(Y-aa)*$;aa=+g[20470];na=f+168|0;g[ma>>2]=(V-Z)*aa;Z=+g[20469];oa=f+172|0;g[na>>2]=(S-W)*Z;W=+g[20468];pa=f+176|0;g[oa>>2]=(P-T)*W;T=+g[20467];qa=f+180|0;g[pa>>2]=(M-Q)*T;Q=+g[20466];ra=f+184|0;g[qa>>2]=(J-N)*Q;N=+g[20465];sa=f+188|0;g[ra>>2]=(ba-K)*N;K=+g[20464];g[sa>>2]=(G-+g[_>>2])*K;G=+g[h>>2];ta=f+196|0;g[la>>2]=H+G;H=+g[ca>>2];ua=f+200|0;g[ta>>2]=E+H;E=+g[da>>2];ba=+g[w>>2];va=f+204|0;g[ua>>2]=ba+E;J=+g[ea>>2];M=+g[z>>2];wa=f+208|0;g[va>>2]=M+J;P=+g[fa>>2];S=+g[C>>2];xa=f+212|0;g[wa>>2]=S+P;V=+g[ga>>2];Y=+g[B>>2];ya=f+216|0;g[xa>>2]=Y+V;za=+g[ha>>2];Aa=+g[ka>>2];Ba=f+220|0;g[ya>>2]=Aa+za;Ca=+g[ia>>2];Da=+g[ja>>2];g[Ba>>2]=Da+Ca;Ea=f+224|0;Fa=f+228|0;g[Ea>>2]=(Da-Ca)*$;Ga=f+232|0;g[Fa>>2]=(Aa-za)*aa;Ha=f+236|0;g[Ga>>2]=(Y-V)*Z;Ia=f+240|0;g[Ha>>2]=(S-P)*W;Ja=f+244|0;g[Ia>>2]=(M-J)*T;Ka=f+248|0;g[Ja>>2]=(ba-E)*Q;La=f+252|0;g[Ka>>2]=(+g[t>>2]-H)*N;g[La>>2]=(+g[n>>2]-G)*K;Ma=k;Na=d;Oa=f;Pa=2;while(1){g[Oa>>2]=+g[Na+-4>>2]+ +g[Ma>>2];g[Oa+4>>2]=+g[Na+-8>>2]+ +g[Ma+4>>2];g[Oa+8>>2]=+g[Na+-12>>2]+ +g[Ma+8>>2];g[Oa+12>>2]=+g[Na+-16>>2]+ +g[Ma+12>>2];g[Oa+16>>2]=(+g[Na+-20>>2]-+g[Ma+16>>2])*+g[20475];g[Oa+20>>2]=(+g[Na+-24>>2]-+g[Ma+20>>2])*+g[20474];g[Oa+24>>2]=(+g[Na+-28>>2]-+g[Ma+24>>2])*+g[20473];g[Oa+28>>2]=(+g[Na+-32>>2]-+g[Ma+28>>2])*+g[20472];g[Oa+32>>2]=+g[Na+28>>2]+ +g[Ma+32>>2];g[Oa+36>>2]=+g[Na+24>>2]+ +g[Ma+36>>2];g[Oa+40>>2]=+g[Na+20>>2]+ +g[Ma+40>>2];g[Oa+44>>2]=+g[Na+16>>2]+ +g[Ma+44>>2];g[Oa+48>>2]=(+g[Ma+48>>2]-+g[Na+12>>2])*+g[20475];g[Oa+52>>2]=(+g[Ma+52>>2]-+g[Na+8>>2])*+g[20474];g[Oa+56>>2]=(+g[Ma+56>>2]-+g[Na+4>>2])*+g[20473];g[Oa+60>>2]=(+g[Ma+60>>2]-+g[Na>>2])*+g[20472];Pa=Pa+-1|0;if(!Pa){Qa=f;Ra=u;Sa=k;Ta=4;break}else{Ma=Ma+64|0;Na=Na+64|0;Oa=Oa+64|0}}while(1){g[Sa>>2]=+g[Ra+-4>>2]+ +g[Qa>>2];g[Sa+4>>2]=+g[Ra+-8>>2]+ +g[Qa+4>>2];g[Sa+8>>2]=(+g[Ra+-12>>2]-+g[Qa+8>>2])*+g[20477];g[Sa+12>>2]=(+g[Ra+-16>>2]-+g[Qa+12>>2])*+g[20476];g[Sa+16>>2]=+g[Ra+12>>2]+ +g[Qa+16>>2];g[Sa+20>>2]=+g[Ra+8>>2]+ +g[Qa+20>>2];g[Sa+24>>2]=(+g[Qa+24>>2]-+g[Ra+4>>2])*+g[20477];g[Sa+28>>2]=(+g[Qa+28>>2]-+g[Ra>>2])*+g[20476];Ta=Ta+-1|0;if(!Ta)break;else{Qa=Qa+32|0;Ra=Ra+32|0;Sa=Sa+32|0}}K=+g[k>>2];G=+g[j>>2];g[f>>2]=G+K;N=+g[20463];g[l>>2]=N*(K-G);G=+g[q>>2];K=+g[m>>2];g[o>>2]=K+G;g[r>>2]=N*(K-G);G=+g[p>>2];K=+g[s>>2];g[u>>2]=K+G;g[x>>2]=N*(G-K);K=+g[v>>2];G=+g[y>>2];H=N*(G-K);g[D>>2]=H;Q=+g[d>>2];E=+g[ma>>2];g[F>>2]=E+Q;g[I>>2]=N*(Q-E);E=+g[na>>2];Q=+g[oa>>2];ba=N*(Q-E);g[O>>2]=ba;T=+g[pa>>2];J=+g[qa>>2];M=J+T;g[R>>2]=M;W=T-J;J=N*W;g[U>>2]=J;T=+g[ra>>2];P=+g[sa>>2];S=P-T;Z=N*S;g[_>>2]=Z;V=+g[la>>2];Y=+g[ta>>2];g[h>>2]=Y+V;g[ca>>2]=N*(V-Y);Y=+g[ua>>2];V=+g[va>>2];aa=N*(V-Y);g[ea>>2]=aa;za=+g[wa>>2];Aa=+g[xa>>2];$=za-Aa;Ca=+g[ya>>2];Da=+g[Ba>>2];Ua=Da-Ca;Va=N*Ua;g[ia>>2]=Va;Wa=+g[Ea>>2];Xa=+g[Fa>>2];Ya=N*(Wa-Xa);Za=+g[Ga>>2];_a=+g[Ha>>2];$a=N*(_a-Za);ab=+g[Ia>>2];bb=+g[Ja>>2];cb=N*(ab-bb);db=+g[Ka>>2];eb=+g[La>>2];fb=+g[20463]*(eb-db);g[n>>2]=fb;gb=+g[o>>2]+ +g[r>>2];g[o>>2]=gb;hb=G+K+H;H=Q+E+ba;ba=P+T+Z;T=V+Y+aa;g[da>>2]=T;aa=Da+Ca+Va;Va=_a+Za+$a;Za=eb+db+fb;db=+g[u>>2]+hb;g[u>>2]=db;eb=+g[x>>2];_a=hb+eb;g[A>>2]=_a;g[x>>2]=+g[D>>2]+eb;eb=M+ba;M=ba+J;J=N*(S+W);W=Aa+za+aa;g[fa>>2]=W;za=aa+N*$;g[ha>>2]=za;g[ga>>2]=N*(Ua+$);$=bb+ab+Za;ab=Za+cb;Za=fb+cb;cb=+g[F>>2]+eb;g[F>>2]=cb;bb=eb+H;g[R>>2]=bb;eb=M+H;g[L>>2]=eb;H=+g[I>>2];Ua=H+M;g[X>>2]=Ua;M=J+H;g[I>>2]=M;H=+g[O>>2];g[U>>2]=H+J;g[O>>2]=Z+H;H=Xa+Wa+$;g[ja>>2]=H;Wa=$+Va;g[z>>2]=Wa;$=ab+Va;g[B>>2]=$;Va=Ya+ab;g[t>>2]=Va;ab=Za+Ya;g[ka>>2]=ab;Ya=$a+Za;g[w>>2]=Ya;Za=fb+$a;g[C>>2]=Za;c[a+1024>>2]=c[f>>2];g[a+960>>2]=H+ +g[h>>2];g[a+896>>2]=cb;g[a+832>>2]=W+H;g[a+768>>2]=db;g[a+704>>2]=Wa+W;g[a+640>>2]=bb;g[a+576>>2]=T+Wa;g[a+512>>2]=gb;g[a+448>>2]=$+T;g[a+384>>2]=eb;g[a+320>>2]=za+$;g[a+256>>2]=_a;g[a+192>>2]=Va+za;g[a+128>>2]=Ua;Ua=+g[ca>>2];g[a+64>>2]=Ua+Va;ca=c[l>>2]|0;c[a>>2]=ca;c[b>>2]=ca;g[b+64>>2]=ab+Ua;g[b+128>>2]=M;M=+g[ga>>2];g[b+192>>2]=M+ab;c[b+256>>2]=c[x>>2];g[b+320>>2]=Ya+M;c[b+384>>2]=c[U>>2];M=+g[ea>>2];g[b+448>>2]=M+Ya;c[b+512>>2]=c[r>>2];g[b+576>>2]=Za+M;c[b+640>>2]=c[O>>2];M=+g[ia>>2];g[b+704>>2]=M+Za;c[b+768>>2]=c[D>>2];Za=+g[n>>2];g[b+832>>2]=Za+M;c[b+896>>2]=c[_>>2];g[b+960>>2]=Za;i=e;return}function pc(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=ya(6,d|0)|0;if(a>>>0>4294963200){if(!(c[20315]|0))e=81304;else e=c[(va()|0)+64>>2]|0;c[e>>2]=0-a;f=-1}else f=a;i=b;return f|0}function qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=i;i=i+48|0;f=e+16|0;g=e;h=e+32|0;j=a+28|0;k=c[j>>2]|0;c[h>>2]=k;l=a+20|0;m=(c[l>>2]|0)-k|0;c[h+4>>2]=m;c[h+8>>2]=b;c[h+12>>2]=d;b=a+60|0;k=a+44|0;n=h;h=2;o=m+d|0;while(1){if(!(c[20315]|0)){c[f>>2]=c[b>>2];c[f+4>>2]=n;c[f+8>>2]=h;m=Ga(146,f|0)|0;if(m>>>0>4294963200){if(!(c[20315]|0))p=81304;else p=c[(va()|0)+64>>2]|0;c[p>>2]=0-m;q=-1}else q=m}else{Ca(108,a|0);c[g>>2]=c[b>>2];c[g+4>>2]=n;c[g+8>>2]=h;m=Ga(146,g|0)|0;if(m>>>0>4294963200){if(!(c[20315]|0))r=81304;else r=c[(va()|0)+64>>2]|0;c[r>>2]=0-m;s=-1}else s=m;ra(0);q=s}if((o|0)==(q|0)){t=13;break}if((q|0)<0){t=15;break}m=o-q|0;u=c[n+4>>2]|0;if(q>>>0<=u>>>0)if((h|0)==2){c[j>>2]=(c[j>>2]|0)+q;v=u;w=q;x=n;y=2}else{v=u;w=q;x=n;y=h}else{z=c[k>>2]|0;c[j>>2]=z;c[l>>2]=z;v=c[n+12>>2]|0;w=q-u|0;x=n+8|0;y=h+-1|0}c[x>>2]=(c[x>>2]|0)+w;c[x+4>>2]=v-w;n=x;h=y;o=m}if((t|0)==13){o=c[k>>2]|0;c[a+16>>2]=o+(c[a+48>>2]|0);k=o;c[j>>2]=k;c[l>>2]=k;A=d}else if((t|0)==15){c[a+16>>2]=0;c[j>>2]=0;c[l>>2]=0;c[a>>2]=c[a>>2]|32;if((h|0)==2)A=0;else A=d-(c[n+4>>2]|0)|0}i=e;return A|0}function rc(a){a=a|0;return}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e;g=e+20|0;c[f>>2]=c[a+60>>2];c[f+4>>2]=0;c[f+8>>2]=b;c[f+12>>2]=g;c[f+16>>2]=d;d=Ea(140,f|0)|0;if(d>>>0<=4294963200)if((d|0)<0)h=7;else j=c[g>>2]|0;else{if(!(c[20315]|0))k=81304;else k=c[(va()|0)+64>>2]|0;c[k>>2]=0-d;h=7}if((h|0)==7){c[g>>2]=-1;j=-1}i=e;return j|0}function tc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=b+104|0;f=c[e>>2]|0;if((f|0)!=0?(c[b+108>>2]|0)>=(f|0):0)g=4;else{f=uc(b)|0;if((f|0)>=0){h=c[e>>2]|0;e=c[b+8>>2]|0;if(h){i=b+4|0;j=c[i>>2]|0;k=h-(c[b+108>>2]|0)|0;h=e;if((e-j|0)<(k|0)){l=i;m=h;g=9}else{c[b+100>>2]=j+(k+-1);n=i;o=h}}else{l=b+4|0;m=e;g=9}if((g|0)==9){c[b+100>>2]=e;n=l;o=m}if(!o)p=c[n>>2]|0;else{m=c[n>>2]|0;n=b+108|0;c[n>>2]=o+1-m+(c[n>>2]|0);p=m}m=p+-1|0;if((d[m>>0]|0|0)==(f|0))q=f;else{a[m>>0]=f;q=f}}else g=4}if((g|0)==4){c[b+100>>2]=0;q=-1}return q|0}function uc(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+16|0;f=e;g=b+8|0;do if(!(c[g>>2]|0)){h=b+74|0;j=a[h>>0]|0;a[h>>0]=j+255|j;j=b+20|0;h=b+44|0;if((c[j>>2]|0)>>>0>(c[h>>2]|0)>>>0)Ia[c[b+36>>2]&127](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[j>>2]=0;j=c[b>>2]|0;if(!(j&20)){k=c[h>>2]|0;c[g>>2]=k;c[b+4>>2]=k;l=8;break}if(!(j&4))m=-1;else{c[b>>2]=j|32;m=-1}}else l=8;while(0);if((l|0)==8)if((Ia[c[b+32>>2]&127](b,f,1)|0)==1)m=d[f>>0]|0;else m=-1;i=e;return m|0}function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=d&255;g=(e|0)!=0;a:do if(g&(b&3|0)!=0){h=d&255;i=e;j=b;while(1){if((a[j>>0]|0)==h<<24>>24){k=i;l=j;break a}m=j+1|0;n=i+-1|0;o=(n|0)!=0;if(o&(m&3|0)!=0){i=n;j=m}else{p=n;q=o;r=m;s=5;break}}}else{p=e;q=g;r=b;s=5}while(0);b:do if((s|0)==5)if(q){b=d&255;if((a[r>>0]|0)==b<<24>>24){k=p;l=r}else{g=_(f,16843009)|0;c:do if(p>>>0>3){e=p;j=r;while(1){i=c[j>>2]^g;if((i&-2139062144^-2139062144)&i+-16843009|0)break;i=j+4|0;h=e+-4|0;if(h>>>0>3){e=h;j=i}else{t=h;u=i;s=11;break c}}v=e;w=j}else{t=p;u=r;s=11}while(0);if((s|0)==11)if(!t){k=0;l=u;break}else{v=t;w=u}while(1){if((a[w>>0]|0)==b<<24>>24){k=v;l=w;break b}g=w+1|0;v=v+-1|0;if(!v){k=0;l=g;break}else w=g}}}else{k=0;l=r}while(0);return (k|0?l:0)|0}function wc(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0.0,eb=0.0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0.0,mb=0.0,nb=0,ob=0.0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0.0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0.0,Vb=0.0,Wb=0.0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,wc=0,yc=0,Ec=0,Fc=0,Gc=0;m=i;i=i+624|0;n=m+24|0;o=m+16|0;p=m+588|0;q=m+576|0;r=m;s=m+536|0;t=m+8|0;u=m+528|0;v=(e|0)!=0;w=s+40|0;x=w;y=s+39|0;s=t+4|0;z=p;A=0-z|0;B=q+12|0;D=q+11|0;q=B;E=q-z|0;F=-2-z|0;G=q+2|0;H=n+288|0;I=p+9|0;J=I;K=p+8|0;L=0;M=0;N=0;O=f;a:while(1){do if((L|0)>-1){if((M|0)<=(2147483647-L|0)){P=M+L|0;break}if(!(c[20315]|0))Q=81304;else Q=c[(va()|0)+64>>2]|0;c[Q>>2]=75;P=-1}else P=L;while(0);f=a[O>>0]|0;if(!(f<<24>>24)){R=254;break}else{S=f;T=O}b:while(1){switch(S<<24>>24){case 37:{U=T;V=T;R=11;break b;break}case 0:{W=T;X=T;break b;break}default:{}}f=T+1|0;S=a[f>>0]|0;T=f}c:do if((R|0)==11)while(1){R=0;if((a[U+1>>0]|0)!=37){W=U;X=V;break c}f=V+1|0;Y=U+2|0;if((a[Y>>0]|0)==37){U=Y;V=f;R=11}else{W=Y;X=f;break}}while(0);f=X-O|0;if(v?(c[e>>2]&32|0)==0:0)xc(O,f,e)|0;if((X|0)!=(O|0)){L=P;M=f;O=W;continue}Y=W+1|0;Z=a[Y>>0]|0;$=(Z<<24>>24)+-48|0;if($>>>0<10){aa=(a[W+2>>0]|0)==36;ba=aa?W+3|0:Y;ca=a[ba>>0]|0;da=aa?$:-1;ea=aa?1:N;fa=ba}else{ca=Z;da=-1;ea=N;fa=Y}Y=ca<<24>>24;d:do if((Y&-32|0)==32){Z=Y;ba=ca;aa=0;$=fa;while(1){if(!(1<>24)+-32|aa;ka=$+1|0;la=a[ka>>0]|0;Z=la<<24>>24;if((Z&-32|0)!=32){ga=la;ha=ja;ia=ka;break}else{ba=la;aa=ja;$=ka}}}else{ga=ca;ha=0;ia=fa}while(0);do if(ga<<24>>24==42){Y=ia+1|0;$=(a[Y>>0]|0)+-48|0;if($>>>0<10?(a[ia+2>>0]|0)==36:0){c[l+($<<2)>>2]=10;ma=1;na=ia+3|0;oa=c[j+((a[Y>>0]|0)+-48<<3)>>2]|0}else{if(ea|0){pa=-1;break a}if(!v){qa=ha;ra=0;sa=Y;ta=0;break}$=(c[g>>2]|0)+(4-1)&~(4-1);aa=c[$>>2]|0;c[g>>2]=$+4;ma=0;na=Y;oa=aa}if((oa|0)<0){qa=ha|8192;ra=ma;sa=na;ta=0-oa|0}else{qa=ha;ra=ma;sa=na;ta=oa}}else{aa=(ga<<24>>24)+-48|0;if(aa>>>0<10){Y=ia;$=0;ba=aa;do{$=($*10|0)+ba|0;Y=Y+1|0;ba=(a[Y>>0]|0)+-48|0}while(ba>>>0<10);if(($|0)<0){pa=-1;break a}else{qa=ha;ra=ea;sa=Y;ta=$}}else{qa=ha;ra=ea;sa=ia;ta=0}}while(0);e:do if((a[sa>>0]|0)==46){ba=sa+1|0;aa=a[ba>>0]|0;if(aa<<24>>24!=42){Z=(aa<<24>>24)+-48|0;if(Z>>>0<10){ua=ba;wa=0;xa=Z}else{ya=0;za=ba;break}while(1){ba=(wa*10|0)+xa|0;Z=ua+1|0;xa=(a[Z>>0]|0)+-48|0;if(xa>>>0>=10){ya=ba;za=Z;break e}else{ua=Z;wa=ba}}}$=sa+2|0;Y=(a[$>>0]|0)+-48|0;if(Y>>>0<10?(a[sa+3>>0]|0)==36:0){c[l+(Y<<2)>>2]=10;ya=c[j+((a[$>>0]|0)+-48<<3)>>2]|0;za=sa+4|0;break}if(ra|0){pa=-1;break a}if(v){Y=(c[g>>2]|0)+(4-1)&~(4-1);ba=c[Y>>2]|0;c[g>>2]=Y+4;ya=ba;za=$}else{ya=0;za=$}}else{ya=-1;za=sa}while(0);$=za;ba=0;while(1){Y=(a[$>>0]|0)+-65|0;if(Y>>>0>57){pa=-1;break a}Aa=$+1|0;Ba=a[27949+(ba*58|0)+Y>>0]|0;Ca=Ba&255;if((Ca+-1|0)>>>0<8){$=Aa;ba=Ca}else break}if(!(Ba<<24>>24)){pa=-1;break}Y=(da|0)>-1;do if(Ba<<24>>24==19)if(Y){pa=-1;break a}else R=54;else{if(Y){c[l+(da<<2)>>2]=Ca;Z=j+(da<<3)|0;aa=c[Z+4>>2]|0;ka=r;c[ka>>2]=c[Z>>2];c[ka+4>>2]=aa;R=54;break}if(!v){pa=0;break a}zc(r,Ca,g)}while(0);if((R|0)==54?(R=0,!v):0){L=P;M=f;N=ra;O=Aa;continue}Y=a[$>>0]|0;aa=(ba|0)!=0&(Y&15|0)==3?Y&-33:Y;Y=qa&-65537;ka=(qa&8192|0)==0?qa:Y;f:do switch(aa|0){case 110:{switch(ba|0){case 0:{c[c[r>>2]>>2]=P;L=P;M=f;N=ra;O=Aa;continue a;break}case 1:{c[c[r>>2]>>2]=P;L=P;M=f;N=ra;O=Aa;continue a;break}case 2:{Z=c[r>>2]|0;c[Z>>2]=P;c[Z+4>>2]=((P|0)<0)<<31>>31;L=P;M=f;N=ra;O=Aa;continue a;break}case 3:{b[c[r>>2]>>1]=P;L=P;M=f;N=ra;O=Aa;continue a;break}case 4:{a[c[r>>2]>>0]=P;L=P;M=f;N=ra;O=Aa;continue a;break}case 6:{c[c[r>>2]>>2]=P;L=P;M=f;N=ra;O=Aa;continue a;break}case 7:{Z=c[r>>2]|0;c[Z>>2]=P;c[Z+4>>2]=((P|0)<0)<<31>>31;L=P;M=f;N=ra;O=Aa;continue a;break}default:{L=P;M=f;N=ra;O=Aa;continue a}}break}case 112:{Da=ka|8;Ea=ya>>>0>8?ya:8;Fa=120;R=66;break}case 88:case 120:{Da=ka;Ea=ya;Fa=aa;R=66;break}case 111:{Z=r;ja=c[Z>>2]|0;la=c[Z+4>>2]|0;if((ja|0)==0&(la|0)==0)Ga=w;else{Z=w;Ha=ja;ja=la;while(1){la=Z+-1|0;a[la>>0]=Ha&7|48;Ha=Uc(Ha|0,ja|0,3)|0;ja=C;if((Ha|0)==0&(ja|0)==0){Ga=la;break}else Z=la}}if(!(ka&8)){Ia=Ga;Ja=ka;Ka=ya;La=0;Ma=28429;R=79}else{Z=x-Ga|0;Ia=Ga;Ja=ka;Ka=(ya|0)>(Z|0)?ya:Z+1|0;La=0;Ma=28429;R=79}break}case 105:case 100:{Z=r;ja=c[Z>>2]|0;Ha=c[Z+4>>2]|0;if((Ha|0)<0){Z=Rc(0,0,ja|0,Ha|0)|0;la=C;Na=r;c[Na>>2]=Z;c[Na+4>>2]=la;Oa=Z;Pa=la;Qa=1;Ra=28429;R=78;break f}if(!(ka&2048)){la=ka&1;Oa=ja;Pa=Ha;Qa=la;Ra=(la|0)==0?28429:28431;R=78}else{Oa=ja;Pa=Ha;Qa=1;Ra=28430;R=78}break}case 117:{Ha=r;Oa=c[Ha>>2]|0;Pa=c[Ha+4>>2]|0;Qa=0;Ra=28429;R=78;break}case 99:{a[y>>0]=c[r>>2];Sa=y;Ta=Y;Ua=1;Va=0;Wa=28429;Xa=w;break}case 109:{if(!(c[20315]|0))Ya=81304;else Ya=c[(va()|0)+64>>2]|0;Ha=c[Ya>>2]|0;ja=0;while(1){if((d[28439+ja>>0]|0)==(Ha|0)){R=85;break}la=ja+1|0;if((la|0)==87){Za=87;_a=28527;break}else ja=la}if((R|0)==85){R=0;if(!ja){$a=28527;R=92;break f}else{Za=ja;_a=28527}}while(1){Ha=_a;do{la=Ha;Ha=Ha+1|0}while((a[la>>0]|0)!=0);Za=Za+-1|0;if(!Za){$a=Ha;R=92;break}else _a=Ha}break}case 115:{ja=c[r>>2]|0;$a=ja|0?ja:30331;R=92;break}case 67:{c[t>>2]=c[r>>2];c[s>>2]=0;c[r>>2]=t;ab=t;bb=-1;R=96;break}case 83:{ja=c[r>>2]|0;if(!ya){Bc(e,32,ta,0,ka);cb=0;R=107}else{ab=ja;bb=ya;R=96}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{db=+h[r>>3];c[o>>2]=0;h[k>>3]=db;if((c[k+4>>2]|0)>=0)if(!(ka&2048)){ja=ka&1;eb=db;fb=ja;gb=(ja|0)==0?30339:30344}else{eb=db;fb=1;gb=30341}else{eb=-db;fb=1;gb=30338}h[k>>3]=eb;ja=c[k+4>>2]&2146435072;do if(ja>>>0<2146435072|(ja|0)==2146435072&0<0){db=+Dc(eb,o)*2.0;la=db!=0.0;if(la)c[o>>2]=(c[o>>2]|0)+-1;Z=aa|32;if((Z|0)==97){Na=aa&32;hb=(Na|0)==0?gb:gb+9|0;ib=fb|2;jb=12-ya|0;do if(!(ya>>>0>11|(jb|0)==0)){kb=jb;lb=8.0;do{kb=kb+-1|0;lb=lb*16.0}while((kb|0)!=0);if((a[hb>>0]|0)==45){mb=-(lb+(-db-lb));break}else{mb=db+lb-lb;break}}else mb=db;while(0);jb=c[o>>2]|0;Ha=(jb|0)<0?0-jb|0:jb;kb=Ac(Ha,((Ha|0)<0)<<31>>31,B)|0;if((kb|0)==(B|0)){a[D>>0]=48;nb=D}else nb=kb;a[nb+-1>>0]=(jb>>31&2)+43;jb=nb+-2|0;a[jb>>0]=aa+15;kb=(ya|0)<1;Ha=(ka&8|0)==0;ob=mb;pb=p;while(1){qb=~~ob;rb=pb+1|0;a[pb>>0]=d[28413+qb>>0]|Na;ob=(ob-+(qb|0))*16.0;do if((rb-z|0)==1){if(Ha&(kb&ob==0.0)){sb=rb;break}a[rb>>0]=46;sb=pb+2|0}else sb=rb;while(0);if(!(ob!=0.0))break;else pb=sb}pb=sb;kb=jb;Ha=(ya|0)!=0&(F+pb|0)<(ya|0)?G+ya-kb|0:E-kb+pb|0;Na=Ha+ib|0;Bc(e,32,ta,Na,ka);if(!(c[e>>2]&32))xc(hb,ib,e)|0;Bc(e,48,ta,Na,ka^65536);rb=pb-z|0;if(!(c[e>>2]&32))xc(p,rb,e)|0;pb=q-kb|0;Bc(e,48,Ha-(rb+pb)|0,0,0);if(!(c[e>>2]&32))xc(jb,pb,e)|0;Bc(e,32,ta,Na,ka^8192);tb=(Na|0)<(ta|0)?ta:Na;break}Na=(ya|0)<0?6:ya;if(la){pb=(c[o>>2]|0)+-28|0;c[o>>2]=pb;ub=db*268435456.0;vb=pb}else{ub=db;vb=c[o>>2]|0}pb=(vb|0)<0?n:H;rb=pb;ob=ub;Ha=pb;do{kb=~~ob>>>0;c[Ha>>2]=kb;Ha=Ha+4|0;ob=(ob-+(kb>>>0))*1.0e9}while(ob!=0.0);la=c[o>>2]|0;if((la|0)>0){jb=la;ib=pb;hb=Ha;while(1){kb=(jb|0)>29?29:jb;qb=hb+-4|0;do if(qb>>>0>>0)wb=ib;else{xb=0;yb=qb;do{zb=Vc(c[yb>>2]|0,0,kb|0)|0;Ab=Sc(zb|0,C|0,xb|0,0)|0;zb=C;Bb=dd(Ab|0,zb|0,1e9,0)|0;c[yb>>2]=Bb;xb=cd(Ab|0,zb|0,1e9,0)|0;yb=yb+-4|0}while(yb>>>0>=ib>>>0);if(!xb){wb=ib;break}yb=ib+-4|0;c[yb>>2]=xb;wb=yb}while(0);qb=hb;while(1){if(qb>>>0<=wb>>>0)break;yb=qb+-4|0;if(!(c[yb>>2]|0))qb=yb;else break}yb=(c[o>>2]|0)-kb|0;c[o>>2]=yb;if((yb|0)>0){jb=yb;ib=wb;hb=qb}else{Cb=yb;Db=wb;Eb=qb;break}}}else{Cb=la;Db=pb;Eb=Ha}if((Cb|0)<0){hb=((Na+25|0)/9|0)+1|0;ib=(Z|0)==102;jb=Cb;yb=Db;zb=Eb;while(1){Ab=0-jb|0;Bb=(Ab|0)>9?9:Ab;do if(yb>>>0>>0){Ab=(1<>>Bb;Gb=0;Hb=yb;do{Ib=c[Hb>>2]|0;c[Hb>>2]=(Ib>>>Bb)+Gb;Gb=_(Ib&Ab,Fb)|0;Hb=Hb+4|0}while(Hb>>>0>>0);Hb=(c[yb>>2]|0)==0?yb+4|0:yb;if(!Gb){Jb=Hb;Kb=zb;break}c[zb>>2]=Gb;Jb=Hb;Kb=zb+4|0}else{Jb=(c[yb>>2]|0)==0?yb+4|0:yb;Kb=zb}while(0);qb=ib?pb:Jb;kb=(Kb-qb>>2|0)>(hb|0)?qb+(hb<<2)|0:Kb;jb=(c[o>>2]|0)+Bb|0;c[o>>2]=jb;if((jb|0)>=0){Lb=Jb;Mb=kb;break}else{yb=Jb;zb=kb}}}else{Lb=Db;Mb=Eb}do if(Lb>>>0>>0){zb=(rb-Lb>>2)*9|0;yb=c[Lb>>2]|0;if(yb>>>0<10){Nb=zb;break}else{Ob=zb;Pb=10}while(1){Pb=Pb*10|0;zb=Ob+1|0;if(yb>>>0>>0){Nb=zb;break}else Ob=zb}}else Nb=0;while(0);yb=(Z|0)==103;Bb=(Na|0)!=0;zb=Na-((Z|0)!=102?Nb:0)+((Bb&yb)<<31>>31)|0;if((zb|0)<(((Mb-rb>>2)*9|0)+-9|0)){jb=zb+9216|0;zb=pb+4+(((jb|0)/9|0)+-1024<<2)|0;hb=((jb|0)%9|0)+1|0;if((hb|0)<9){jb=10;ib=hb;while(1){hb=jb*10|0;ib=ib+1|0;if((ib|0)==9){Qb=hb;break}else jb=hb}}else Qb=10;jb=c[zb>>2]|0;ib=(jb>>>0)%(Qb>>>0)|0;Z=(zb+4|0)==(Mb|0);do if(Z&(ib|0)==0){Rb=Lb;Sb=zb;Tb=Nb}else{ob=(((jb>>>0)/(Qb>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;hb=(Qb|0)/2|0;if(ib>>>0>>0)Ub=.5;else Ub=Z&(ib|0)==(hb|0)?1.0:1.5;do if(!fb){Vb=ob;Wb=Ub}else{if((a[gb>>0]|0)!=45){Vb=ob;Wb=Ub;break}Vb=-ob;Wb=-Ub}while(0);hb=jb-ib|0;c[zb>>2]=hb;if(!(Vb+Wb!=Vb)){Rb=Lb;Sb=zb;Tb=Nb;break}Ha=hb+Qb|0;c[zb>>2]=Ha;if(Ha>>>0>999999999){Ha=Lb;hb=zb;while(1){la=hb+-4|0;c[hb>>2]=0;if(la>>>0>>0){kb=Ha+-4|0;c[kb>>2]=0;Xb=kb}else Xb=Ha;kb=(c[la>>2]|0)+1|0;c[la>>2]=kb;if(kb>>>0>999999999){Ha=Xb;hb=la}else{Yb=Xb;Zb=la;break}}}else{Yb=Lb;Zb=zb}hb=(rb-Yb>>2)*9|0;Ha=c[Yb>>2]|0;if(Ha>>>0<10){Rb=Yb;Sb=Zb;Tb=hb;break}else{_b=hb;$b=10}while(1){$b=$b*10|0;hb=_b+1|0;if(Ha>>>0<$b>>>0){Rb=Yb;Sb=Zb;Tb=hb;break}else _b=hb}}while(0);zb=Sb+4|0;ac=Rb;bc=Tb;cc=Mb>>>0>zb>>>0?zb:Mb}else{ac=Lb;bc=Nb;cc=Mb}zb=0-bc|0;ib=cc;while(1){if(ib>>>0<=ac>>>0){dc=0;break}jb=ib+-4|0;if(!(c[jb>>2]|0))ib=jb;else{dc=1;break}}do if(yb){jb=(Bb&1^1)+Na|0;if((jb|0)>(bc|0)&(bc|0)>-5){ec=aa+-1|0;fc=jb+-1-bc|0}else{ec=aa+-2|0;fc=jb+-1|0}jb=ka&8;if(jb|0){gc=ec;hc=fc;ic=jb;break}do if(dc){jb=c[ib+-4>>2]|0;if(!jb){jc=9;break}if(!((jb>>>0)%10|0)){kc=10;lc=0}else{jc=0;break}while(1){kc=kc*10|0;Z=lc+1|0;if((jb>>>0)%(kc>>>0)|0|0){jc=Z;break}else lc=Z}}else jc=9;while(0);jb=((ib-rb>>2)*9|0)+-9|0;if((ec|32|0)==102){Gb=jb-jc|0;Z=(Gb|0)<0?0:Gb;gc=ec;hc=(fc|0)<(Z|0)?fc:Z;ic=0;break}else{Z=jb+bc-jc|0;jb=(Z|0)<0?0:Z;gc=ec;hc=(fc|0)<(jb|0)?fc:jb;ic=0;break}}else{gc=aa;hc=Na;ic=ka&8}while(0);Na=hc|ic;rb=(Na|0)!=0&1;Bb=(gc|32|0)==102;if(Bb){mc=(bc|0)>0?bc:0;nc=0}else{yb=(bc|0)<0?zb:bc;jb=Ac(yb,((yb|0)<0)<<31>>31,B)|0;if((q-jb|0)<2){yb=jb;while(1){Z=yb+-1|0;a[Z>>0]=48;if((q-Z|0)<2)yb=Z;else{oc=Z;break}}}else oc=jb;a[oc+-1>>0]=(bc>>31&2)+43;yb=oc+-2|0;a[yb>>0]=gc;mc=q-yb|0;nc=yb}yb=fb+1+hc+rb+mc|0;Bc(e,32,ta,yb,ka);if(!(c[e>>2]&32))xc(gb,fb,e)|0;Bc(e,48,ta,yb,ka^65536);do if(Bb){zb=ac>>>0>pb>>>0?pb:ac;Z=zb;do{Gb=Ac(c[Z>>2]|0,0,I)|0;do if((Z|0)==(zb|0)){if((Gb|0)!=(I|0)){pc=Gb;break}a[K>>0]=48;pc=K}else{if(Gb>>>0<=p>>>0){pc=Gb;break}Tc(p|0,48,Gb-z|0)|0;Ha=Gb;while(1){hb=Ha+-1|0;if(hb>>>0>p>>>0)Ha=hb;else{pc=hb;break}}}while(0);if(!(c[e>>2]&32))xc(pc,J-pc|0,e)|0;Z=Z+4|0}while(Z>>>0<=pb>>>0);do if(Na|0){if(c[e>>2]&32|0)break;xc(30382,1,e)|0}while(0);if((hc|0)>0&Z>>>0>>0){zb=hc;Gb=Z;while(1){Ha=Ac(c[Gb>>2]|0,0,I)|0;if(Ha>>>0>p>>>0){Tc(p|0,48,Ha-z|0)|0;hb=Ha;while(1){la=hb+-1|0;if(la>>>0>p>>>0)hb=la;else{qc=la;break}}}else qc=Ha;if(!(c[e>>2]&32))xc(qc,(zb|0)>9?9:zb,e)|0;Gb=Gb+4|0;hb=zb+-9|0;if(!((zb|0)>9&Gb>>>0>>0)){rc=hb;break}else zb=hb}}else rc=hc;Bc(e,48,rc+9|0,9,0)}else{zb=dc?ib:ac+4|0;if((hc|0)>-1){Gb=(ic|0)==0;Z=hc;hb=ac;while(1){la=Ac(c[hb>>2]|0,0,I)|0;if((la|0)==(I|0)){a[K>>0]=48;sc=K}else sc=la;do if((hb|0)==(ac|0)){la=sc+1|0;if(!(c[e>>2]&32))xc(sc,1,e)|0;if(Gb&(Z|0)<1){tc=la;break}if(c[e>>2]&32|0){tc=la;break}xc(30382,1,e)|0;tc=la}else{if(sc>>>0<=p>>>0){tc=sc;break}Tc(p|0,48,sc+A|0)|0;la=sc;while(1){kb=la+-1|0;if(kb>>>0>p>>>0)la=kb;else{tc=kb;break}}}while(0);Ha=J-tc|0;if(!(c[e>>2]&32))xc(tc,(Z|0)>(Ha|0)?Ha:Z,e)|0;la=Z-Ha|0;hb=hb+4|0;if(!(hb>>>0>>0&(la|0)>-1)){uc=la;break}else Z=la}}else uc=hc;Bc(e,48,uc+18|0,18,0);if(c[e>>2]&32|0)break;xc(nc,q-nc|0,e)|0}while(0);Bc(e,32,ta,yb,ka^8192);tb=(yb|0)<(ta|0)?ta:yb}else{ib=(aa&32|0)!=0;Na=eb!=eb|0.0!=0.0;pb=Na?0:fb;Bb=pb+3|0;Bc(e,32,ta,Bb,Y);rb=c[e>>2]|0;if(!(rb&32)){xc(gb,pb,e)|0;wc=c[e>>2]|0}else wc=rb;if(!(wc&32))xc(Na?(ib?30378:30365):ib?30357:30361,3,e)|0;Bc(e,32,ta,Bb,ka^8192);tb=(Bb|0)<(ta|0)?ta:Bb}while(0);L=P;M=tb;N=ra;O=Aa;continue a;break}default:{Sa=O;Ta=ka;Ua=ya;Va=0;Wa=28429;Xa=w}}while(0);g:do if((R|0)==66){R=0;aa=r;f=c[aa>>2]|0;ba=c[aa+4>>2]|0;aa=Fa&32;if(!((f|0)==0&(ba|0)==0)){$=w;ja=f;f=ba;do{$=$+-1|0;a[$>>0]=d[28413+(ja&15)>>0]|aa;ja=Uc(ja|0,f|0,4)|0;f=C}while(!((ja|0)==0&(f|0)==0));f=r;if((Da&8|0)==0|(c[f>>2]|0)==0&(c[f+4>>2]|0)==0){Ia=$;Ja=Da;Ka=Ea;La=0;Ma=28429;R=79}else{Ia=$;Ja=Da;Ka=Ea;La=2;Ma=28429+(Fa>>4)|0;R=79}}else{Ia=w;Ja=Da;Ka=Ea;La=0;Ma=28429;R=79}}else if((R|0)==78){R=0;Ia=Ac(Oa,Pa,w)|0;Ja=ka;Ka=ya;La=Qa;Ma=Ra;R=79}else if((R|0)==92){R=0;f=vc($a,0,ya)|0;ja=(f|0)==0;Sa=$a;Ta=Y;Ua=ja?ya:f-$a|0;Va=0;Wa=28429;Xa=ja?$a+ya|0:f}else if((R|0)==96){R=0;f=0;ja=0;aa=ab;while(1){ba=c[aa>>2]|0;if(!ba){yc=f;Ec=ja;break}Bb=Cc(u,ba)|0;if((Bb|0)<0|Bb>>>0>(bb-f|0)>>>0){yc=f;Ec=Bb;break}ba=Bb+f|0;if(bb>>>0>ba>>>0){f=ba;ja=Bb;aa=aa+4|0}else{yc=ba;Ec=Bb;break}}if((Ec|0)<0){pa=-1;break a}Bc(e,32,ta,yc,ka);if(!yc){cb=0;R=107}else{aa=0;ja=ab;while(1){f=c[ja>>2]|0;if(!f){cb=yc;R=107;break g}$=Cc(u,f)|0;aa=$+aa|0;if((aa|0)>(yc|0)){cb=yc;R=107;break g}if(!(c[e>>2]&32))xc(u,$,e)|0;if(aa>>>0>=yc>>>0){cb=yc;R=107;break}else ja=ja+4|0}}}while(0);if((R|0)==107){R=0;Bc(e,32,ta,cb,ka^8192);L=P;M=(ta|0)>(cb|0)?ta:cb;N=ra;O=Aa;continue}if((R|0)==79){R=0;Y=(Ka|0)>-1?Ja&-65537:Ja;ja=r;aa=(c[ja>>2]|0)!=0|(c[ja+4>>2]|0)!=0;if((Ka|0)!=0|aa){ja=(aa&1^1)+(x-Ia)|0;Sa=Ia;Ta=Y;Ua=(Ka|0)>(ja|0)?Ka:ja;Va=La;Wa=Ma;Xa=w}else{Sa=w;Ta=Y;Ua=0;Va=La;Wa=Ma;Xa=w}}Y=Xa-Sa|0;ja=(Ua|0)<(Y|0)?Y:Ua;aa=Va+ja|0;$=(ta|0)<(aa|0)?aa:ta;Bc(e,32,$,aa,Ta);if(!(c[e>>2]&32))xc(Wa,Va,e)|0;Bc(e,48,$,aa,Ta^65536);Bc(e,48,ja,Y,0);if(!(c[e>>2]&32))xc(Sa,Y,e)|0;Bc(e,32,$,aa,Ta^8192);L=P;M=$;N=ra;O=Aa}h:do if((R|0)==254)if(!e)if(!N)pa=0;else{Aa=1;while(1){O=c[l+(Aa<<2)>>2]|0;if(!O){Fc=0;Gc=Aa;break}zc(j+(Aa<<3)|0,O,g);Aa=Aa+1|0;if((Aa|0)>=10){pa=1;break h}}while(1){Aa=Gc+1|0;if(Fc|0){pa=-1;break h}if((Aa|0)>=10){pa=1;break h}Fc=c[l+(Aa<<2)>>2]|0;Gc=Aa}}else pa=P;while(0);i=m;return pa|0}function xc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(yc(e)|0)){h=c[f>>2]|0;i=5}else j=0;else{h=g;i=5}a:do if((i|0)==5){g=e+20|0;f=c[g>>2]|0;k=f;if((h-f|0)>>>0>>0){j=Ia[c[e+36>>2]&127](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){l=d;m=b;n=k;o=0;break b}p=f+-1|0;if((a[b+p>>0]|0)==10)break;else f=p}if((Ia[c[e+36>>2]&127](e,b,f)|0)>>>0>>0){j=f;break a}l=d-f|0;m=b+f|0;n=c[g>>2]|0;o=f}else{l=d;m=b;n=k;o=0}while(0);Wc(n|0,m|0,l|0)|0;c[g>>2]=(c[g>>2]|0)+l;j=o+l|0}while(0);return j|0}function yc(b){b=b|0;var d=0,e=0,f=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;e=c[b>>2]|0;if(!(e&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);f=0}else{c[b>>2]=e|32;f=-1}return f|0}function zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=f;break a;break}case 10:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a;break}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=f;c[e+4>>2]=0;break a;break}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);f=e;g=c[f>>2]|0;i=c[f+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=g;c[e+4>>2]=i;break a;break}case 13:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&65535)<<16>>16;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break}case 14:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&65535;c[i+4>>2]=0;break a;break}case 15:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&255)<<24>>24;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break}case 16:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&255;c[i+4>>2]=0;break a;break}case 17:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break}case 18:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break}default:break a}while(0);while(0);return}function Ac(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){e=d;f=b;g=c;while(1){c=dd(f|0,g|0,10,0)|0;e=e+-1|0;a[e>>0]=c|48;c=f;f=cd(f|0,g|0,10,0)|0;if(!(g>>>0>9|(g|0)==9&c>>>0>4294967295))break;else g=C}h=e;i=f}else{h=d;i=b}if(!i)j=h;else{b=h;h=i;while(1){i=b+-1|0;a[i>>0]=(h>>>0)%10|0|48;if(h>>>0<10){j=i;break}else{b=i;h=(h>>>0)/10|0}}}return j|0}function Bc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+256|0;h=g;do if((d|0)>(e|0)&(f&73728|0)==0){j=d-e|0;Tc(h|0,b|0,(j>>>0>256?256:j)|0)|0;k=c[a>>2]|0;l=(k&32|0)==0;if(j>>>0>255){m=j;n=k;k=l;while(1){if(k){xc(h,256,a)|0;o=c[a>>2]|0}else o=n;m=m+-256|0;k=(o&32|0)==0;if(m>>>0<=255)break;else n=o}if(k)p=j&255;else break}else if(l)p=j;else break;xc(h,p,a)|0}while(0);i=g;return}function Cc(b,d){b=b|0;d=d|0;var e=0,f=0;do if(!b)e=0;else{if(d>>>0<128){a[b>>0]=d;e=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;e=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;e=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;e=4;break}if(!(c[20315]|0))f=81304;else f=c[(va()|0)+64>>2]|0;c[f>>2]=84;e=-1}while(0);return e|0}function Dc(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,l=0,m=0.0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=Uc(d|0,e|0,52)|0;g=f&2047;switch(g|0){case 0:{if(a!=0.0){i=+Dc(a*18446744073709551616.0,b);j=i;l=(c[b>>2]|0)+-64|0}else{j=a;l=0}c[b>>2]=l;m=j;break}case 2047:{m=a;break}default:{c[b>>2]=g+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;m=+h[k>>3]}}return +m}function Ec(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0.0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0,ma=0.0,na=0.0,oa=0,pa=0.0,qa=0,ra=0.0,sa=0,ta=0,ua=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0.0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0.0,Ka=0,La=0,Ma=0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0.0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0.0,Nc=0.0,Oc=0.0,Pc=0.0,Qc=0.0,Tc=0.0,Uc=0,Wc=0,Xc=0.0,Yc=0,Zc=0.0,_c=0,$c=0;g=i;i=i+512|0;j=g;switch(e|0){case 0:{l=24;m=-149;n=4;break}case 1:{l=53;m=-1074;n=4;break}case 2:{l=53;m=-1074;n=4;break}default:o=0.0}a:do if((n|0)==4){e=b+4|0;p=b+100|0;b:while(1){q=c[e>>2]|0;if(q>>>0<(c[p>>2]|0)>>>0){c[e>>2]=q+1;t=d[q>>0]|0}else t=tc(b)|0;switch(t|0){case 9:case 10:case 11:case 12:case 13:case 32:break;default:break b}}c:do switch(t|0){case 43:case 45:{q=1-(((t|0)==45&1)<<1)|0;u=c[e>>2]|0;if(u>>>0<(c[p>>2]|0)>>>0){c[e>>2]=u+1;v=d[u>>0]|0;w=q;break c}else{v=tc(b)|0;w=q;break c}break}default:{v=t;w=1}}while(0);q=v;u=0;while(1){if((q|32|0)!=(a[30369+u>>0]|0)){x=q;y=u;break}do if(u>>>0<7){z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;A=d[z>>0]|0;break}else{A=tc(b)|0;break}}else A=q;while(0);z=u+1|0;if(z>>>0<8){q=A;u=z}else{x=A;y=z;break}}d:do switch(y|0){case 8:break;case 3:{n=23;break}default:{u=(f|0)!=0;if(u&y>>>0>3)if((y|0)==8)break d;else{n=23;break d}e:do if(!y){q=x;z=0;while(1){if((q|32|0)!=(a[30378+z>>0]|0)){B=q;D=z;break e}do if(z>>>0<2){E=c[e>>2]|0;if(E>>>0<(c[p>>2]|0)>>>0){c[e>>2]=E+1;F=d[E>>0]|0;break}else{F=tc(b)|0;break}}else F=q;while(0);E=z+1|0;if(E>>>0<3){q=F;z=E}else{B=F;D=E;break}}}else{B=x;D=y}while(0);switch(D|0){case 3:{z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;G=d[z>>0]|0}else G=tc(b)|0;if((G|0)==40)H=1;else{if(!(c[p>>2]|0)){o=r;break a}c[e>>2]=(c[e>>2]|0)+-1;o=r;break a}while(1){z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;I=d[z>>0]|0}else I=tc(b)|0;if(!((I+-48|0)>>>0<10|(I+-65|0)>>>0<26)?!((I|0)==95|(I+-97|0)>>>0<26):0)break;H=H+1|0}if((I|0)==41){o=r;break a}z=(c[p>>2]|0)==0;if(!z)c[e>>2]=(c[e>>2]|0)+-1;if(!u){if(!(c[20315]|0))J=81304;else J=c[(va()|0)+64>>2]|0;c[J>>2]=22;c[b+104>>2]=0;q=c[b+8>>2]|0;c[b+108>>2]=q-(c[e>>2]|0);c[p>>2]=q;o=0.0;break a}if(!H){o=r;break a}else K=H;while(1){K=K+-1|0;if(!z)c[e>>2]=(c[e>>2]|0)+-1;if(!K){o=r;break a}}break}case 0:{do if((B|0)==48){z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;L=d[z>>0]|0}else L=tc(b)|0;if((L|32|0)!=120){if(!(c[p>>2]|0)){M=48;break}c[e>>2]=(c[e>>2]|0)+-1;M=48;break}z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;O=d[z>>0]|0;P=0}else{O=tc(b)|0;P=0}f:while(1){switch(O|0){case 46:{n=78;break f;break}case 48:break;default:{Q=0;R=0;S=0;T=0;U=O;V=P;W=0;X=0;Y=1.0;Z=0;$=0.0;break f}}z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;O=d[z>>0]|0;P=1;continue}else{O=tc(b)|0;P=1;continue}}if((n|0)==78){z=c[e>>2]|0;if(z>>>0<(c[p>>2]|0)>>>0){c[e>>2]=z+1;aa=d[z>>0]|0}else aa=tc(b)|0;if((aa|0)==48){z=0;u=0;while(1){q=c[e>>2]|0;if(q>>>0<(c[p>>2]|0)>>>0){c[e>>2]=q+1;ba=d[q>>0]|0}else ba=tc(b)|0;q=Sc(z|0,u|0,-1,-1)|0;E=C;if((ba|0)==48){z=q;u=E}else{Q=0;R=0;S=q;T=E;U=ba;V=1;W=1;X=0;Y=1.0;Z=0;$=0.0;break}}}else{Q=0;R=0;S=0;T=0;U=aa;V=P;W=1;X=0;Y=1.0;Z=0;$=0.0}}while(1){u=U+-48|0;z=U|32;if(u>>>0>=10){E=(U|0)==46;if(!(E|(z+-97|0)>>>0<6)){ca=U;break}if(E)if(!W){da=R;ea=Q;fa=R;ga=Q;ha=V;ia=1;ja=X;ka=Y;la=Z;ma=$}else{ca=46;break}else n=90}else n=90;if((n|0)==90){n=0;E=(U|0)>57?z+-87|0:u;do if(!((Q|0)<0|(Q|0)==0&R>>>0<8)){if((Q|0)<0|(Q|0)==0&R>>>0<14){na=Y*.0625;oa=X;pa=na;qa=Z;ra=$+na*+(E|0);break}if((X|0)!=0|(E|0)==0){oa=X;pa=Y;qa=Z;ra=$}else{oa=1;pa=Y;qa=Z;ra=$+Y*.5}}else{oa=X;pa=Y;qa=E+(Z<<4)|0;ra=$}while(0);E=Sc(R|0,Q|0,1,0)|0;da=S;ea=T;fa=E;ga=C;ha=1;ia=W;ja=oa;ka=pa;la=qa;ma=ra}E=c[e>>2]|0;if(E>>>0<(c[p>>2]|0)>>>0){c[e>>2]=E+1;Q=ga;R=fa;S=da;T=ea;U=d[E>>0]|0;V=ha;W=ia;X=ja;Y=ka;Z=la;$=ma;continue}else{Q=ga;R=fa;S=da;T=ea;U=tc(b)|0;V=ha;W=ia;X=ja;Y=ka;Z=la;$=ma;continue}}if(!V){E=(c[p>>2]|0)==0;if(!E)c[e>>2]=(c[e>>2]|0)+-1;if(f){if(!E?(E=c[e>>2]|0,c[e>>2]=E+-1,W|0):0)c[e>>2]=E+-2}else{c[b+104>>2]=0;E=c[b+8>>2]|0;c[b+108>>2]=E-(c[e>>2]|0);c[p>>2]=E}o=+(w|0)*0.0;break a}E=(W|0)==0;u=E?R:S;z=E?Q:T;if((Q|0)<0|(Q|0)==0&R>>>0<8){E=R;q=Q;sa=Z;while(1){ta=sa<<4;E=Sc(E|0,q|0,1,0)|0;q=C;if(!((q|0)<0|(q|0)==0&E>>>0<8)){ua=ta;break}else sa=ta}}else ua=Z;if((ca|32|0)==112){sa=Fc(b,f)|0;E=C;if((sa|0)==0&(E|0)==-2147483648){if(!f){c[b+104>>2]=0;q=c[b+8>>2]|0;c[b+108>>2]=q-(c[e>>2]|0);c[p>>2]=q;o=0.0;break a}if(!(c[p>>2]|0)){wa=0;xa=0}else{c[e>>2]=(c[e>>2]|0)+-1;wa=0;xa=0}}else{wa=sa;xa=E}}else if(!(c[p>>2]|0)){wa=0;xa=0}else{c[e>>2]=(c[e>>2]|0)+-1;wa=0;xa=0}E=Vc(u|0,z|0,2)|0;sa=Sc(E|0,C|0,-32,-1)|0;E=Sc(sa|0,C|0,wa|0,xa|0)|0;sa=C;if(!ua){o=+(w|0)*0.0;break a}if((sa|0)>0|(sa|0)==0&E>>>0>(0-m|0)>>>0){if(!(c[20315]|0))ya=81304;else ya=c[(va()|0)+64>>2]|0;c[ya>>2]=34;o=+(w|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}q=m+-106|0;ta=((q|0)<0)<<31>>31;if((sa|0)<(ta|0)|(sa|0)==(ta|0)&E>>>0>>0){if(!(c[20315]|0))za=81304;else za=c[(va()|0)+64>>2]|0;c[za>>2]=34;o=+(w|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((ua|0)>-1){q=E;ta=sa;Aa=ua;na=$;while(1){Ba=!(na>=.5);Ca=Ba&1|Aa<<1;Da=Ca^1;Ea=na+(Ba?na:na+-1.0);Ba=Sc(q|0,ta|0,-1,-1)|0;Fa=C;if((Ca|0)>-1){q=Ba;ta=Fa;Aa=Da;na=Ea}else{Ga=Ba;Ha=Fa;Ia=Da;Ja=Ea;break}}}else{Ga=E;Ha=sa;Ia=ua;Ja=$}Aa=Rc(32,0,m|0,((m|0)<0)<<31>>31|0)|0;ta=Sc(Ga|0,Ha|0,Aa|0,C|0)|0;Aa=C;if(0>(Aa|0)|0==(Aa|0)&l>>>0>ta>>>0)if((ta|0)<0){Ka=0;n=135}else{La=ta;n=133}else{La=l;n=133}if((n|0)==133)if((La|0)<53){Ka=La;n=135}else{Ma=La;Na=+(w|0);Oa=0.0}if((n|0)==135){na=+Gc(1.0,84-Ka|0);Ea=+(w|0);h[k>>3]=Ea;ta=c[k+4>>2]|0;Pa=+N(+na);h[k>>3]=Pa;Aa=ta&-2147483648|c[k+4>>2];c[k>>2]=c[k>>2];c[k+4>>2]=Aa;Ma=Ka;Na=Ea;Oa=+h[k>>3]}Aa=(Ia&1|0)==0&(Ja!=0.0&(Ma|0)<32);Ea=Na*(Aa?0.0:Ja)+(Oa+Na*+(((Aa&1)+Ia|0)>>>0))-Oa;if(!(Ea!=0.0)){if(!(c[20315]|0))Qa=81304;else Qa=c[(va()|0)+64>>2]|0;c[Qa>>2]=34}o=+Gc(Ea,Ga);break a}else M=B;while(0);Aa=m+l|0;ta=0-Aa|0;q=M;z=0;g:while(1){switch(q|0){case 46:{n=148;break g;break}case 48:break;default:{Ra=q;Sa=0;Ta=0;Ua=z;Va=0;break g}}u=c[e>>2]|0;if(u>>>0<(c[p>>2]|0)>>>0){c[e>>2]=u+1;q=d[u>>0]|0;z=1;continue}else{q=tc(b)|0;z=1;continue}}if((n|0)==148){q=c[e>>2]|0;if(q>>>0<(c[p>>2]|0)>>>0){c[e>>2]=q+1;Wa=d[q>>0]|0}else Wa=tc(b)|0;if((Wa|0)==48){q=0;u=0;while(1){Da=Sc(q|0,u|0,-1,-1)|0;Fa=C;Ba=c[e>>2]|0;if(Ba>>>0<(c[p>>2]|0)>>>0){c[e>>2]=Ba+1;Xa=d[Ba>>0]|0}else Xa=tc(b)|0;if((Xa|0)==48){q=Da;u=Fa}else{Ra=Xa;Sa=Da;Ta=Fa;Ua=1;Va=1;break}}}else{Ra=Wa;Sa=0;Ta=0;Ua=z;Va=1}}c[j>>2]=0;u=Ra+-48|0;q=(Ra|0)==46;h:do if(q|u>>>0<10){Fa=j+496|0;Da=Ra;Ba=0;Ca=0;Ya=q;Za=u;_a=Sa;$a=Ta;ab=Ua;bb=Va;cb=0;db=0;eb=0;i:while(1){do if(Ya)if(!bb){fb=Ba;gb=Ca;hb=Ba;ib=Ca;jb=ab;kb=1;lb=cb;mb=db;nb=eb}else break i;else{ob=Sc(Ba|0,Ca|0,1,0)|0;pb=C;qb=(Da|0)!=48;if((db|0)>=125){if(!qb){fb=_a;gb=$a;hb=ob;ib=pb;jb=ab;kb=bb;lb=cb;mb=db;nb=eb;break}c[Fa>>2]=c[Fa>>2]|1;fb=_a;gb=$a;hb=ob;ib=pb;jb=ab;kb=bb;lb=cb;mb=db;nb=eb;break}rb=j+(db<<2)|0;if(!cb)sb=Za;else sb=Da+-48+((c[rb>>2]|0)*10|0)|0;c[rb>>2]=sb;rb=cb+1|0;tb=(rb|0)==9;fb=_a;gb=$a;hb=ob;ib=pb;jb=1;kb=bb;lb=tb?0:rb;mb=(tb&1)+db|0;nb=qb?ob:eb}while(0);ob=c[e>>2]|0;if(ob>>>0<(c[p>>2]|0)>>>0){c[e>>2]=ob+1;ub=d[ob>>0]|0}else ub=tc(b)|0;Za=ub+-48|0;Ya=(ub|0)==46;if(!(Ya|Za>>>0<10)){vb=ub;wb=fb;xb=hb;yb=gb;zb=ib;Ab=jb;Bb=kb;Cb=lb;Db=mb;Eb=nb;n=171;break h}else{Da=ub;Ba=hb;Ca=ib;_a=fb;$a=gb;ab=jb;bb=kb;cb=lb;db=mb;eb=nb}}Fb=Ba;Gb=Ca;Hb=_a;Ib=$a;Jb=(ab|0)!=0;Kb=cb;Lb=db;Mb=eb;n=179}else{vb=Ra;wb=Sa;xb=0;yb=Ta;zb=0;Ab=Ua;Bb=Va;Cb=0;Db=0;Eb=0;n=171}while(0);do if((n|0)==171){u=(Bb|0)==0;q=u?xb:wb;z=u?zb:yb;u=(Ab|0)!=0;if(!((vb|32|0)==101&u))if((vb|0)>-1){Fb=xb;Gb=zb;Hb=q;Ib=z;Jb=u;Kb=Cb;Lb=Db;Mb=Eb;n=179;break}else{Nb=xb;Ob=zb;Pb=u;Qb=q;Rb=z;Sb=Cb;Tb=Db;Ub=Eb;n=181;break}u=Fc(b,f)|0;bb=C;if((u|0)==0&(bb|0)==-2147483648){if(!f){c[b+104>>2]=0;Da=c[b+8>>2]|0;c[b+108>>2]=Da-(c[e>>2]|0);c[p>>2]=Da;Vb=0.0;break}if(!(c[p>>2]|0)){Wb=0;Xb=0}else{c[e>>2]=(c[e>>2]|0)+-1;Wb=0;Xb=0}}else{Wb=u;Xb=bb}bb=Sc(Wb|0,Xb|0,q|0,z|0)|0;Yb=bb;Zb=xb;_b=C;$b=zb;ac=Cb;bc=Db;cc=Eb;n=185}while(0);if((n|0)==179)if(c[p>>2]|0){c[e>>2]=(c[e>>2]|0)+-1;if(Jb){Yb=Hb;Zb=Fb;_b=Ib;$b=Gb;ac=Kb;bc=Lb;cc=Mb;n=185}else n=182}else{Nb=Fb;Ob=Gb;Pb=Jb;Qb=Hb;Rb=Ib;Sb=Kb;Tb=Lb;Ub=Mb;n=181}if((n|0)==181)if(Pb){Yb=Qb;Zb=Nb;_b=Rb;$b=Ob;ac=Sb;bc=Tb;cc=Ub;n=185}else n=182;do if((n|0)==182){if(!(c[20315]|0))dc=81304;else dc=c[(va()|0)+64>>2]|0;c[dc>>2]=22;c[b+104>>2]=0;bb=c[b+8>>2]|0;c[b+108>>2]=bb-(c[e>>2]|0);c[p>>2]=bb;Vb=0.0}else if((n|0)==185){bb=c[j>>2]|0;if(!bb){Vb=+(w|0)*0.0;break}if((($b|0)<0|($b|0)==0&Zb>>>0<10)&((Yb|0)==(Zb|0)&(_b|0)==($b|0))?l>>>0>30|(bb>>>l|0)==0:0){Vb=+(w|0)*+(bb>>>0);break}bb=(m|0)/-2|0;z=((bb|0)<0)<<31>>31;if((_b|0)>(z|0)|(_b|0)==(z|0)&Yb>>>0>bb>>>0){if(!(c[20315]|0))ec=81304;else ec=c[(va()|0)+64>>2]|0;c[ec>>2]=34;Vb=+(w|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}bb=m+-106|0;z=((bb|0)<0)<<31>>31;if((_b|0)<(z|0)|(_b|0)==(z|0)&Yb>>>0>>0){if(!(c[20315]|0))fc=81304;else fc=c[(va()|0)+64>>2]|0;c[fc>>2]=34;Vb=+(w|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!ac)gc=bc;else{if((ac|0)<9){bb=j+(bc<<2)|0;z=c[bb>>2]|0;q=ac;do{z=z*10|0;q=q+1|0}while((q|0)!=9);c[bb>>2]=z}gc=bc+1|0}if((cc|0)<9?(cc|0)<=(Yb|0)&(Yb|0)<18:0){if((Yb|0)==9){Vb=+(w|0)*+((c[j>>2]|0)>>>0);break}if((Yb|0)<9){Vb=+(w|0)*+((c[j>>2]|0)>>>0)/+(c[6972+(8-Yb<<2)>>2]|0);break}q=l+27+(_(Yb,-3)|0)|0;eb=c[j>>2]|0;if((q|0)>30|(eb>>>q|0)==0){Vb=+(w|0)*+(eb>>>0)*+(c[6972+(Yb+-10<<2)>>2]|0);break}}eb=(Yb|0)%9|0;if(!eb){hc=0;ic=0;jc=Yb;kc=gc}else{q=(Yb|0)>-1?eb:eb+9|0;eb=c[6972+(8-q<<2)>>2]|0;if(gc){db=1e9/(eb|0)|0;cb=0;ab=0;$a=0;_a=Yb;do{Ca=j+($a<<2)|0;Ba=c[Ca>>2]|0;u=((Ba>>>0)/(eb>>>0)|0)+ab|0;c[Ca>>2]=u;ab=_((Ba>>>0)%(eb>>>0)|0,db)|0;Ba=($a|0)==(cb|0)&(u|0)==0;$a=$a+1|0;_a=Ba?_a+-9|0:_a;cb=Ba?$a&127:cb}while(($a|0)!=(gc|0));if(!ab){lc=cb;mc=_a;nc=gc}else{c[j+(gc<<2)>>2]=ab;lc=cb;mc=_a;nc=gc+1|0}}else{lc=0;mc=Yb;nc=0}hc=lc;ic=0;jc=9-q+mc|0;kc=nc}j:while(1){$a=(jc|0)<18;db=(jc|0)==18;eb=j+(hc<<2)|0;z=ic;bb=kc;while(1){if(!$a){if(!db){oc=hc;pc=z;qc=jc;rc=bb;break j}if((c[eb>>2]|0)>>>0>=9007199){oc=hc;pc=z;qc=18;rc=bb;break j}}Ba=0;u=bb+127|0;sc=bb;while(1){Ca=u&127;Da=j+(Ca<<2)|0;Za=Vc(c[Da>>2]|0,0,29)|0;Ya=Sc(Za|0,C|0,Ba|0,0)|0;Za=C;if(Za>>>0>0|(Za|0)==0&Ya>>>0>1e9){Fa=cd(Ya|0,Za|0,1e9,0)|0;sa=dd(Ya|0,Za|0,1e9,0)|0;uc=sa;vc=Fa}else{uc=Ya;vc=0}c[Da>>2]=uc;Da=(Ca|0)==(hc|0);sc=(Ca|0)!=(sc+127&127|0)|Da?sc:(uc|0)==0?Ca:sc;if(Da)break;else{Ba=vc;u=Ca+-1|0}}z=z+-29|0;if(vc|0)break;else bb=sc}bb=hc+127&127;if((bb|0)==(sc|0)){eb=sc+127&127;db=j+((sc+126&127)<<2)|0;c[db>>2]=c[db>>2]|c[j+(eb<<2)>>2];wc=eb}else wc=sc;c[j+(bb<<2)>>2]=vc;hc=bb;ic=z;jc=jc+9|0;kc=wc}k:while(1){xc=rc+1&127;q=j+((rc+127&127)<<2)|0;_a=oc;cb=pc;ab=qc;while(1){bb=(ab|0)==18;eb=(ab|0)>27?9:1;db=bb^1;yc=_a;zc=cb;while(1){Ac=yc&127;Bc=(Ac|0)==(rc|0);do if(!Bc){$a=c[j+(Ac<<2)>>2]|0;if($a>>>0<9007199){n=235;break}if($a>>>0>9007199)break;$a=yc+1&127;if(($a|0)==(rc|0)){n=235;break}u=c[j+($a<<2)>>2]|0;if(u>>>0<254740991){n=235;break}if(!(u>>>0>254740991|db)){Cc=Ac;Dc=rc;break k}}else n=235;while(0);if((n|0)==235?(n=0,bb):0){n=236;break k}Ec=zc+eb|0;if((yc|0)==(rc|0)){yc=rc;zc=Ec}else break}bb=(1<>>eb;Ic=yc;Jc=0;u=yc;Kc=ab;do{$a=j+(u<<2)|0;Ba=c[$a>>2]|0;Ca=(Ba>>>eb)+Jc|0;c[$a>>2]=Ca;Jc=_(Ba&bb,db)|0;Ba=(u|0)==(Ic|0)&(Ca|0)==0;u=u+1&127;Kc=Ba?Kc+-9|0:Kc;Ic=Ba?u:Ic}while((u|0)!=(rc|0));if(!Jc){_a=Ic;cb=Ec;ab=Kc;continue}if((xc|0)!=(Ic|0))break;c[q>>2]=c[q>>2]|1;_a=Ic;cb=Ec;ab=Kc}c[j+(rc<<2)>>2]=Jc;oc=Ic;pc=Ec;qc=Kc;rc=xc}if((n|0)==236)if(Bc){c[j+(xc+-1<<2)>>2]=0;Cc=rc;Dc=xc}else{Cc=Ac;Dc=rc}Ea=+((c[j+(Cc<<2)>>2]|0)>>>0);ab=yc+1&127;if((ab|0)==(Dc|0)){cb=yc+2&127;c[j+(cb+-1<<2)>>2]=0;Lc=cb}else Lc=Dc;Pa=+(w|0);na=Pa*(Ea*1.0e9+ +((c[j+(ab<<2)>>2]|0)>>>0));ab=zc+53|0;cb=ab-m|0;_a=(cb|0)<(l|0);q=_a&1;z=_a?((cb|0)<0?0:cb):l;if((z|0)<53){Ea=+Gc(1.0,105-z|0);h[k>>3]=na;u=c[k+4>>2]|0;Mc=+N(+Ea);h[k>>3]=Mc;db=u&-2147483648|c[k+4>>2];c[k>>2]=c[k>>2];c[k+4>>2]=db;Mc=+h[k>>3];Ea=+Hc(na,+Gc(1.0,53-z|0));Nc=Mc;Oc=Ea;Pc=Mc+(na-Ea)}else{Nc=0.0;Oc=0.0;Pc=na}db=yc+2&127;do if((db|0)==(Lc|0))Qc=Oc;else{u=c[j+(db<<2)>>2]|0;do if(u>>>0>=5e8){if(u>>>0>5e8){Tc=Pa*.75+Oc;break}if((yc+3&127|0)==(Lc|0)){Tc=Pa*.5+Oc;break}else{Tc=Pa*.75+Oc;break}}else{if((u|0)==0?(yc+3&127|0)==(Lc|0):0){Tc=Oc;break}Tc=Pa*.25+Oc}while(0);if((53-z|0)<=1){Qc=Tc;break}if(+Hc(Tc,1.0)!=0.0){Qc=Tc;break}Qc=Tc+1.0}while(0);Pa=Pc+Qc-Nc;do if((ab&2147483647|0)>(-2-Aa|0)){if(!(+N(+Pa)>=9007199254740992.0)){Uc=q;Wc=zc;Xc=Pa}else{Uc=_a&(z|0)==(cb|0)?0:q;Wc=zc+1|0;Xc=Pa*.5}if((Wc+50|0)<=(ta|0)?!(Qc!=0.0&(Uc|0)!=0):0){Yc=Wc;Zc=Xc;break}if(!(c[20315]|0))_c=81304;else _c=c[(va()|0)+64>>2]|0;c[_c>>2]=34;Yc=Wc;Zc=Xc}else{Yc=zc;Zc=Pa}while(0);Vb=+Gc(Zc,Yc)}while(0);o=Vb;break a;break}default:{if(c[p>>2]|0)c[e>>2]=(c[e>>2]|0)+-1;if(!(c[20315]|0))$c=81304;else $c=c[(va()|0)+64>>2]|0;c[$c>>2]=22;c[b+104>>2]=0;ta=c[b+8>>2]|0;c[b+108>>2]=ta-(c[e>>2]|0);c[p>>2]=ta;o=0.0;break a}}}}while(0);if((n|0)==23){ta=(c[p>>2]|0)==0;if(!ta)c[e>>2]=(c[e>>2]|0)+-1;if((f|0)!=0&y>>>0>3){Aa=y;do{if(!ta)c[e>>2]=(c[e>>2]|0)+-1;Aa=Aa+-1|0}while(Aa>>>0>3)}}o=+(w|0)*s}while(0);i=g;return +o}function Fc(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=a+4|0;f=c[e>>2]|0;g=a+100|0;if(f>>>0<(c[g>>2]|0)>>>0){c[e>>2]=f+1;h=d[f>>0]|0}else h=tc(a)|0;switch(h|0){case 43:case 45:{f=(h|0)==45&1;i=c[e>>2]|0;if(i>>>0<(c[g>>2]|0)>>>0){c[e>>2]=i+1;j=d[i>>0]|0}else j=tc(a)|0;if((b|0)!=0&(j+-48|0)>>>0>9?(c[g>>2]|0)!=0:0){c[e>>2]=(c[e>>2]|0)+-1;k=j;l=f}else{k=j;l=f}break}default:{k=h;l=0}}if((k+-48|0)>>>0>9)if(!(c[g>>2]|0)){m=-2147483648;n=0}else{c[e>>2]=(c[e>>2]|0)+-1;m=-2147483648;n=0}else{h=k;k=0;while(1){k=h+-48+(k*10|0)|0;f=c[e>>2]|0;if(f>>>0<(c[g>>2]|0)>>>0){c[e>>2]=f+1;o=d[f>>0]|0}else o=tc(a)|0;p=(o+-48|0)>>>0<10;if(!(p&(k|0)<214748364))break;else h=o}h=((k|0)<0)<<31>>31;if(p){p=k;f=h;j=o;while(1){b=bd(p|0,f|0,10,0)|0;i=C;q=Sc(j|0,((j|0)<0)<<31>>31|0,-48,-1)|0;r=Sc(q|0,C|0,b|0,i|0)|0;i=C;b=c[e>>2]|0;if(b>>>0<(c[g>>2]|0)>>>0){c[e>>2]=b+1;s=d[b>>0]|0}else s=tc(a)|0;if((s+-48|0)>>>0<10&((i|0)<21474836|(i|0)==21474836&r>>>0<2061584302)){p=r;f=i;j=s}else{t=r;u=i;v=s;break}}}else{t=k;u=h;v=o}if((v+-48|0)>>>0<10)do{v=c[e>>2]|0;if(v>>>0<(c[g>>2]|0)>>>0){c[e>>2]=v+1;w=d[v>>0]|0}else w=tc(a)|0}while((w+-48|0)>>>0<10);if(c[g>>2]|0)c[e>>2]=(c[e>>2]|0)+-1;e=(l|0)!=0;l=Rc(0,0,t|0,u|0)|0;m=e?C:u;n=e?l:t}C=m;return n|0}function Gc(a,b){a=+a;b=b|0;var d=0.0,e=0,f=0,g=0,i=0.0;if((b|0)>1023){d=a*8988465674311579538646525.0e283;e=b+-1023|0;if((e|0)>1023){f=b+-2046|0;g=(f|0)>1023?1023:f;i=d*8988465674311579538646525.0e283}else{g=e;i=d}}else if((b|0)<-1022){d=a*2.2250738585072014e-308;e=b+1022|0;if((e|0)<-1022){f=b+2044|0;g=(f|0)<-1022?-1022:f;i=d*2.2250738585072014e-308}else{g=e;i=d}}else{g=b;i=a}b=Vc(g+1023|0,0,52)|0;g=C;c[k>>2]=b;c[k+4>>2]=g;return +(i*+h[k>>3])}function Hc(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;h[k>>3]=b;f=c[k>>2]|0;g=c[k+4>>2]|0;i=Uc(d|0,e|0,52)|0;j=i&2047;i=Uc(f|0,g|0,52)|0;l=i&2047;i=e&-2147483648;m=Vc(f|0,g|0,1)|0;n=C;a:do if(!((m|0)==0&(n|0)==0)?(o=+N(+b),h[k>>3]=o,p=c[k+4>>2]|0,!(p>>>0>2146435072|(p|0)==2146435072&(c[k>>2]|0)>>>0>0|(j|0)==2047)):0){p=Vc(d|0,e|0,1)|0;q=C;if(!(q>>>0>n>>>0|(q|0)==(n|0)&p>>>0>m>>>0)){r=(p|0)==(m|0)&(q|0)==(n|0)?a*0.0:a;break}if(!j){q=Vc(d|0,e|0,12)|0;p=C;if((p|0)>-1|(p|0)==-1&q>>>0>4294967295){s=q;q=p;p=0;while(1){t=p+-1|0;s=Vc(s|0,q|0,1)|0;q=C;if(!((q|0)>-1|(q|0)==-1&s>>>0>4294967295)){u=t;break}else p=t}}else u=0;p=Vc(d|0,e|0,1-u|0)|0;v=p;w=C;x=u}else{v=d;w=e&1048575|1048576;x=j}if(!l){p=Vc(f|0,g|0,12)|0;s=C;if((s|0)>-1|(s|0)==-1&p>>>0>4294967295){q=p;p=s;s=0;while(1){t=s+-1|0;q=Vc(q|0,p|0,1)|0;p=C;if(!((p|0)>-1|(p|0)==-1&q>>>0>4294967295)){y=t;break}else s=t}}else y=0;s=Vc(f|0,g|0,1-y|0)|0;z=s;A=C;B=y}else{z=f;A=g&1048575|1048576;B=l}s=Rc(v|0,w|0,z|0,A|0)|0;q=C;p=(q|0)>-1|(q|0)==-1&s>>>0>4294967295;b:do if((x|0)>(B|0)){t=p;D=s;E=q;F=v;G=w;H=x;while(1){if(t)if((F|0)==(z|0)&(G|0)==(A|0))break;else{I=D;J=E}else{I=F;J=G}K=Vc(I|0,J|0,1)|0;L=C;M=H+-1|0;O=Rc(K|0,L|0,z|0,A|0)|0;P=C;Q=(P|0)>-1|(P|0)==-1&O>>>0>4294967295;if((M|0)>(B|0)){t=Q;D=O;E=P;F=K;G=L;H=M}else{R=Q;S=K;T=L;U=O;V=P;W=M;break b}}r=a*0.0;break a}else{R=p;S=v;T=w;U=s;V=q;W=x}while(0);if(R)if((S|0)==(z|0)&(T|0)==(A|0)){r=a*0.0;break}else{X=V;Y=U}else{X=T;Y=S}if(X>>>0<1048576|(X|0)==1048576&Y>>>0<0){q=Y;s=X;p=W;while(1){H=Vc(q|0,s|0,1)|0;G=C;F=p+-1|0;if(G>>>0<1048576|(G|0)==1048576&H>>>0<0){q=H;s=G;p=F}else{Z=H;_=G;$=F;break}}}else{Z=Y;_=X;$=W}if(($|0)>0){p=Sc(Z|0,_|0,0,-1048576)|0;s=C;q=Vc($|0,0,52)|0;aa=s|C;ba=p|q}else{q=Uc(Z|0,_|0,1-$|0)|0;aa=C;ba=q}c[k>>2]=ba;c[k+4>>2]=aa|i;r=+h[k>>3]}else ca=3;while(0);if((ca|0)==3){o=a*b;r=o/o}return +r}function Ic(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0,i=0.0,j=0.0,l=0.0;h[k>>3]=a;b=c[k+4>>2]|0;d=b&2147483647;do if(d>>>0>1083174911){e=(b|0)>-1|(b|0)==-1&(c[k>>2]|0)>>>0>4294967295;if(e&d>>>0>1083179007){f=a*8988465674311579538646525.0e283;break}if(d>>>0<=2146435071)if(!(a<=-1075.0)|e){g=9;break}else{f=0.0;break}else{f=-1.0/a;break}}else if(d>>>0<1016070144)f=a+1.0;else g=9;while(0);if((g|0)==9){i=a+26388279066624.0;h[k>>3]=i;g=(c[k>>2]|0)+128|0;d=g<<1&510;j=+h[72+(d<<3)>>3];l=a-(i+-26388279066624.0)-+h[72+((d|1)<<3)>>3];f=+Gc(j+j*l*(l*(l*(l*(l*1.3333559164630223e-03+.009618129842126066)+.0555041086648214)+.2402265069591)+.6931471805599453),(g&-256|0)/256|0)}return +f} +function Jc(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0.0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0;k=i;i=i+416|0;l=k+128|0;m=k+144|0;n=k+16|0;o=k;c[o>>2]=j;j=n;p=j+112|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(p|0));c[n+32>>2]=114;c[n+44>>2]=e;c[n+76>>2]=-1;c[n+84>>2]=e;e=a[f>>0]|0;a:do if(e<<24>>24){j=n+4|0;p=n+100|0;q=n+108|0;r=n+8|0;s=m+10|0;t=m+33|0;u=m+46|0;v=m+94|0;w=n+104|0;x=e;y=0;z=f;A=0;B=0;D=0;b:while(1){c:do if(x<<24>>24==32|((x&255)+-9|0)>>>0<5){E=z;while(1){F=E+1|0;G=a[F>>0]|0;if(G<<24>>24==32|((G&255)+-9|0)>>>0<5)E=F;else break}c[w>>2]=0;F=c[r>>2]|0;G=c[j>>2]|0;c[q>>2]=F-G;c[p>>2]=F;H=G;G=F;d:while(1){if(H>>>0>>0){c[j>>2]=H+1;I=d[H>>0]|0}else I=tc(n)|0;switch(I|0){case 9:case 10:case 11:case 12:case 13:case 32:break;default:break d}H=c[j>>2]|0;G=c[p>>2]|0}if(!(c[p>>2]|0))J=c[j>>2]|0;else{G=(c[j>>2]|0)+-1|0;c[j>>2]=G;J=G}K=y;L=E;M=(c[q>>2]|0)+A+J-(c[r>>2]|0)|0;N=B;O=D}else{G=x<<24>>24==37;e:do if(G){H=z+1|0;F=a[H>>0]|0;f:do switch(F<<24>>24){case 37:{break e;break}case 42:{P=0;Q=z+2|0;break}default:{R=(F&255)+-48|0;if(R>>>0<10?(a[z+2>>0]|0)==36:0){c[l>>2]=c[o>>2];S=R;while(1){R=(c[l>>2]|0)+(4-1)&~(4-1);T=c[R>>2]|0;c[l>>2]=R+4;if(S>>>0>1)S=S+-1|0;else break}P=T;Q=z+3|0;break f}S=(c[o>>2]|0)+(4-1)&~(4-1);R=c[S>>2]|0;c[o>>2]=S+4;P=R;Q=H}}while(0);H=a[Q>>0]|0;F=H&255;if((F+-48|0)>>>0<10){R=F;F=Q;S=0;while(1){U=(S*10|0)+-48+R|0;V=F+1|0;W=a[V>>0]|0;R=W&255;if((R+-48|0)>>>0>=10){X=W;Y=V;Z=U;break}else{F=V;S=U}}}else{X=H;Y=Q;Z=0}if(X<<24>>24==109){S=Y+1|0;$=a[S>>0]|0;aa=(P|0)!=0&1;ba=S;ca=0;da=0}else{$=X;aa=0;ba=Y;ca=B;da=D}S=ba+1|0;switch($&255|0){case 104:{F=(a[S>>0]|0)==104;ea=F?ba+2|0:S;fa=F?-2:-1;break}case 108:{F=(a[S>>0]|0)==108;ea=F?ba+2|0:S;fa=F?3:1;break}case 106:{ea=S;fa=3;break}case 116:case 122:{ea=S;fa=1;break}case 76:{ea=S;fa=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{ea=ba;fa=0;break}default:{ga=ca;ha=da;ia=247;break b}}S=d[ea>>0]|0;F=(S&47|0)==3;R=F?S|32:S;S=F?1:fa;switch(R|0){case 99:{ja=A;ka=(Z|0)<1?1:Z;break}case 91:{ja=A;ka=Z;break}case 110:{if(!P){K=y;L=ea;M=A;N=ca;O=da;break c}switch(S|0){case -2:{a[P>>0]=A;K=y;L=ea;M=A;N=ca;O=da;break c;break}case -1:{b[P>>1]=A;K=y;L=ea;M=A;N=ca;O=da;break c;break}case 0:{c[P>>2]=A;K=y;L=ea;M=A;N=ca;O=da;break c;break}case 1:{c[P>>2]=A;K=y;L=ea;M=A;N=ca;O=da;break c;break}case 3:{F=P;c[F>>2]=A;c[F+4>>2]=((A|0)<0)<<31>>31;K=y;L=ea;M=A;N=ca;O=da;break c;break}default:{K=y;L=ea;M=A;N=ca;O=da;break c}}break}default:{c[w>>2]=0;F=c[r>>2]|0;U=c[j>>2]|0;c[q>>2]=F-U;c[p>>2]=F;V=U;U=F;g:while(1){if(V>>>0>>0){c[j>>2]=V+1;la=d[V>>0]|0}else la=tc(n)|0;switch(la|0){case 9:case 10:case 11:case 12:case 13:case 32:break;default:break g}V=c[j>>2]|0;U=c[p>>2]|0}if(!(c[p>>2]|0))ma=c[j>>2]|0;else{U=(c[j>>2]|0)+-1|0;c[j>>2]=U;ma=U}ja=(c[q>>2]|0)+A+ma-(c[r>>2]|0)|0;ka=Z}}c[w>>2]=ka;U=c[r>>2]|0;V=c[j>>2]|0;H=U-V|0;c[q>>2]=H;F=V;if((ka|0)!=0&(H|0)>(ka|0)){H=F+ka|0;c[p>>2]=H;na=H}else{c[p>>2]=U;na=U}if(F>>>0>>0){c[j>>2]=F+1;oa=na}else{if((tc(n)|0)<0){ga=ca;ha=da;ia=247;break b}oa=c[p>>2]|0}if(oa|0)c[j>>2]=(c[j>>2]|0)+-1;h:do switch(R|0){case 91:case 99:case 115:{F=(R|0)==99;i:do if((R|16|0)==115){Tc(m|0,-1,257)|0;a[m>>0]=0;if((R|0)==115){a[t>>0]=0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;a[s+4>>0]=0;pa=ea}else pa=ea}else{U=ea+1|0;H=(a[U>>0]|0)==94;V=H&1;W=H?ea+2|0:U;Tc(m|0,H&1|0,257)|0;a[m>>0]=0;switch(a[W>>0]|0){case 45:{H=(V^1)&255;a[u>>0]=H;qa=H;ra=W+1|0;break}case 93:{H=(V^1)&255;a[v>>0]=H;qa=H;ra=W+1|0;break}default:{qa=(V^1)&255;ra=W}}W=ra;while(1){V=a[W>>0]|0;j:do switch(V<<24>>24){case 0:{ga=ca;ha=da;ia=247;break b;break}case 93:{pa=W;break i;break}case 45:{H=W+1|0;U=a[H>>0]|0;switch(U<<24>>24){case 93:case 0:{sa=45;ta=W;break j;break}default:{}}ua=a[W+-1>>0]|0;if((ua&255)<(U&255)){wa=U&255;xa=ua&255;do{xa=xa+1|0;a[m+xa>>0]=qa}while((xa|0)!=(wa|0));sa=U;ta=H}else{sa=U;ta=H}break}default:{sa=V;ta=W}}while(0);a[m+((sa&255)+1)>>0]=qa;W=ta+1|0}}while(0);W=F?ka+1|0:31;V=(S|0)==1;wa=(aa|0)!=0;k:do if(V){if(wa){xa=Mc(W<<2)|0;if(!xa){ga=0;ha=xa;ia=247;break b}else{ya=0;za=W;Aa=xa}}else{ya=0;za=W;Aa=P}l:while(1){xa=(Aa|0)==0;Ba=ya;while(1){Ca=0;while(1){ua=c[j>>2]|0;if(ua>>>0<(c[p>>2]|0)>>>0){c[j>>2]=ua+1;Da=d[ua>>0]|0}else Da=tc(n)|0;if(!(a[m+(Da+1)>>0]|0))break l;ua=Da&255;if(Ca|0){Ea=Da>>>3&31;if((Ea+-16|Ea+(Ca>>26))>>>0>7){ia=101;break b}Ea=(Da&255)+-128|Ca<<6;if((Ea|0)<0){Ca=Ea;continue}else{Fa=Ea;break}}Ea=Da&255;if(ua<<24>>24>-1){Fa=Ea;break}ua=Ea+-194|0;if(ua>>>0>50){ia=101;break b}Ca=c[6656+(ua<<2)>>2]|0}if(xa)Ga=Ba;else{c[Aa+(Ba<<2)>>2]=Fa;Ga=Ba+1|0}if(wa&(Ga|0)==(za|0))break;else Ba=Ga}xa=za<<1|1;H=Oc(Aa,xa<<2)|0;if(!H){ga=0;ha=Aa;ia=247;break b}else{U=za;za=xa;Aa=H;ya=U}}if(!Ca){Ha=Ba;Ia=0;Ja=Aa}else{ga=0;ha=Aa;ia=247;break b}}else{if(wa){U=Mc(W)|0;if(!U){ga=0;ha=0;ia=247;break b}else{Ka=0;La=W;Ma=U}while(1){U=Ka;do{H=c[j>>2]|0;if(H>>>0<(c[p>>2]|0)>>>0){c[j>>2]=H+1;Na=d[H>>0]|0}else Na=tc(n)|0;if(!(a[m+(Na+1)>>0]|0)){Ha=U;Ia=Ma;Ja=0;break k}a[Ma+U>>0]=Na;U=U+1|0}while((U|0)!=(La|0));U=La<<1|1;H=Oc(Ma,U)|0;if(!H){ga=Ma;ha=0;ia=247;break b}else{xa=La;La=U;Ma=H;Ka=xa}}}if(!P){xa=oa;while(1){H=c[j>>2]|0;if(H>>>0>>0){c[j>>2]=H+1;Oa=d[H>>0]|0}else Oa=tc(n)|0;if(!(a[m+(Oa+1)>>0]|0)){Ha=0;Ia=0;Ja=0;break k}xa=c[p>>2]|0}}else{xa=oa;H=0;while(1){U=c[j>>2]|0;if(U>>>0>>0){c[j>>2]=U+1;Pa=d[U>>0]|0}else Pa=tc(n)|0;if(!(a[m+(Pa+1)>>0]|0)){Ha=H;Ia=P;Ja=0;break k}a[P+H>>0]=Pa;xa=c[p>>2]|0;H=H+1|0}}}while(0);if(!(c[p>>2]|0))Qa=c[j>>2]|0;else{W=(c[j>>2]|0)+-1|0;c[j>>2]=W;Qa=W}W=Qa-(c[r>>2]|0)+(c[q>>2]|0)|0;if(!W){Ra=aa;Sa=y;Ta=Ia;Ua=Ja;break b}if(!((W|0)==(ka|0)|F^1)){Ra=aa;Sa=y;Ta=Ia;Ua=Ja;break b}do if(wa)if(V){c[P>>2]=Ja;break}else{c[P>>2]=Ia;break}while(0);if(F){Va=pa;Wa=Ia;Xa=Ja}else{if(Ja|0)c[Ja+(Ha<<2)>>2]=0;if(!Ia){Va=pa;Wa=0;Xa=Ja;break h}a[Ia+Ha>>0]=0;Va=pa;Wa=Ia;Xa=Ja}break}case 120:case 88:case 112:{Ya=16;ia=146;break}case 111:{Ya=8;ia=146;break}case 117:case 100:{Ya=10;ia=146;break}case 105:{Ya=0;ia=146;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{Za=+Ec(n,S,0);if((c[q>>2]|0)==((c[r>>2]|0)-(c[j>>2]|0)|0)){Ra=aa;Sa=y;Ta=ca;Ua=da;break b}if(!P){Va=ea;Wa=ca;Xa=da}else switch(S|0){case 0:{g[P>>2]=Za;Va=ea;Wa=ca;Xa=da;break h;break}case 1:{h[P>>3]=Za;Va=ea;Wa=ca;Xa=da;break h;break}case 2:{h[P>>3]=Za;Va=ea;Wa=ca;Xa=da;break h;break}default:{Va=ea;Wa=ca;Xa=da;break h}}break}default:{Va=ea;Wa=ca;Xa=da}}while(0);m:do if((ia|0)==146){ia=0;V=oa;n:while(1){wa=c[j>>2]|0;if(wa>>>0>>0){c[j>>2]=wa+1;_a=d[wa>>0]|0}else _a=tc(n)|0;switch(_a|0){case 9:case 10:case 11:case 12:case 13:case 32:break;default:break n}V=c[p>>2]|0}o:do switch(_a|0){case 43:case 45:{V=((_a|0)==45)<<31>>31;F=c[j>>2]|0;if(F>>>0<(c[p>>2]|0)>>>0){c[j>>2]=F+1;$a=d[F>>0]|0;ab=V;break o}else{$a=tc(n)|0;ab=V;break o}break}default:{$a=_a;ab=0}}while(0);V=(Ya|0)==0;do if((Ya|16|0)==16&($a|0)==48){F=c[j>>2]|0;if(F>>>0<(c[p>>2]|0)>>>0){c[j>>2]=F+1;bb=d[F>>0]|0}else bb=tc(n)|0;if((bb|32|0)!=120)if(V){cb=8;db=bb;ia=191;break}else{eb=Ya;fb=bb;ia=177;break}F=c[j>>2]|0;if(F>>>0<(c[p>>2]|0)>>>0){c[j>>2]=F+1;gb=d[F>>0]|0}else gb=tc(n)|0;if((d[27684+gb>>0]|0)>15){if(!(c[p>>2]|0))hb=c[j>>2]|0;else{F=(c[j>>2]|0)+-1|0;c[j>>2]=F;hb=F}c[w>>2]=0;F=c[r>>2]|0;c[q>>2]=F-hb;c[p>>2]=F;ib=hb;jb=0;kb=0}else{cb=16;db=gb;ia=191}}else{F=V?10:Ya;if((d[27684+$a>>0]|0)>>>0>>0){eb=F;fb=$a;ia=177}else{if(!(c[p>>2]|0))lb=c[j>>2]|0;else{F=(c[j>>2]|0)+-1|0;c[j>>2]=F;lb=F}c[w>>2]=0;F=c[r>>2]|0;c[q>>2]=F-lb;c[p>>2]=F;if(!(c[20315]|0))mb=81304;else mb=c[(va()|0)+64>>2]|0;c[mb>>2]=22;ib=lb;jb=0;kb=0}}while(0);if((ia|0)==177){ia=0;if((eb|0)==10){V=fb+-48|0;if(V>>>0<10){F=V;V=0;do{V=(V*10|0)+F|0;wa=c[j>>2]|0;if(wa>>>0<(c[p>>2]|0)>>>0){c[j>>2]=wa+1;nb=d[wa>>0]|0}else nb=tc(n)|0;F=nb+-48|0}while(F>>>0<10&V>>>0<429496729);ob=V;pb=0;qb=nb}else{ob=0;pb=0;qb=fb}F=qb+-48|0;if(F>>>0<10){wa=ob;W=pb;H=F;F=qb;while(1){xa=bd(wa|0,W|0,10,0)|0;U=C;ua=((H|0)<0)<<31>>31;Ea=~ua;if(U>>>0>Ea>>>0|(U|0)==(Ea|0)&xa>>>0>~H>>>0){rb=H;sb=wa;tb=W;ub=F;break}Ea=Sc(xa|0,U|0,H|0,ua|0)|0;ua=C;U=c[j>>2]|0;if(U>>>0<(c[p>>2]|0)>>>0){c[j>>2]=U+1;vb=d[U>>0]|0}else vb=tc(n)|0;U=vb+-48|0;if(U>>>0<10&(ua>>>0<429496729|(ua|0)==429496729&Ea>>>0<2576980378)){wa=Ea;W=ua;H=U;F=vb}else{rb=U;sb=Ea;tb=ua;ub=vb;break}}if(rb>>>0>9){wb=sb;xb=tb;yb=ab;ia=225}else{zb=10;Ab=sb;Bb=tb;Cb=ub;ia=217}}else{wb=ob;xb=pb;yb=ab;ia=225}}else{cb=eb;db=fb;ia=191}}p:do if((ia|0)==191){ia=0;if(!(cb+-1&cb)){F=a[27940+((cb*23|0)>>>5&7)>>0]|0;H=a[27684+db>>0]|0;W=H&255;if(W>>>0>>0){wa=W;W=0;do{W=wa|W<>2]|0;if(V>>>0<(c[p>>2]|0)>>>0){c[j>>2]=V+1;Db=d[V>>0]|0}else Db=tc(n)|0;Eb=a[27684+Db>>0]|0;wa=Eb&255}while(W>>>0<134217728&wa>>>0>>0);Fb=Eb;Gb=0;Hb=W;Ib=Db}else{Fb=H;Gb=0;Hb=0;Ib=db}wa=Uc(-1,-1,F|0)|0;V=C;if((Fb&255)>>>0>=cb>>>0|(Gb>>>0>V>>>0|(Gb|0)==(V|0)&Hb>>>0>wa>>>0)){zb=cb;Ab=Hb;Bb=Gb;Cb=Ib;ia=217;break}else{Jb=Hb;Kb=Gb;Lb=Fb}while(1){ua=Vc(Jb|0,Kb|0,F|0)|0;Ea=C;U=Lb&255|ua;ua=c[j>>2]|0;if(ua>>>0<(c[p>>2]|0)>>>0){c[j>>2]=ua+1;Mb=d[ua>>0]|0}else Mb=tc(n)|0;Lb=a[27684+Mb>>0]|0;if((Lb&255)>>>0>=cb>>>0|(Ea>>>0>V>>>0|(Ea|0)==(V|0)&U>>>0>wa>>>0)){zb=cb;Ab=U;Bb=Ea;Cb=Mb;ia=217;break p}else{Jb=U;Kb=Ea}}}wa=a[27684+db>>0]|0;V=wa&255;if(V>>>0>>0){F=V;V=0;do{V=F+(_(V,cb)|0)|0;H=c[j>>2]|0;if(H>>>0<(c[p>>2]|0)>>>0){c[j>>2]=H+1;Nb=d[H>>0]|0}else Nb=tc(n)|0;Ob=a[27684+Nb>>0]|0;F=Ob&255}while(V>>>0<119304647&F>>>0>>0);Pb=Ob;Qb=V;Rb=0;Sb=Nb}else{Pb=wa;Qb=0;Rb=0;Sb=db}if((Pb&255)>>>0>>0){F=cd(-1,-1,cb|0,0)|0;H=C;W=Rb;Ea=Qb;U=Pb;ua=Sb;while(1){if(W>>>0>H>>>0|(W|0)==(H|0)&Ea>>>0>F>>>0){zb=cb;Ab=Ea;Bb=W;Cb=ua;ia=217;break p}xa=bd(Ea|0,W|0,cb|0,0)|0;Tb=C;Ub=U&255;if(Tb>>>0>4294967295|(Tb|0)==-1&xa>>>0>~Ub>>>0){zb=cb;Ab=Ea;Bb=W;Cb=ua;ia=217;break p}Vb=Sc(Ub|0,0,xa|0,Tb|0)|0;Tb=C;xa=c[j>>2]|0;if(xa>>>0<(c[p>>2]|0)>>>0){c[j>>2]=xa+1;Wb=d[xa>>0]|0}else Wb=tc(n)|0;U=a[27684+Wb>>0]|0;if((U&255)>>>0>=cb>>>0){zb=cb;Ab=Vb;Bb=Tb;Cb=Wb;ia=217;break}else{W=Tb;Ea=Vb;ua=Wb}}}else{zb=cb;Ab=Qb;Bb=Rb;Cb=Sb;ia=217}}while(0);if((ia|0)==217){ia=0;if((d[27684+Cb>>0]|0)>>>0>>0){do{ua=c[j>>2]|0;if(ua>>>0<(c[p>>2]|0)>>>0){c[j>>2]=ua+1;Xb=d[ua>>0]|0}else Xb=tc(n)|0}while((d[27684+Xb>>0]|0)>>>0>>0);if(!(c[20315]|0))Yb=81304;else Yb=c[(va()|0)+64>>2]|0;c[Yb>>2]=34;wb=-1;xb=-1;yb=0;ia=225}else{wb=Ab;xb=Bb;yb=ab;ia=225}}if((ia|0)==225){ia=0;if(!(c[p>>2]|0))Zb=c[j>>2]|0;else{ua=(c[j>>2]|0)+-1|0;c[j>>2]=ua;Zb=ua}ua=((yb|0)<0)<<31>>31;Ea=Rc(wb^yb|0,xb^ua|0,yb|0,ua|0)|0;ib=Zb;jb=Ea;kb=C}if((c[q>>2]|0)==((c[r>>2]|0)-ib|0)){Ra=aa;Sa=y;Ta=ca;Ua=da;break b}if((P|0)!=0&(R|0)==112){c[P>>2]=jb;Va=ea;Wa=ca;Xa=da;break}if(!P){Va=ea;Wa=ca;Xa=da}else switch(S|0){case -2:{a[P>>0]=jb;Va=ea;Wa=ca;Xa=da;break m;break}case -1:{b[P>>1]=jb;Va=ea;Wa=ca;Xa=da;break m;break}case 0:{c[P>>2]=jb;Va=ea;Wa=ca;Xa=da;break m;break}case 1:{c[P>>2]=jb;Va=ea;Wa=ca;Xa=da;break m;break}case 3:{Ea=P;c[Ea>>2]=jb;c[Ea+4>>2]=kb;Va=ea;Wa=ca;Xa=da;break m;break}default:{Va=ea;Wa=ca;Xa=da;break m}}}while(0);K=((P|0)!=0&1)+y|0;L=Va;M=(c[q>>2]|0)+ja+(c[j>>2]|0)-(c[r>>2]|0)|0;N=Wa;O=Xa;break c}while(0);E=z+(G&1)|0;c[w>>2]=0;S=c[r>>2]|0;R=c[j>>2]|0;c[q>>2]=S-R;c[p>>2]=S;Ea=R;if(Ea>>>0>>0){c[j>>2]=Ea+1;_b=d[Ea>>0]|0}else _b=tc(n)|0;if((_b|0)!=(d[E>>0]|0)){ia=21;break b}K=y;L=E;M=A+1|0;N=B;O=D}while(0);z=L+1|0;x=a[z>>0]|0;if(!(x<<24>>24)){$b=K;break a}else{y=K;A=M;B=N;D=O}}if((ia|0)==21){if(c[p>>2]|0)c[j>>2]=(c[j>>2]|0)+-1;if((y|0)!=0|(_b|0)>-1){$b=y;break}else{ac=0;bc=B;cc=D;ia=248}}else if((ia|0)==101){if(!(c[20315]|0))dc=81304;else dc=c[(va()|0)+64>>2]|0;c[dc>>2]=84;ga=0;ha=Aa;ia=247}if((ia|0)==247)if(!y){ac=aa;bc=ga;cc=ha;ia=248}else{Ra=aa;Sa=y;Ta=ga;Ua=ha}if((ia|0)==248){Ra=ac;Sa=-1;Ta=bc;Ua=cc}if(!Ra)$b=Sa;else{Nc(Ta);Nc(Ua);$b=Sa}}else $b=0;while(0);i=k;return $b|0}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+84|0;f=c[e>>2]|0;g=d+256|0;h=vc(f,0,g)|0;i=(h|0)==0?g:h-f|0;h=i>>>0>>0?i:d;Wc(b|0,f|0,h|0)|0;c[a+4>>2]=f+h;b=f+i|0;c[a+8>>2]=b;c[e>>2]=b;return h|0}function Lc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+240|0;f=b+136|0;g=b+96|0;h=b;j=b+152|0;k=b+80|0;c[k>>2]=e;e=g;l=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(l|0));c[f>>2]=c[k>>2];if((wc(0,d,f,h,g)|0)>=0){k=c[1715]|0;e=k&32;if((a[6934]|0)<1)c[1715]=k&-33;if(!(c[1727]|0)){k=c[1726]|0;c[1726]=j;c[1722]=j;c[1720]=j;c[1727]=80;c[1719]=j+80;wc(6860,d,f,h,g)|0;if(k|0){Ia[c[6896>>2]&127](6860,0,0)|0;c[1726]=k;c[1727]=0;c[1719]=0;c[1722]=0;c[1720]=0}}else wc(6860,d,f,h,g)|0;c[1715]=c[1715]|e}i=b;return}function Mc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0;do if(a>>>0<245){b=a>>>0<11?16:a+11&-8;d=b>>>3;e=c[20327]|0;f=e>>>d;if(f&3|0){g=(f&1^1)+d|0;h=81348+(g<<1<<2)|0;i=h+8|0;j=c[i>>2]|0;k=j+8|0;l=c[k>>2]|0;do if((h|0)!=(l|0)){if(l>>>0<(c[20331]|0)>>>0)wa();m=l+12|0;if((c[m>>2]|0)==(j|0)){c[m>>2]=h;c[i>>2]=l;break}else wa()}else c[20327]=e&~(1<>2]=l|3;i=j+l+4|0;c[i>>2]=c[i>>2]|1;n=k;return n|0}i=c[20329]|0;if(b>>>0>i>>>0){if(f|0){l=2<>>12&16;m=l>>>h;l=m>>>5&8;o=m>>>l;m=o>>>2&4;p=o>>>m;o=p>>>1&2;q=p>>>o;p=q>>>1&1;r=(l|h|m|o|p)+(q>>>p)|0;p=81348+(r<<1<<2)|0;q=p+8|0;o=c[q>>2]|0;m=o+8|0;h=c[m>>2]|0;do if((p|0)!=(h|0)){if(h>>>0<(c[20331]|0)>>>0)wa();l=h+12|0;if((c[l>>2]|0)==(o|0)){c[l>>2]=p;c[q>>2]=h;s=c[20329]|0;break}else wa()}else{c[20327]=e&~(1<>2]=b|3;e=o+b|0;c[e+4>>2]=i|1;c[e+i>>2]=i;if(s|0){h=c[20332]|0;q=s>>>3;p=81348+(q<<1<<2)|0;d=c[20327]|0;f=1<>2]|0;if(k>>>0<(c[20331]|0)>>>0)wa();else{t=q;u=k}}else{c[20327]=d|f;t=p+8|0;u=p}c[t>>2]=h;c[u+12>>2]=h;c[h+8>>2]=u;c[h+12>>2]=p}c[20329]=i;c[20332]=e;n=m;return n|0}e=c[20328]|0;if(e){i=(e&0-e)+-1|0;e=i>>>12&16;p=i>>>e;i=p>>>5&8;h=p>>>i;p=h>>>2&4;f=h>>>p;h=f>>>1&2;d=f>>>h;f=d>>>1&1;k=c[81612+((i|e|p|h|f)+(d>>>f)<<2)>>2]|0;f=(c[k+4>>2]&-8)-b|0;d=k;h=k;while(1){k=c[d+16>>2]|0;if(!k){p=c[d+20>>2]|0;if(!p)break;else v=p}else v=k;k=(c[v+4>>2]&-8)-b|0;p=k>>>0>>0;f=p?k:f;d=v;h=p?v:h}d=c[20331]|0;if(h>>>0>>0)wa();m=h+b|0;if(h>>>0>=m>>>0)wa();o=c[h+24>>2]|0;r=c[h+12>>2]|0;do if((r|0)==(h|0)){p=h+20|0;k=c[p>>2]|0;if(!k){e=h+16|0;i=c[e>>2]|0;if(!i){w=0;break}else{x=i;y=e}}else{x=k;y=p}while(1){p=x+20|0;k=c[p>>2]|0;if(k|0){x=k;y=p;continue}p=x+16|0;k=c[p>>2]|0;if(!k)break;else{x=k;y=p}}if(y>>>0>>0)wa();else{c[y>>2]=0;w=x;break}}else{p=c[h+8>>2]|0;if(p>>>0>>0)wa();k=p+12|0;if((c[k>>2]|0)!=(h|0))wa();e=r+8|0;if((c[e>>2]|0)==(h|0)){c[k>>2]=r;c[e>>2]=p;w=r;break}else wa()}while(0);do if(o|0){r=c[h+28>>2]|0;d=81612+(r<<2)|0;if((h|0)==(c[d>>2]|0)){c[d>>2]=w;if(!w){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();r=o+16|0;if((c[r>>2]|0)==(h|0))c[r>>2]=w;else c[o+20>>2]=w;if(!w)break}r=c[20331]|0;if(w>>>0>>0)wa();c[w+24>>2]=o;d=c[h+16>>2]|0;do if(d|0)if(d>>>0>>0)wa();else{c[w+16>>2]=d;c[d+24>>2]=w;break}while(0);d=c[h+20>>2]|0;if(d|0)if(d>>>0<(c[20331]|0)>>>0)wa();else{c[w+20>>2]=d;c[d+24>>2]=w;break}}while(0);if(f>>>0<16){o=f+b|0;c[h+4>>2]=o|3;d=h+o+4|0;c[d>>2]=c[d>>2]|1}else{c[h+4>>2]=b|3;c[m+4>>2]=f|1;c[m+f>>2]=f;d=c[20329]|0;if(d|0){o=c[20332]|0;r=d>>>3;d=81348+(r<<1<<2)|0;p=c[20327]|0;e=1<>2]|0;if(k>>>0<(c[20331]|0)>>>0)wa();else{z=r;A=k}}else{c[20327]=p|e;z=d+8|0;A=d}c[z>>2]=o;c[A+12>>2]=o;c[o+8>>2]=A;c[o+12>>2]=d}c[20329]=f;c[20332]=m}n=h+8|0;return n|0}else B=b}else B=b}else if(a>>>0<=4294967231){d=a+11|0;o=d&-8;e=c[20328]|0;if(e){p=0-o|0;k=d>>>8;if(k)if(o>>>0>16777215)C=31;else{d=(k+1048320|0)>>>16&8;r=k<>>16&4;i=r<>>16&2;q=14-(k|d|r)+(i<>>15)|0;C=o>>>(q+7|0)&1|q<<1}else C=0;q=c[81612+(C<<2)>>2]|0;a:do if(!q){D=p;E=0;F=0;G=86}else{r=p;i=0;d=o<<((C|0)==31?0:25-(C>>>1)|0);k=q;j=0;while(1){g=c[k+4>>2]&-8;l=g-o|0;if(l>>>0>>0)if((g|0)==(o|0)){H=l;I=k;J=k;G=90;break a}else{K=l;L=k}else{K=r;L=j}l=c[k+20>>2]|0;k=c[k+16+(d>>>31<<2)>>2]|0;g=(l|0)==0|(l|0)==(k|0)?i:l;l=(k|0)==0;if(l){D=K;E=g;F=L;G=86;break}else{r=K;i=g;d=d<<(l&1^1);j=L}}}while(0);if((G|0)==86){if((E|0)==0&(F|0)==0){q=2<>>12&16;b=q>>>p;q=b>>>5&8;h=b>>>q;b=h>>>2&4;m=h>>>b;h=m>>>1&2;f=m>>>h;m=f>>>1&1;M=c[81612+((q|p|b|h|m)+(f>>>m)<<2)>>2]|0}else M=E;if(!M){N=D;O=F}else{H=D;I=M;J=F;G=90}}if((G|0)==90)while(1){G=0;m=(c[I+4>>2]&-8)-o|0;f=m>>>0>>0;h=f?m:H;m=f?I:J;f=c[I+16>>2]|0;if(f|0){H=h;I=f;J=m;G=90;continue}I=c[I+20>>2]|0;if(!I){N=h;O=m;break}else{H=h;J=m;G=90}}if((O|0)!=0?N>>>0<((c[20329]|0)-o|0)>>>0:0){e=c[20331]|0;if(O>>>0>>0)wa();m=O+o|0;if(O>>>0>=m>>>0)wa();h=c[O+24>>2]|0;f=c[O+12>>2]|0;do if((f|0)==(O|0)){b=O+20|0;p=c[b>>2]|0;if(!p){q=O+16|0;j=c[q>>2]|0;if(!j){P=0;break}else{Q=j;R=q}}else{Q=p;R=b}while(1){b=Q+20|0;p=c[b>>2]|0;if(p|0){Q=p;R=b;continue}b=Q+16|0;p=c[b>>2]|0;if(!p)break;else{Q=p;R=b}}if(R>>>0>>0)wa();else{c[R>>2]=0;P=Q;break}}else{b=c[O+8>>2]|0;if(b>>>0>>0)wa();p=b+12|0;if((c[p>>2]|0)!=(O|0))wa();q=f+8|0;if((c[q>>2]|0)==(O|0)){c[p>>2]=f;c[q>>2]=b;P=f;break}else wa()}while(0);do if(h|0){f=c[O+28>>2]|0;e=81612+(f<<2)|0;if((O|0)==(c[e>>2]|0)){c[e>>2]=P;if(!P){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();f=h+16|0;if((c[f>>2]|0)==(O|0))c[f>>2]=P;else c[h+20>>2]=P;if(!P)break}f=c[20331]|0;if(P>>>0>>0)wa();c[P+24>>2]=h;e=c[O+16>>2]|0;do if(e|0)if(e>>>0>>0)wa();else{c[P+16>>2]=e;c[e+24>>2]=P;break}while(0);e=c[O+20>>2]|0;if(e|0)if(e>>>0<(c[20331]|0)>>>0)wa();else{c[P+20>>2]=e;c[e+24>>2]=P;break}}while(0);do if(N>>>0>=16){c[O+4>>2]=o|3;c[m+4>>2]=N|1;c[m+N>>2]=N;h=N>>>3;if(N>>>0<256){e=81348+(h<<1<<2)|0;f=c[20327]|0;b=1<>2]|0;if(q>>>0<(c[20331]|0)>>>0)wa();else{S=h;T=q}}else{c[20327]=f|b;S=e+8|0;T=e}c[S>>2]=m;c[T+12>>2]=m;c[m+8>>2]=T;c[m+12>>2]=e;break}e=N>>>8;if(e)if(N>>>0>16777215)U=31;else{b=(e+1048320|0)>>>16&8;f=e<>>16&4;q=f<>>16&2;h=14-(e|b|f)+(q<>>15)|0;U=N>>>(h+7|0)&1|h<<1}else U=0;h=81612+(U<<2)|0;c[m+28>>2]=U;f=m+16|0;c[f+4>>2]=0;c[f>>2]=0;f=c[20328]|0;q=1<>2]=m;c[m+24>>2]=h;c[m+12>>2]=m;c[m+8>>2]=m;break}q=N<<((U|0)==31?0:25-(U>>>1)|0);f=c[h>>2]|0;while(1){if((c[f+4>>2]&-8|0)==(N|0)){G=148;break}V=f+16+(q>>>31<<2)|0;h=c[V>>2]|0;if(!h){G=145;break}else{q=q<<1;f=h}}if((G|0)==145)if(V>>>0<(c[20331]|0)>>>0)wa();else{c[V>>2]=m;c[m+24>>2]=f;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((G|0)==148){q=f+8|0;h=c[q>>2]|0;b=c[20331]|0;if(h>>>0>=b>>>0&f>>>0>=b>>>0){c[h+12>>2]=m;c[q>>2]=m;c[m+8>>2]=h;c[m+12>>2]=f;c[m+24>>2]=0;break}else wa()}}else{h=N+o|0;c[O+4>>2]=h|3;q=O+h+4|0;c[q>>2]=c[q>>2]|1}while(0);n=O+8|0;return n|0}else B=o}else B=o}else B=-1;while(0);O=c[20329]|0;if(O>>>0>=B>>>0){N=O-B|0;V=c[20332]|0;if(N>>>0>15){U=V+B|0;c[20332]=U;c[20329]=N;c[U+4>>2]=N|1;c[U+N>>2]=N;c[V+4>>2]=B|3}else{c[20329]=0;c[20332]=0;c[V+4>>2]=O|3;N=V+O+4|0;c[N>>2]=c[N>>2]|1}n=V+8|0;return n|0}V=c[20330]|0;if(V>>>0>B>>>0){N=V-B|0;c[20330]=N;V=c[20333]|0;O=V+B|0;c[20333]=O;c[O+4>>2]=N|1;c[V+4>>2]=B|3;n=V+8|0;return n|0}do if(!(c[20445]|0)){V=Fa(30)|0;if(!(V+-1&V)){c[20447]=V;c[20446]=V;c[20448]=-1;c[20449]=-1;c[20450]=0;c[20438]=0;c[20445]=(Aa(0)|0)&-16^1431655768;break}else wa()}while(0);V=B+48|0;N=c[20447]|0;O=B+47|0;U=N+O|0;T=0-N|0;N=U&T;if(N>>>0<=B>>>0){n=0;return n|0}S=c[20437]|0;if(S|0?(P=c[20435]|0,Q=P+N|0,Q>>>0<=P>>>0|Q>>>0>S>>>0):0){n=0;return n|0}b:do if(!(c[20438]&4)){S=c[20333]|0;c:do if(S){Q=81756;while(1){P=c[Q>>2]|0;if(P>>>0<=S>>>0?(W=Q+4|0,(P+(c[W>>2]|0)|0)>>>0>S>>>0):0)break;P=c[Q+8>>2]|0;if(!P){G=173;break c}else Q=P}f=U-(c[20330]|0)&T;if(f>>>0<2147483647){P=za(f|0)|0;if((P|0)==((c[Q>>2]|0)+(c[W>>2]|0)|0)){if((P|0)!=(-1|0)){X=P;Y=f;G=193;break b}}else{Z=P;_=f;G=183}}}else G=173;while(0);do if((G|0)==173?(S=za(0)|0,(S|0)!=(-1|0)):0){o=S;f=c[20446]|0;P=f+-1|0;if(!(P&o))$=N;else $=N-o+(P+o&0-f)|0;f=c[20435]|0;o=f+$|0;if($>>>0>B>>>0&$>>>0<2147483647){P=c[20437]|0;if(P|0?o>>>0<=f>>>0|o>>>0>P>>>0:0)break;P=za($|0)|0;if((P|0)==(S|0)){X=S;Y=$;G=193;break b}else{Z=P;_=$;G=183}}}while(0);d:do if((G|0)==183){P=0-_|0;do if(V>>>0>_>>>0&(_>>>0<2147483647&(Z|0)!=(-1|0))?(S=c[20447]|0,o=O-_+S&0-S,o>>>0<2147483647):0)if((za(o|0)|0)==(-1|0)){za(P|0)|0;break d}else{aa=o+_|0;break}else aa=_;while(0);if((Z|0)!=(-1|0)){X=Z;Y=aa;G=193;break b}}while(0);c[20438]=c[20438]|4;G=190}else G=190;while(0);if((((G|0)==190?N>>>0<2147483647:0)?(aa=za(N|0)|0,N=za(0)|0,aa>>>0>>0&((aa|0)!=(-1|0)&(N|0)!=(-1|0))):0)?(Z=N-aa|0,Z>>>0>(B+40|0)>>>0):0){X=aa;Y=Z;G=193}if((G|0)==193){Z=(c[20435]|0)+Y|0;c[20435]=Z;if(Z>>>0>(c[20436]|0)>>>0)c[20436]=Z;Z=c[20333]|0;do if(Z){aa=81756;while(1){ba=c[aa>>2]|0;ca=aa+4|0;da=c[ca>>2]|0;if((X|0)==(ba+da|0)){G=203;break}N=c[aa+8>>2]|0;if(!N)break;else aa=N}if(((G|0)==203?(c[aa+12>>2]&8|0)==0:0)?Z>>>0>>0&Z>>>0>=ba>>>0:0){c[ca>>2]=da+Y;N=Z+8|0;_=(N&7|0)==0?0:0-N&7;N=Z+_|0;O=Y-_+(c[20330]|0)|0;c[20333]=N;c[20330]=O;c[N+4>>2]=O|1;c[N+O+4>>2]=40;c[20334]=c[20449];break}O=c[20331]|0;if(X>>>0>>0){c[20331]=X;ea=X}else ea=O;O=X+Y|0;N=81756;while(1){if((c[N>>2]|0)==(O|0)){G=211;break}_=c[N+8>>2]|0;if(!_){fa=81756;break}else N=_}if((G|0)==211)if(!(c[N+12>>2]&8)){c[N>>2]=X;aa=N+4|0;c[aa>>2]=(c[aa>>2]|0)+Y;aa=X+8|0;_=X+((aa&7|0)==0?0:0-aa&7)|0;aa=O+8|0;V=O+((aa&7|0)==0?0:0-aa&7)|0;aa=_+B|0;$=V-_-B|0;c[_+4>>2]=B|3;do if((V|0)!=(Z|0)){if((V|0)==(c[20332]|0)){W=(c[20329]|0)+$|0;c[20329]=W;c[20332]=aa;c[aa+4>>2]=W|1;c[aa+W>>2]=W;break}W=c[V+4>>2]|0;if((W&3|0)==1){T=W&-8;U=W>>>3;e:do if(W>>>0>=256){P=c[V+24>>2]|0;Q=c[V+12>>2]|0;do if((Q|0)==(V|0)){o=V+16|0;S=o+4|0;f=c[S>>2]|0;if(!f){R=c[o>>2]|0;if(!R){ga=0;break}else{ha=R;ia=o}}else{ha=f;ia=S}while(1){S=ha+20|0;f=c[S>>2]|0;if(f|0){ha=f;ia=S;continue}S=ha+16|0;f=c[S>>2]|0;if(!f)break;else{ha=f;ia=S}}if(ia>>>0>>0)wa();else{c[ia>>2]=0;ga=ha;break}}else{S=c[V+8>>2]|0;if(S>>>0>>0)wa();f=S+12|0;if((c[f>>2]|0)!=(V|0))wa();o=Q+8|0;if((c[o>>2]|0)==(V|0)){c[f>>2]=Q;c[o>>2]=S;ga=Q;break}else wa()}while(0);if(!P)break;Q=c[V+28>>2]|0;S=81612+(Q<<2)|0;do if((V|0)!=(c[S>>2]|0)){if(P>>>0<(c[20331]|0)>>>0)wa();o=P+16|0;if((c[o>>2]|0)==(V|0))c[o>>2]=ga;else c[P+20>>2]=ga;if(!ga)break e}else{c[S>>2]=ga;if(ga|0)break;c[20328]=c[20328]&~(1<>>0>>0)wa();c[ga+24>>2]=P;S=V+16|0;o=c[S>>2]|0;do if(o|0)if(o>>>0>>0)wa();else{c[ga+16>>2]=o;c[o+24>>2]=ga;break}while(0);o=c[S+4>>2]|0;if(!o)break;if(o>>>0<(c[20331]|0)>>>0)wa();else{c[ga+20>>2]=o;c[o+24>>2]=ga;break}}else{o=c[V+8>>2]|0;Q=c[V+12>>2]|0;P=81348+(U<<1<<2)|0;do if((o|0)!=(P|0)){if(o>>>0>>0)wa();if((c[o+12>>2]|0)==(V|0))break;wa()}while(0);if((Q|0)==(o|0)){c[20327]=c[20327]&~(1<>>0>>0)wa();S=Q+8|0;if((c[S>>2]|0)==(V|0)){ja=S;break}wa()}while(0);c[o+12>>2]=Q;c[ja>>2]=o}while(0);ka=V+T|0;la=T+$|0}else{ka=V;la=$}U=ka+4|0;c[U>>2]=c[U>>2]&-2;c[aa+4>>2]=la|1;c[aa+la>>2]=la;U=la>>>3;if(la>>>0<256){W=81348+(U<<1<<2)|0;P=c[20327]|0;S=1<>2]|0;if(f>>>0>=(c[20331]|0)>>>0){ma=U;na=f;break}wa()}while(0);c[ma>>2]=aa;c[na+12>>2]=aa;c[aa+8>>2]=na;c[aa+12>>2]=W;break}S=la>>>8;do if(!S)oa=0;else{if(la>>>0>16777215){oa=31;break}P=(S+1048320|0)>>>16&8;T=S<>>16&4;U=T<>>16&2;R=14-(f|P|T)+(U<>>15)|0;oa=la>>>(R+7|0)&1|R<<1}while(0);S=81612+(oa<<2)|0;c[aa+28>>2]=oa;W=aa+16|0;c[W+4>>2]=0;c[W>>2]=0;W=c[20328]|0;R=1<>2]=aa;c[aa+24>>2]=S;c[aa+12>>2]=aa;c[aa+8>>2]=aa;break}R=la<<((oa|0)==31?0:25-(oa>>>1)|0);W=c[S>>2]|0;while(1){if((c[W+4>>2]&-8|0)==(la|0)){G=281;break}pa=W+16+(R>>>31<<2)|0;S=c[pa>>2]|0;if(!S){G=278;break}else{R=R<<1;W=S}}if((G|0)==278)if(pa>>>0<(c[20331]|0)>>>0)wa();else{c[pa>>2]=aa;c[aa+24>>2]=W;c[aa+12>>2]=aa;c[aa+8>>2]=aa;break}else if((G|0)==281){R=W+8|0;S=c[R>>2]|0;T=c[20331]|0;if(S>>>0>=T>>>0&W>>>0>=T>>>0){c[S+12>>2]=aa;c[R>>2]=aa;c[aa+8>>2]=S;c[aa+12>>2]=W;c[aa+24>>2]=0;break}else wa()}}else{S=(c[20330]|0)+$|0;c[20330]=S;c[20333]=aa;c[aa+4>>2]=S|1}while(0);n=_+8|0;return n|0}else fa=81756;while(1){aa=c[fa>>2]|0;if(aa>>>0<=Z>>>0?(qa=aa+(c[fa+4>>2]|0)|0,qa>>>0>Z>>>0):0)break;fa=c[fa+8>>2]|0}_=qa+-47|0;aa=_+8|0;$=_+((aa&7|0)==0?0:0-aa&7)|0;aa=Z+16|0;_=$>>>0>>0?Z:$;$=_+8|0;V=X+8|0;O=(V&7|0)==0?0:0-V&7;V=X+O|0;N=Y+-40-O|0;c[20333]=V;c[20330]=N;c[V+4>>2]=N|1;c[V+N+4>>2]=40;c[20334]=c[20449];N=_+4|0;c[N>>2]=27;c[$>>2]=c[20439];c[$+4>>2]=c[20440];c[$+8>>2]=c[20441];c[$+12>>2]=c[20442];c[20439]=X;c[20440]=Y;c[20442]=0;c[20441]=$;$=_+24|0;do{$=$+4|0;c[$>>2]=7}while(($+4|0)>>>0>>0);if((_|0)!=(Z|0)){$=_-Z|0;c[N>>2]=c[N>>2]&-2;c[Z+4>>2]=$|1;c[_>>2]=$;V=$>>>3;if($>>>0<256){O=81348+(V<<1<<2)|0;S=c[20327]|0;R=1<>2]|0;if(T>>>0<(c[20331]|0)>>>0)wa();else{ra=V;sa=T}}else{c[20327]=S|R;ra=O+8|0;sa=O}c[ra>>2]=Z;c[sa+12>>2]=Z;c[Z+8>>2]=sa;c[Z+12>>2]=O;break}O=$>>>8;if(O)if($>>>0>16777215)ta=31;else{R=(O+1048320|0)>>>16&8;S=O<>>16&4;T=S<>>16&2;V=14-(O|R|S)+(T<>>15)|0;ta=$>>>(V+7|0)&1|V<<1}else ta=0;V=81612+(ta<<2)|0;c[Z+28>>2]=ta;c[Z+20>>2]=0;c[aa>>2]=0;S=c[20328]|0;T=1<>2]=Z;c[Z+24>>2]=V;c[Z+12>>2]=Z;c[Z+8>>2]=Z;break}T=$<<((ta|0)==31?0:25-(ta>>>1)|0);S=c[V>>2]|0;while(1){if((c[S+4>>2]&-8|0)==($|0)){G=307;break}ua=S+16+(T>>>31<<2)|0;V=c[ua>>2]|0;if(!V){G=304;break}else{T=T<<1;S=V}}if((G|0)==304)if(ua>>>0<(c[20331]|0)>>>0)wa();else{c[ua>>2]=Z;c[Z+24>>2]=S;c[Z+12>>2]=Z;c[Z+8>>2]=Z;break}else if((G|0)==307){T=S+8|0;$=c[T>>2]|0;aa=c[20331]|0;if($>>>0>=aa>>>0&S>>>0>=aa>>>0){c[$+12>>2]=Z;c[T>>2]=Z;c[Z+8>>2]=$;c[Z+12>>2]=S;c[Z+24>>2]=0;break}else wa()}}}else{$=c[20331]|0;if(($|0)==0|X>>>0<$>>>0)c[20331]=X;c[20439]=X;c[20440]=Y;c[20442]=0;c[20336]=c[20445];c[20335]=-1;$=0;do{T=81348+($<<1<<2)|0;c[T+12>>2]=T;c[T+8>>2]=T;$=$+1|0}while(($|0)!=32);$=X+8|0;S=($&7|0)==0?0:0-$&7;$=X+S|0;T=Y+-40-S|0;c[20333]=$;c[20330]=T;c[$+4>>2]=T|1;c[$+T+4>>2]=40;c[20334]=c[20449]}while(0);Y=c[20330]|0;if(Y>>>0>B>>>0){X=Y-B|0;c[20330]=X;Y=c[20333]|0;Z=Y+B|0;c[20333]=Z;c[Z+4>>2]=X|1;c[Y+4>>2]=B|3;n=Y+8|0;return n|0}}if(!(c[20315]|0))xa=81304;else xa=c[(va()|0)+64>>2]|0;c[xa>>2]=12;n=0;return n|0}function Nc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;if(!a)return;b=a+-8|0;d=c[20331]|0;if(b>>>0>>0)wa();e=c[a+-4>>2]|0;a=e&3;if((a|0)==1)wa();f=e&-8;g=b+f|0;do if(!(e&1)){h=c[b>>2]|0;if(!a)return;i=b+(0-h)|0;j=h+f|0;if(i>>>0>>0)wa();if((i|0)==(c[20332]|0)){k=g+4|0;l=c[k>>2]|0;if((l&3|0)!=3){m=i;n=j;break}c[20329]=j;c[k>>2]=l&-2;c[i+4>>2]=j|1;c[i+j>>2]=j;return}l=h>>>3;if(h>>>0<256){h=c[i+8>>2]|0;k=c[i+12>>2]|0;o=81348+(l<<1<<2)|0;if((h|0)!=(o|0)){if(h>>>0>>0)wa();if((c[h+12>>2]|0)!=(i|0))wa()}if((k|0)==(h|0)){c[20327]=c[20327]&~(1<>>0>>0)wa();o=k+8|0;if((c[o>>2]|0)==(i|0))p=o;else wa()}else p=k+8|0;c[h+12>>2]=k;c[p>>2]=h;m=i;n=j;break}h=c[i+24>>2]|0;k=c[i+12>>2]|0;do if((k|0)==(i|0)){o=i+16|0;l=o+4|0;q=c[l>>2]|0;if(!q){r=c[o>>2]|0;if(!r){s=0;break}else{t=r;u=o}}else{t=q;u=l}while(1){l=t+20|0;q=c[l>>2]|0;if(q|0){t=q;u=l;continue}l=t+16|0;q=c[l>>2]|0;if(!q)break;else{t=q;u=l}}if(u>>>0>>0)wa();else{c[u>>2]=0;s=t;break}}else{l=c[i+8>>2]|0;if(l>>>0>>0)wa();q=l+12|0;if((c[q>>2]|0)!=(i|0))wa();o=k+8|0;if((c[o>>2]|0)==(i|0)){c[q>>2]=k;c[o>>2]=l;s=k;break}else wa()}while(0);if(h){k=c[i+28>>2]|0;l=81612+(k<<2)|0;if((i|0)==(c[l>>2]|0)){c[l>>2]=s;if(!s){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();k=h+16|0;if((c[k>>2]|0)==(i|0))c[k>>2]=s;else c[h+20>>2]=s;if(!s){m=i;n=j;break}}k=c[20331]|0;if(s>>>0>>0)wa();c[s+24>>2]=h;l=i+16|0;o=c[l>>2]|0;do if(o|0)if(o>>>0>>0)wa();else{c[s+16>>2]=o;c[o+24>>2]=s;break}while(0);o=c[l+4>>2]|0;if(o)if(o>>>0<(c[20331]|0)>>>0)wa();else{c[s+20>>2]=o;c[o+24>>2]=s;m=i;n=j;break}else{m=i;n=j}}else{m=i;n=j}}else{m=b;n=f}while(0);if(m>>>0>=g>>>0)wa();f=g+4|0;b=c[f>>2]|0;if(!(b&1))wa();if(!(b&2)){if((g|0)==(c[20333]|0)){s=(c[20330]|0)+n|0;c[20330]=s;c[20333]=m;c[m+4>>2]=s|1;if((m|0)!=(c[20332]|0))return;c[20332]=0;c[20329]=0;return}if((g|0)==(c[20332]|0)){s=(c[20329]|0)+n|0;c[20329]=s;c[20332]=m;c[m+4>>2]=s|1;c[m+s>>2]=s;return}s=(b&-8)+n|0;d=b>>>3;do if(b>>>0>=256){t=c[g+24>>2]|0;u=c[g+12>>2]|0;do if((u|0)==(g|0)){p=g+16|0;a=p+4|0;e=c[a>>2]|0;if(!e){o=c[p>>2]|0;if(!o){v=0;break}else{w=o;x=p}}else{w=e;x=a}while(1){a=w+20|0;e=c[a>>2]|0;if(e|0){w=e;x=a;continue}a=w+16|0;e=c[a>>2]|0;if(!e)break;else{w=e;x=a}}if(x>>>0<(c[20331]|0)>>>0)wa();else{c[x>>2]=0;v=w;break}}else{a=c[g+8>>2]|0;if(a>>>0<(c[20331]|0)>>>0)wa();e=a+12|0;if((c[e>>2]|0)!=(g|0))wa();p=u+8|0;if((c[p>>2]|0)==(g|0)){c[e>>2]=u;c[p>>2]=a;v=u;break}else wa()}while(0);if(t|0){u=c[g+28>>2]|0;j=81612+(u<<2)|0;if((g|0)==(c[j>>2]|0)){c[j>>2]=v;if(!v){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();u=t+16|0;if((c[u>>2]|0)==(g|0))c[u>>2]=v;else c[t+20>>2]=v;if(!v)break}u=c[20331]|0;if(v>>>0>>0)wa();c[v+24>>2]=t;j=g+16|0;i=c[j>>2]|0;do if(i|0)if(i>>>0>>0)wa();else{c[v+16>>2]=i;c[i+24>>2]=v;break}while(0);i=c[j+4>>2]|0;if(i|0)if(i>>>0<(c[20331]|0)>>>0)wa();else{c[v+20>>2]=i;c[i+24>>2]=v;break}}}else{i=c[g+8>>2]|0;u=c[g+12>>2]|0;t=81348+(d<<1<<2)|0;if((i|0)!=(t|0)){if(i>>>0<(c[20331]|0)>>>0)wa();if((c[i+12>>2]|0)!=(g|0))wa()}if((u|0)==(i|0)){c[20327]=c[20327]&~(1<>>0<(c[20331]|0)>>>0)wa();t=u+8|0;if((c[t>>2]|0)==(g|0))y=t;else wa()}else y=u+8|0;c[i+12>>2]=u;c[y>>2]=i}while(0);c[m+4>>2]=s|1;c[m+s>>2]=s;if((m|0)==(c[20332]|0)){c[20329]=s;return}else z=s}else{c[f>>2]=b&-2;c[m+4>>2]=n|1;c[m+n>>2]=n;z=n}n=z>>>3;if(z>>>0<256){b=81348+(n<<1<<2)|0;f=c[20327]|0;s=1<>2]|0;if(y>>>0<(c[20331]|0)>>>0)wa();else{A=n;B=y}}else{c[20327]=f|s;A=b+8|0;B=b}c[A>>2]=m;c[B+12>>2]=m;c[m+8>>2]=B;c[m+12>>2]=b;return}b=z>>>8;if(b)if(z>>>0>16777215)C=31;else{B=(b+1048320|0)>>>16&8;A=b<>>16&4;s=A<>>16&2;f=14-(b|B|A)+(s<>>15)|0;C=z>>>(f+7|0)&1|f<<1}else C=0;f=81612+(C<<2)|0;c[m+28>>2]=C;c[m+20>>2]=0;c[m+16>>2]=0;A=c[20328]|0;s=1<>>1)|0);b=c[f>>2]|0;while(1){if((c[b+4>>2]&-8|0)==(z|0)){D=130;break}E=b+16+(B>>>31<<2)|0;y=c[E>>2]|0;if(!y){D=127;break}else{B=B<<1;b=y}}if((D|0)==127)if(E>>>0<(c[20331]|0)>>>0)wa();else{c[E>>2]=m;c[m+24>>2]=b;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((D|0)==130){B=b+8|0;j=c[B>>2]|0;y=c[20331]|0;if(j>>>0>=y>>>0&b>>>0>=y>>>0){c[j+12>>2]=m;c[B>>2]=m;c[m+8>>2]=j;c[m+12>>2]=b;c[m+24>>2]=0;break}else wa()}}else{c[20328]=A|s;c[f>>2]=m;c[m+24>>2]=f;c[m+12>>2]=m;c[m+8>>2]=m}while(0);m=(c[20335]|0)+-1|0;c[20335]=m;if(!m)F=81764;else return;while(1){m=c[F>>2]|0;if(!m)break;else F=m+8|0}c[20335]=-1;return}function Oc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;if(!a){d=Mc(b)|0;return d|0}if(b>>>0>4294967231){if(!(c[20315]|0))e=81304;else e=c[(va()|0)+64>>2]|0;c[e>>2]=12;d=0;return d|0}e=b>>>0<11?16:b+11&-8;f=a+-8|0;g=a+-4|0;h=c[g>>2]|0;i=h&-8;j=f+i|0;k=c[20331]|0;l=h&3;if(!((l|0)!=1&f>>>0>=k>>>0&(i|0)>0))wa();m=c[j+4>>2]|0;if(!(m&1))wa();do if(!l){if(!(e>>>0<256|i>>>0<(e|4)>>>0)?(i-e|0)>>>0<=c[20447]<<1>>>0:0){d=a;return d|0}}else{if(i>>>0>=e>>>0){n=i-e|0;if(n>>>0<=15){d=a;return d|0}o=f+e|0;c[g>>2]=h&1|e|2;c[o+4>>2]=n|3;p=o+n+4|0;c[p>>2]=c[p>>2]|1;Pc(o,n);d=a;return d|0}if((j|0)==(c[20333]|0)){n=(c[20330]|0)+i|0;if(n>>>0<=e>>>0)break;o=n-e|0;n=f+e|0;c[g>>2]=h&1|e|2;c[n+4>>2]=o|1;c[20333]=n;c[20330]=o;d=a;return d|0}if((j|0)==(c[20332]|0)){o=(c[20329]|0)+i|0;if(o>>>0>>0)break;n=o-e|0;if(n>>>0>15){p=f+e|0;q=p+n|0;c[g>>2]=h&1|e|2;c[p+4>>2]=n|1;c[q>>2]=n;r=q+4|0;c[r>>2]=c[r>>2]&-2;s=p;t=n}else{c[g>>2]=h&1|o|2;n=f+o+4|0;c[n>>2]=c[n>>2]|1;s=0;t=0}c[20329]=t;c[20332]=s;d=a;return d|0}if((m&2|0)==0?(n=(m&-8)+i|0,n>>>0>=e>>>0):0){o=n-e|0;p=m>>>3;do if(m>>>0>=256){r=c[j+24>>2]|0;q=c[j+12>>2]|0;do if((q|0)==(j|0)){u=j+16|0;v=u+4|0;w=c[v>>2]|0;if(!w){x=c[u>>2]|0;if(!x){y=0;break}else{z=x;A=u}}else{z=w;A=v}while(1){v=z+20|0;w=c[v>>2]|0;if(w|0){z=w;A=v;continue}v=z+16|0;w=c[v>>2]|0;if(!w)break;else{z=w;A=v}}if(A>>>0>>0)wa();else{c[A>>2]=0;y=z;break}}else{v=c[j+8>>2]|0;if(v>>>0>>0)wa();w=v+12|0;if((c[w>>2]|0)!=(j|0))wa();u=q+8|0;if((c[u>>2]|0)==(j|0)){c[w>>2]=q;c[u>>2]=v;y=q;break}else wa()}while(0);if(r|0){q=c[j+28>>2]|0;v=81612+(q<<2)|0;if((j|0)==(c[v>>2]|0)){c[v>>2]=y;if(!y){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();q=r+16|0;if((c[q>>2]|0)==(j|0))c[q>>2]=y;else c[r+20>>2]=y;if(!y)break}q=c[20331]|0;if(y>>>0>>0)wa();c[y+24>>2]=r;v=j+16|0;u=c[v>>2]|0;do if(u|0)if(u>>>0>>0)wa();else{c[y+16>>2]=u;c[u+24>>2]=y;break}while(0);u=c[v+4>>2]|0;if(u|0)if(u>>>0<(c[20331]|0)>>>0)wa();else{c[y+20>>2]=u;c[u+24>>2]=y;break}}}else{u=c[j+8>>2]|0;q=c[j+12>>2]|0;r=81348+(p<<1<<2)|0;if((u|0)!=(r|0)){if(u>>>0>>0)wa();if((c[u+12>>2]|0)!=(j|0))wa()}if((q|0)==(u|0)){c[20327]=c[20327]&~(1<>>0>>0)wa();r=q+8|0;if((c[r>>2]|0)==(j|0))B=r;else wa()}else B=q+8|0;c[u+12>>2]=q;c[B>>2]=u}while(0);if(o>>>0<16){c[g>>2]=n|h&1|2;p=f+n+4|0;c[p>>2]=c[p>>2]|1;d=a;return d|0}else{p=f+e|0;c[g>>2]=h&1|e|2;c[p+4>>2]=o|3;u=p+o+4|0;c[u>>2]=c[u>>2]|1;Pc(p,o);d=a;return d|0}}}while(0);e=Mc(b)|0;if(!e){d=0;return d|0}h=c[g>>2]|0;g=(h&-8)-((h&3|0)==0?8:4)|0;Wc(e|0,a|0,(g>>>0>>0?g:b)|0)|0;Nc(a);d=e;return d|0}function Pc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=a+b|0;e=c[a+4>>2]|0;do if(!(e&1)){f=c[a>>2]|0;if(!(e&3))return;g=a+(0-f)|0;h=f+b|0;i=c[20331]|0;if(g>>>0>>0)wa();if((g|0)==(c[20332]|0)){j=d+4|0;k=c[j>>2]|0;if((k&3|0)!=3){l=g;m=h;break}c[20329]=h;c[j>>2]=k&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}k=f>>>3;if(f>>>0<256){f=c[g+8>>2]|0;j=c[g+12>>2]|0;n=81348+(k<<1<<2)|0;if((f|0)!=(n|0)){if(f>>>0>>0)wa();if((c[f+12>>2]|0)!=(g|0))wa()}if((j|0)==(f|0)){c[20327]=c[20327]&~(1<>>0>>0)wa();n=j+8|0;if((c[n>>2]|0)==(g|0))o=n;else wa()}else o=j+8|0;c[f+12>>2]=j;c[o>>2]=f;l=g;m=h;break}f=c[g+24>>2]|0;j=c[g+12>>2]|0;do if((j|0)==(g|0)){n=g+16|0;k=n+4|0;p=c[k>>2]|0;if(!p){q=c[n>>2]|0;if(!q){r=0;break}else{s=q;t=n}}else{s=p;t=k}while(1){k=s+20|0;p=c[k>>2]|0;if(p|0){s=p;t=k;continue}k=s+16|0;p=c[k>>2]|0;if(!p)break;else{s=p;t=k}}if(t>>>0>>0)wa();else{c[t>>2]=0;r=s;break}}else{k=c[g+8>>2]|0;if(k>>>0>>0)wa();p=k+12|0;if((c[p>>2]|0)!=(g|0))wa();n=j+8|0;if((c[n>>2]|0)==(g|0)){c[p>>2]=j;c[n>>2]=k;r=j;break}else wa()}while(0);if(f){j=c[g+28>>2]|0;i=81612+(j<<2)|0;if((g|0)==(c[i>>2]|0)){c[i>>2]=r;if(!r){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();j=f+16|0;if((c[j>>2]|0)==(g|0))c[j>>2]=r;else c[f+20>>2]=r;if(!r){l=g;m=h;break}}j=c[20331]|0;if(r>>>0>>0)wa();c[r+24>>2]=f;i=g+16|0;k=c[i>>2]|0;do if(k|0)if(k>>>0>>0)wa();else{c[r+16>>2]=k;c[k+24>>2]=r;break}while(0);k=c[i+4>>2]|0;if(k)if(k>>>0<(c[20331]|0)>>>0)wa();else{c[r+20>>2]=k;c[k+24>>2]=r;l=g;m=h;break}else{l=g;m=h}}else{l=g;m=h}}else{l=a;m=b}while(0);b=c[20331]|0;if(d>>>0>>0)wa();a=d+4|0;r=c[a>>2]|0;if(!(r&2)){if((d|0)==(c[20333]|0)){s=(c[20330]|0)+m|0;c[20330]=s;c[20333]=l;c[l+4>>2]=s|1;if((l|0)!=(c[20332]|0))return;c[20332]=0;c[20329]=0;return}if((d|0)==(c[20332]|0)){s=(c[20329]|0)+m|0;c[20329]=s;c[20332]=l;c[l+4>>2]=s|1;c[l+s>>2]=s;return}s=(r&-8)+m|0;t=r>>>3;do if(r>>>0>=256){o=c[d+24>>2]|0;e=c[d+12>>2]|0;do if((e|0)==(d|0)){k=d+16|0;j=k+4|0;f=c[j>>2]|0;if(!f){n=c[k>>2]|0;if(!n){u=0;break}else{v=n;w=k}}else{v=f;w=j}while(1){j=v+20|0;f=c[j>>2]|0;if(f|0){v=f;w=j;continue}j=v+16|0;f=c[j>>2]|0;if(!f)break;else{v=f;w=j}}if(w>>>0>>0)wa();else{c[w>>2]=0;u=v;break}}else{j=c[d+8>>2]|0;if(j>>>0>>0)wa();f=j+12|0;if((c[f>>2]|0)!=(d|0))wa();k=e+8|0;if((c[k>>2]|0)==(d|0)){c[f>>2]=e;c[k>>2]=j;u=e;break}else wa()}while(0);if(o|0){e=c[d+28>>2]|0;h=81612+(e<<2)|0;if((d|0)==(c[h>>2]|0)){c[h>>2]=u;if(!u){c[20328]=c[20328]&~(1<>>0<(c[20331]|0)>>>0)wa();e=o+16|0;if((c[e>>2]|0)==(d|0))c[e>>2]=u;else c[o+20>>2]=u;if(!u)break}e=c[20331]|0;if(u>>>0>>0)wa();c[u+24>>2]=o;h=d+16|0;g=c[h>>2]|0;do if(g|0)if(g>>>0>>0)wa();else{c[u+16>>2]=g;c[g+24>>2]=u;break}while(0);g=c[h+4>>2]|0;if(g|0)if(g>>>0<(c[20331]|0)>>>0)wa();else{c[u+20>>2]=g;c[g+24>>2]=u;break}}}else{g=c[d+8>>2]|0;e=c[d+12>>2]|0;o=81348+(t<<1<<2)|0;if((g|0)!=(o|0)){if(g>>>0>>0)wa();if((c[g+12>>2]|0)!=(d|0))wa()}if((e|0)==(g|0)){c[20327]=c[20327]&~(1<>>0>>0)wa();o=e+8|0;if((c[o>>2]|0)==(d|0))x=o;else wa()}else x=e+8|0;c[g+12>>2]=e;c[x>>2]=g}while(0);c[l+4>>2]=s|1;c[l+s>>2]=s;if((l|0)==(c[20332]|0)){c[20329]=s;return}else y=s}else{c[a>>2]=r&-2;c[l+4>>2]=m|1;c[l+m>>2]=m;y=m}m=y>>>3;if(y>>>0<256){r=81348+(m<<1<<2)|0;a=c[20327]|0;s=1<>2]|0;if(x>>>0<(c[20331]|0)>>>0)wa();else{z=m;A=x}}else{c[20327]=a|s;z=r+8|0;A=r}c[z>>2]=l;c[A+12>>2]=l;c[l+8>>2]=A;c[l+12>>2]=r;return}r=y>>>8;if(r)if(y>>>0>16777215)B=31;else{A=(r+1048320|0)>>>16&8;z=r<>>16&4;s=z<>>16&2;a=14-(r|A|z)+(s<>>15)|0;B=y>>>(a+7|0)&1|a<<1}else B=0;a=81612+(B<<2)|0;c[l+28>>2]=B;c[l+20>>2]=0;c[l+16>>2]=0;z=c[20328]|0;s=1<>2]=l;c[l+24>>2]=a;c[l+12>>2]=l;c[l+8>>2]=l;return}s=y<<((B|0)==31?0:25-(B>>>1)|0);B=c[a>>2]|0;while(1){if((c[B+4>>2]&-8|0)==(y|0)){C=127;break}D=B+16+(s>>>31<<2)|0;a=c[D>>2]|0;if(!a){C=124;break}else{s=s<<1;B=a}}if((C|0)==124){if(D>>>0<(c[20331]|0)>>>0)wa();c[D>>2]=l;c[l+24>>2]=B;c[l+12>>2]=l;c[l+8>>2]=l;return}else if((C|0)==127){C=B+8|0;D=c[C>>2]|0;s=c[20331]|0;if(!(D>>>0>=s>>>0&B>>>0>=s>>>0))wa();c[D+12>>2]=l;c[C>>2]=l;c[l+8>>2]=D;c[l+12>>2]=B;c[l+24>>2]=0;return}}function Qc(){}function Rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (C=e,a-c>>>0|0)|0}function Sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return (C=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function Uc(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Vc(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<=4096)return Da(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function Xc(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else Wc(b,c,d)|0;return b|0}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<>c-32|0}function Zc(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function _c(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=_(d,c)|0;f=a>>>16;a=(e>>>16)+(_(d,f)|0)|0;d=b>>>16;b=_(d,c)|0;return (C=(a>>>16)+(_(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Rc(e^a|0,f^b|0,e|0,f|0)|0;b=C;a=g^e;e=h^f;return Rc((ed(i,b,Rc(g^c|0,h^d|0,g|0,h|0)|0,C,0)|0)^a|0,C^e|0,a|0,e|0)|0}function ad(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+16|0;g=f|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;m=Rc(h^a|0,j^b|0,h|0,j|0)|0;b=C;ed(m,b,Rc(k^d|0,l^e|0,k|0,l|0)|0,C,g)|0;l=Rc(c[g>>2]^h|0,c[g+4>>2]^j|0,h|0,j|0)|0;j=C;i=f;return (C=j,l)|0}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=_c(e,a)|0;f=C;return (C=(_(b,a)|0)+(_(d,e)|0)+f|f&0,c|0|0)|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ed(a,b,c,d,0)|0}function dd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f|0;ed(a,b,d,e,g)|0;i=f;return (C=c[g+4>>2]|0,c[g>>2]|0)|0}function ed(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if(!i){m=(f|0)!=0;if(!l){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (C=n,o)|0}else{if(!m){n=0;o=0;return (C=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return (C=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(aa(l|0)|0)-(aa(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<>>(q>>>0)&s;w=0;x=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (C=n,o)|0}r=j-1|0;if(r&j|0){s=(aa(j|0)|0)+33-(aa(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<>>(z>>>0))&y|g<>31;break}if(f|0){c[f>>2]=r&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (C=n,o)|0}else{r=Zc(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (C=n,o)|0}}else{if(m){if(f|0){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (C=n,o)|0}if(!g){if(f|0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (C=n,o)|0}r=l-1|0;if(!(r&l)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0}n=0;o=i>>>((Zc(l|0)|0)>>>0);return (C=n,o)|0}r=(aa(l|0)|0)-(aa(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (C=n,o)|0}while(0);if(!t){B=x;D=w;E=v;F=u;G=0;H=0}else{b=d|0|0;d=k|e&0;e=Sc(b|0,d|0,-1,-1)|0;k=C;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;Rc(e|0,k|0,g|0,a|0)|0;i=C;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Rc(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d|0)|0;w=C;u=u-1|0}while((u|0)!=0);B=h;D=x;E=w;F=v;G=0;H=t}t=D;D=0;if(f|0){c[f>>2]=F;c[f+4>>2]=E}n=(t|0)>>>31|(B|D)<<1|(D<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return (C=n,o)|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ia[a&127](b|0,c|0,d|0)|0}function gd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(0,a|0,b|0,c|0)|0}function hd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(1,a|0,b|0,c|0)|0}function id(a,b,c){a=a|0;b=b|0;c=c|0;return ea(2,a|0,b|0,c|0)|0}function jd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(3,a|0,b|0,c|0)|0}function kd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(4,a|0,b|0,c|0)|0}function ld(a,b,c){a=a|0;b=b|0;c=c|0;return ea(5,a|0,b|0,c|0)|0}function md(a,b,c){a=a|0;b=b|0;c=c|0;return ea(6,a|0,b|0,c|0)|0}function nd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(7,a|0,b|0,c|0)|0}function od(a,b,c){a=a|0;b=b|0;c=c|0;return ea(8,a|0,b|0,c|0)|0}function pd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(9,a|0,b|0,c|0)|0}function qd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(10,a|0,b|0,c|0)|0}function rd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(11,a|0,b|0,c|0)|0}function sd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(12,a|0,b|0,c|0)|0}function td(a,b,c){a=a|0;b=b|0;c=c|0;return ea(13,a|0,b|0,c|0)|0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;return ea(14,a|0,b|0,c|0)|0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(15,a|0,b|0,c|0)|0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(16,a|0,b|0,c|0)|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(17,a|0,b|0,c|0)|0}function yd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(18,a|0,b|0,c|0)|0}function zd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(19,a|0,b|0,c|0)|0}function Ad(a,b,c){a=a|0;b=b|0;c=c|0;return ea(20,a|0,b|0,c|0)|0}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(21,a|0,b|0,c|0)|0}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(22,a|0,b|0,c|0)|0}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(23,a|0,b|0,c|0)|0}function Ed(a,b,c){a=a|0;b=b|0;c=c|0;return ea(24,a|0,b|0,c|0)|0}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(25,a|0,b|0,c|0)|0}function Gd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(26,a|0,b|0,c|0)|0}function Hd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(27,a|0,b|0,c|0)|0}function Id(a,b,c){a=a|0;b=b|0;c=c|0;return ea(28,a|0,b|0,c|0)|0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(29,a|0,b|0,c|0)|0}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(30,a|0,b|0,c|0)|0}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;return ea(31,a|0,b|0,c|0)|0}function Md(a,b,c){a=a|0;b=b|0;c=c|0;return ea(32,a|0,b|0,c|0)|0}function Nd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(33,a|0,b|0,c|0)|0}function Od(a,b,c){a=a|0;b=b|0;c=c|0;return ea(34,a|0,b|0,c|0)|0}function Pd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(35,a|0,b|0,c|0)|0}function Qd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(36,a|0,b|0,c|0)|0}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(37,a|0,b|0,c|0)|0}function Sd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(38,a|0,b|0,c|0)|0}function Td(a,b,c){a=a|0;b=b|0;c=c|0;return ea(39,a|0,b|0,c|0)|0}function Ud(a,b,c){a=a|0;b=b|0;c=c|0;return ea(40,a|0,b|0,c|0)|0}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(41,a|0,b|0,c|0)|0}function Wd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(42,a|0,b|0,c|0)|0}function Xd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(43,a|0,b|0,c|0)|0}function Yd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(44,a|0,b|0,c|0)|0}function Zd(a,b,c){a=a|0;b=b|0;c=c|0;return ea(45,a|0,b|0,c|0)|0}function _d(a,b,c){a=a|0;b=b|0;c=c|0;return ea(46,a|0,b|0,c|0)|0}function $d(a,b,c){a=a|0;b=b|0;c=c|0;return ea(47,a|0,b|0,c|0)|0}function ae(a,b,c){a=a|0;b=b|0;c=c|0;return ea(48,a|0,b|0,c|0)|0}function be(a,b,c){a=a|0;b=b|0;c=c|0;return ea(49,a|0,b|0,c|0)|0}function ce(a,b){a=a|0;b=b|0;Ja[a&127](b|0)}function de(a){a=a|0;ga(0,a|0)}function ee(a){a=a|0;ga(1,a|0)}function fe(a){a=a|0;ga(2,a|0)}function ge(a){a=a|0;ga(3,a|0)}function he(a){a=a|0;ga(4,a|0)}function ie(a){a=a|0;ga(5,a|0)}function je(a){a=a|0;ga(6,a|0)}function ke(a){a=a|0;ga(7,a|0)}function le(a){a=a|0;ga(8,a|0)}function me(a){a=a|0;ga(9,a|0)}function ne(a){a=a|0;ga(10,a|0)}function oe(a){a=a|0;ga(11,a|0)}function pe(a){a=a|0;ga(12,a|0)}function qe(a){a=a|0;ga(13,a|0)}function re(a){a=a|0;ga(14,a|0)}function se(a){a=a|0;ga(15,a|0)}function te(a){a=a|0;ga(16,a|0)}function ue(a){a=a|0;ga(17,a|0)}function ve(a){a=a|0;ga(18,a|0)}function we(a){a=a|0;ga(19,a|0)}function xe(a){a=a|0;ga(20,a|0)}function ye(a){a=a|0;ga(21,a|0)}function ze(a){a=a|0;ga(22,a|0)}function Ae(a){a=a|0;ga(23,a|0)}function Be(a){a=a|0;ga(24,a|0)}function Ce(a){a=a|0;ga(25,a|0)}function De(a){a=a|0;ga(26,a|0)}function Ee(a){a=a|0;ga(27,a|0)}function Fe(a){a=a|0;ga(28,a|0)}function Ge(a){a=a|0;ga(29,a|0)}function He(a){a=a|0;ga(30,a|0)}function Ie(a){a=a|0;ga(31,a|0)}function Je(a){a=a|0;ga(32,a|0)}function Ke(a){a=a|0;ga(33,a|0)}function Le(a){a=a|0;ga(34,a|0)}function Me(a){a=a|0;ga(35,a|0)}function Ne(a){a=a|0;ga(36,a|0)}function Oe(a){a=a|0;ga(37,a|0)}function Pe(a){a=a|0;ga(38,a|0)}function Qe(a){a=a|0;ga(39,a|0)}function Re(a){a=a|0;ga(40,a|0)}function Se(a){a=a|0;ga(41,a|0)}function Te(a){a=a|0;ga(42,a|0)}function Ue(a){a=a|0;ga(43,a|0)}function Ve(a){a=a|0;ga(44,a|0)}function We(a){a=a|0;ga(45,a|0)}function Xe(a){a=a|0;ga(46,a|0)}function Ye(a){a=a|0;ga(47,a|0)}function Ze(a){a=a|0;ga(48,a|0)}function _e(a){a=a|0;ga(49,a|0)}function $e(a,b,c){a=a|0;b=b|0;c=c|0;Ka[a&127](b|0,c|0)}function af(a,b){a=a|0;b=b|0;ia(0,a|0,b|0)}function bf(a,b){a=a|0;b=b|0;ia(1,a|0,b|0)}function cf(a,b){a=a|0;b=b|0;ia(2,a|0,b|0)}function df(a,b){a=a|0;b=b|0;ia(3,a|0,b|0)}function ef(a,b){a=a|0;b=b|0;ia(4,a|0,b|0)}function ff(a,b){a=a|0;b=b|0;ia(5,a|0,b|0)}function gf(a,b){a=a|0;b=b|0;ia(6,a|0,b|0)}function hf(a,b){a=a|0;b=b|0;ia(7,a|0,b|0)}function jf(a,b){a=a|0;b=b|0;ia(8,a|0,b|0)}function kf(a,b){a=a|0;b=b|0;ia(9,a|0,b|0)}function lf(a,b){a=a|0;b=b|0;ia(10,a|0,b|0)}function mf(a,b){a=a|0;b=b|0;ia(11,a|0,b|0)}function nf(a,b){a=a|0;b=b|0;ia(12,a|0,b|0)}function of(a,b){a=a|0;b=b|0;ia(13,a|0,b|0)}function pf(a,b){a=a|0;b=b|0;ia(14,a|0,b|0)}function qf(a,b){a=a|0;b=b|0;ia(15,a|0,b|0)}function rf(a,b){a=a|0;b=b|0;ia(16,a|0,b|0)}function sf(a,b){a=a|0;b=b|0;ia(17,a|0,b|0)}function tf(a,b){a=a|0;b=b|0;ia(18,a|0,b|0)}function uf(a,b){a=a|0;b=b|0;ia(19,a|0,b|0)}function vf(a,b){a=a|0;b=b|0;ia(20,a|0,b|0)}function wf(a,b){a=a|0;b=b|0;ia(21,a|0,b|0)}function xf(a,b){a=a|0;b=b|0;ia(22,a|0,b|0)}function yf(a,b){a=a|0;b=b|0;ia(23,a|0,b|0)}function zf(a,b){a=a|0;b=b|0;ia(24,a|0,b|0)}function Af(a,b){a=a|0;b=b|0;ia(25,a|0,b|0)}function Bf(a,b){a=a|0;b=b|0;ia(26,a|0,b|0)}function Cf(a,b){a=a|0;b=b|0;ia(27,a|0,b|0)}function Df(a,b){a=a|0;b=b|0;ia(28,a|0,b|0)}function Ef(a,b){a=a|0;b=b|0;ia(29,a|0,b|0)}function Ff(a,b){a=a|0;b=b|0;ia(30,a|0,b|0)}function Gf(a,b){a=a|0;b=b|0;ia(31,a|0,b|0)}function Hf(a,b){a=a|0;b=b|0;ia(32,a|0,b|0)}function If(a,b){a=a|0;b=b|0;ia(33,a|0,b|0)}function Jf(a,b){a=a|0;b=b|0;ia(34,a|0,b|0)}function Kf(a,b){a=a|0;b=b|0;ia(35,a|0,b|0)}function Lf(a,b){a=a|0;b=b|0;ia(36,a|0,b|0)}function Mf(a,b){a=a|0;b=b|0;ia(37,a|0,b|0)}function Nf(a,b){a=a|0;b=b|0;ia(38,a|0,b|0)}function Of(a,b){a=a|0;b=b|0;ia(39,a|0,b|0)}function Pf(a,b){a=a|0;b=b|0;ia(40,a|0,b|0)}function Qf(a,b){a=a|0;b=b|0;ia(41,a|0,b|0)}function Rf(a,b){a=a|0;b=b|0;ia(42,a|0,b|0)}function Sf(a,b){a=a|0;b=b|0;ia(43,a|0,b|0)}function Tf(a,b){a=a|0;b=b|0;ia(44,a|0,b|0)}function Uf(a,b){a=a|0;b=b|0;ia(45,a|0,b|0)}function Vf(a,b){a=a|0;b=b|0;ia(46,a|0,b|0)}function Wf(a,b){a=a|0;b=b|0;ia(47,a|0,b|0)}function Xf(a,b){a=a|0;b=b|0;ia(48,a|0,b|0)}function Yf(a,b){a=a|0;b=b|0;ia(49,a|0,b|0)}function Zf(a,b){a=a|0;b=b|0;return La[a&127](b|0)|0}function _f(a){a=a|0;return ka(0,a|0)|0}function $f(a){a=a|0;return ka(1,a|0)|0}function ag(a){a=a|0;return ka(2,a|0)|0}function bg(a){a=a|0;return ka(3,a|0)|0}function cg(a){a=a|0;return ka(4,a|0)|0}function dg(a){a=a|0;return ka(5,a|0)|0}function eg(a){a=a|0;return ka(6,a|0)|0}function fg(a){a=a|0;return ka(7,a|0)|0}function gg(a){a=a|0;return ka(8,a|0)|0}function hg(a){a=a|0;return ka(9,a|0)|0}function ig(a){a=a|0;return ka(10,a|0)|0}function jg(a){a=a|0;return ka(11,a|0)|0}function kg(a){a=a|0;return ka(12,a|0)|0}function lg(a){a=a|0;return ka(13,a|0)|0}function mg(a){a=a|0;return ka(14,a|0)|0}function ng(a){a=a|0;return ka(15,a|0)|0}function og(a){a=a|0;return ka(16,a|0)|0}function pg(a){a=a|0;return ka(17,a|0)|0}function qg(a){a=a|0;return ka(18,a|0)|0}function rg(a){a=a|0;return ka(19,a|0)|0}function sg(a){a=a|0;return ka(20,a|0)|0}function tg(a){a=a|0;return ka(21,a|0)|0}function ug(a){a=a|0;return ka(22,a|0)|0}function vg(a){a=a|0;return ka(23,a|0)|0}function wg(a){a=a|0;return ka(24,a|0)|0}function xg(a){a=a|0;return ka(25,a|0)|0}function yg(a){a=a|0;return ka(26,a|0)|0}function zg(a){a=a|0;return ka(27,a|0)|0}function Ag(a){a=a|0;return ka(28,a|0)|0}function Bg(a){a=a|0;return ka(29,a|0)|0}function Cg(a){a=a|0;return ka(30,a|0)|0}function Dg(a){a=a|0;return ka(31,a|0)|0}function Eg(a){a=a|0;return ka(32,a|0)|0}function Fg(a){a=a|0;return ka(33,a|0)|0}function Gg(a){a=a|0;return ka(34,a|0)|0}function Hg(a){a=a|0;return ka(35,a|0)|0}function Ig(a){a=a|0;return ka(36,a|0)|0}function Jg(a){a=a|0;return ka(37,a|0)|0}function Kg(a){a=a|0;return ka(38,a|0)|0}function Lg(a){a=a|0;return ka(39,a|0)|0}function Mg(a){a=a|0;return ka(40,a|0)|0}function Ng(a){a=a|0;return ka(41,a|0)|0}function Og(a){a=a|0;return ka(42,a|0)|0}function Pg(a){a=a|0;return ka(43,a|0)|0}function Qg(a){a=a|0;return ka(44,a|0)|0}function Rg(a){a=a|0;return ka(45,a|0)|0}function Sg(a){a=a|0;return ka(46,a|0)|0}function Tg(a){a=a|0;return ka(47,a|0)|0}function Ug(a){a=a|0;return ka(48,a|0)|0}function Vg(a){a=a|0;return ka(49,a|0)|0}function Wg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ma[a&127](b|0,c|0,d|0,e|0)|0}function Xg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(0,a|0,b|0,c|0,d|0)|0}function Yg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(1,a|0,b|0,c|0,d|0)|0}function Zg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(2,a|0,b|0,c|0,d|0)|0}function _g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(3,a|0,b|0,c|0,d|0)|0}function $g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(4,a|0,b|0,c|0,d|0)|0}function ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(5,a|0,b|0,c|0,d|0)|0}function bh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(6,a|0,b|0,c|0,d|0)|0}function ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(7,a|0,b|0,c|0,d|0)|0}function dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(8,a|0,b|0,c|0,d|0)|0}function eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(9,a|0,b|0,c|0,d|0)|0}function fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(10,a|0,b|0,c|0,d|0)|0}function gh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(11,a|0,b|0,c|0,d|0)|0}function hh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(12,a|0,b|0,c|0,d|0)|0}function ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(13,a|0,b|0,c|0,d|0)|0}function jh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(14,a|0,b|0,c|0,d|0)|0}function kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(15,a|0,b|0,c|0,d|0)|0}function lh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(16,a|0,b|0,c|0,d|0)|0}function mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(17,a|0,b|0,c|0,d|0)|0}function nh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(18,a|0,b|0,c|0,d|0)|0}function oh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(19,a|0,b|0,c|0,d|0)|0}function ph(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(20,a|0,b|0,c|0,d|0)|0}function qh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(21,a|0,b|0,c|0,d|0)|0}function rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(22,a|0,b|0,c|0,d|0)|0}function sh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(23,a|0,b|0,c|0,d|0)|0}function th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(24,a|0,b|0,c|0,d|0)|0}function uh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(25,a|0,b|0,c|0,d|0)|0}function vh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(26,a|0,b|0,c|0,d|0)|0}function wh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(27,a|0,b|0,c|0,d|0)|0}function xh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(28,a|0,b|0,c|0,d|0)|0}function yh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(29,a|0,b|0,c|0,d|0)|0}function zh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(30,a|0,b|0,c|0,d|0)|0}function Ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(31,a|0,b|0,c|0,d|0)|0}function Bh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(32,a|0,b|0,c|0,d|0)|0}function Ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(33,a|0,b|0,c|0,d|0)|0}function Dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(34,a|0,b|0,c|0,d|0)|0}function Eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(35,a|0,b|0,c|0,d|0)|0}function Fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(36,a|0,b|0,c|0,d|0)|0}function Gh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(37,a|0,b|0,c|0,d|0)|0}function Hh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(38,a|0,b|0,c|0,d|0)|0}function Ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(39,a|0,b|0,c|0,d|0)|0}function Jh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(40,a|0,b|0,c|0,d|0)|0}function Kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(41,a|0,b|0,c|0,d|0)|0}function Lh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(42,a|0,b|0,c|0,d|0)|0}function Mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(43,a|0,b|0,c|0,d|0)|0}function Nh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(44,a|0,b|0,c|0,d|0)|0}function Oh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(45,a|0,b|0,c|0,d|0)|0}function Ph(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(46,a|0,b|0,c|0,d|0)|0}function Qh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(47,a|0,b|0,c|0,d|0)|0}function Rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(48,a|0,b|0,c|0,d|0)|0}function Sh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ma(49,a|0,b|0,c|0,d|0)|0}function Th(a,b,c){a=a|0;b=b|0;c=c|0;return Na[a&127](b|0,c|0)|0}function Uh(a,b){a=a|0;b=b|0;return oa(0,a|0,b|0)|0}function Vh(a,b){a=a|0;b=b|0;return oa(1,a|0,b|0)|0}function Wh(a,b){a=a|0;b=b|0;return oa(2,a|0,b|0)|0}function Xh(a,b){a=a|0;b=b|0;return oa(3,a|0,b|0)|0}function Yh(a,b){a=a|0;b=b|0;return oa(4,a|0,b|0)|0}function Zh(a,b){a=a|0;b=b|0;return oa(5,a|0,b|0)|0}function _h(a,b){a=a|0;b=b|0;return oa(6,a|0,b|0)|0}function $h(a,b){a=a|0;b=b|0;return oa(7,a|0,b|0)|0}function ai(a,b){a=a|0;b=b|0;return oa(8,a|0,b|0)|0}function bi(a,b){a=a|0;b=b|0;return oa(9,a|0,b|0)|0}function ci(a,b){a=a|0;b=b|0;return oa(10,a|0,b|0)|0}function di(a,b){a=a|0;b=b|0;return oa(11,a|0,b|0)|0}function ei(a,b){a=a|0;b=b|0;return oa(12,a|0,b|0)|0}function fi(a,b){a=a|0;b=b|0;return oa(13,a|0,b|0)|0}function gi(a,b){a=a|0;b=b|0;return oa(14,a|0,b|0)|0}function hi(a,b){a=a|0;b=b|0;return oa(15,a|0,b|0)|0}function ii(a,b){a=a|0;b=b|0;return oa(16,a|0,b|0)|0}function ji(a,b){a=a|0;b=b|0;return oa(17,a|0,b|0)|0}function ki(a,b){a=a|0;b=b|0;return oa(18,a|0,b|0)|0}function li(a,b){a=a|0;b=b|0;return oa(19,a|0,b|0)|0}function mi(a,b){a=a|0;b=b|0;return oa(20,a|0,b|0)|0}function ni(a,b){a=a|0;b=b|0;return oa(21,a|0,b|0)|0}function oi(a,b){a=a|0;b=b|0;return oa(22,a|0,b|0)|0}function pi(a,b){a=a|0;b=b|0;return oa(23,a|0,b|0)|0}function qi(a,b){a=a|0;b=b|0;return oa(24,a|0,b|0)|0}function ri(a,b){a=a|0;b=b|0;return oa(25,a|0,b|0)|0}function si(a,b){a=a|0;b=b|0;return oa(26,a|0,b|0)|0}function ti(a,b){a=a|0;b=b|0;return oa(27,a|0,b|0)|0}function ui(a,b){a=a|0;b=b|0;return oa(28,a|0,b|0)|0}function vi(a,b){a=a|0;b=b|0;return oa(29,a|0,b|0)|0}function wi(a,b){a=a|0;b=b|0;return oa(30,a|0,b|0)|0}function xi(a,b){a=a|0;b=b|0;return oa(31,a|0,b|0)|0}function yi(a,b){a=a|0;b=b|0;return oa(32,a|0,b|0)|0}function zi(a,b){a=a|0;b=b|0;return oa(33,a|0,b|0)|0}function Ai(a,b){a=a|0;b=b|0;return oa(34,a|0,b|0)|0}function Bi(a,b){a=a|0;b=b|0;return oa(35,a|0,b|0)|0}function Ci(a,b){a=a|0;b=b|0;return oa(36,a|0,b|0)|0}function Di(a,b){a=a|0;b=b|0;return oa(37,a|0,b|0)|0}function Ei(a,b){a=a|0;b=b|0;return oa(38,a|0,b|0)|0}function Fi(a,b){a=a|0;b=b|0;return oa(39,a|0,b|0)|0}function Gi(a,b){a=a|0;b=b|0;return oa(40,a|0,b|0)|0}function Hi(a,b){a=a|0;b=b|0;return oa(41,a|0,b|0)|0}function Ii(a,b){a=a|0;b=b|0;return oa(42,a|0,b|0)|0}function Ji(a,b){a=a|0;b=b|0;return oa(43,a|0,b|0)|0}function Ki(a,b){a=a|0;b=b|0;return oa(44,a|0,b|0)|0}function Li(a,b){a=a|0;b=b|0;return oa(45,a|0,b|0)|0}function Mi(a,b){a=a|0;b=b|0;return oa(46,a|0,b|0)|0}function Ni(a,b){a=a|0;b=b|0;return oa(47,a|0,b|0)|0}function Oi(a,b){a=a|0;b=b|0;return oa(48,a|0,b|0)|0}function Pi(a,b){a=a|0;b=b|0;return oa(49,a|0,b|0)|0}function Qi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Oa[a&127](b|0,c|0,d|0,e|0)}function Ri(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(0,a|0,b|0,c|0,d|0)}function Si(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(1,a|0,b|0,c|0,d|0)}function Ti(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(2,a|0,b|0,c|0,d|0)}function Ui(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(3,a|0,b|0,c|0,d|0)}function Vi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(4,a|0,b|0,c|0,d|0)}function Wi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(5,a|0,b|0,c|0,d|0)}function Xi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(6,a|0,b|0,c|0,d|0)}function Yi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(7,a|0,b|0,c|0,d|0)}function Zi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(8,a|0,b|0,c|0,d|0)}function _i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(9,a|0,b|0,c|0,d|0)}function $i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(10,a|0,b|0,c|0,d|0)}function aj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(11,a|0,b|0,c|0,d|0)}function bj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(12,a|0,b|0,c|0,d|0)}function cj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(13,a|0,b|0,c|0,d|0)}function dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(14,a|0,b|0,c|0,d|0)}function ej(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(15,a|0,b|0,c|0,d|0)}function fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(16,a|0,b|0,c|0,d|0)}function gj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(17,a|0,b|0,c|0,d|0)}function hj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(18,a|0,b|0,c|0,d|0)}function ij(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(19,a|0,b|0,c|0,d|0)}function jj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(20,a|0,b|0,c|0,d|0)}function kj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(21,a|0,b|0,c|0,d|0)}function lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(22,a|0,b|0,c|0,d|0)}function mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(23,a|0,b|0,c|0,d|0)}function nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(24,a|0,b|0,c|0,d|0)}function oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(25,a|0,b|0,c|0,d|0)}function pj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(26,a|0,b|0,c|0,d|0)}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(27,a|0,b|0,c|0,d|0)}function rj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(28,a|0,b|0,c|0,d|0)}function sj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(29,a|0,b|0,c|0,d|0)}function tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(30,a|0,b|0,c|0,d|0)}function uj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(31,a|0,b|0,c|0,d|0)}function vj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(32,a|0,b|0,c|0,d|0)}function wj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(33,a|0,b|0,c|0,d|0)}function xj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(34,a|0,b|0,c|0,d|0)}function yj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(35,a|0,b|0,c|0,d|0)}function zj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(36,a|0,b|0,c|0,d|0)}function Aj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(37,a|0,b|0,c|0,d|0)}function Bj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(38,a|0,b|0,c|0,d|0)}function Cj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(39,a|0,b|0,c|0,d|0)}function Dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(40,a|0,b|0,c|0,d|0)}function Ej(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(41,a|0,b|0,c|0,d|0)}function Fj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(42,a|0,b|0,c|0,d|0)}function Gj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(43,a|0,b|0,c|0,d|0)}function Hj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(44,a|0,b|0,c|0,d|0)}function Ij(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(45,a|0,b|0,c|0,d|0)}function Jj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(46,a|0,b|0,c|0,d|0)}function Kj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(47,a|0,b|0,c|0,d|0)}function Lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(48,a|0,b|0,c|0,d|0)}function Mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qa(49,a|0,b|0,c|0,d|0)}function Nj(a,b,c){a=a|0;b=b|0;c=c|0;ba(0);return 0}function Oj(a){a=a|0;ba(1)}function Pj(a,b){a=a|0;b=b|0;ba(2)}function Qj(a){a=a|0;ba(3);return 0}function Rj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(4);return 0}function Sj(a,b){a=a|0;b=b|0;ba(5);return 0}function Tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(6)} + +// EMSCRIPTEN_END_FUNCS +var Ia=[Nj,Nj,gd,Nj,hd,Nj,id,Nj,jd,Nj,kd,Nj,ld,Nj,md,Nj,nd,Nj,od,Nj,pd,Nj,qd,Nj,rd,Nj,sd,Nj,td,Nj,ud,Nj,vd,Nj,wd,Nj,xd,Nj,yd,Nj,zd,Nj,Ad,Nj,Bd,Nj,Cd,Nj,Dd,Nj,Ed,Nj,Fd,Nj,Gd,Nj,Hd,Nj,Id,Nj,Jd,Nj,Kd,Nj,Ld,Nj,Md,Nj,Nd,Nj,Od,Nj,Pd,Nj,Qd,Nj,Rd,Nj,Sd,Nj,Td,Nj,Ud,Nj,Vd,Nj,Wd,Nj,Xd,Nj,Yd,Nj,Zd,Nj,_d,Nj,$d,Nj,ae,Nj,be,Nj,Db,Ib,Mb,Vb,_b,ec,jc,qc,sc,Sb,Tb,Ub,Kc,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj,Nj];var Ja=[Oj,Oj,de,Oj,ee,Oj,fe,Oj,ge,Oj,he,Oj,ie,Oj,je,Oj,ke,Oj,le,Oj,me,Oj,ne,Oj,oe,Oj,pe,Oj,qe,Oj,re,Oj,se,Oj,te,Oj,ue,Oj,ve,Oj,we,Oj,xe,Oj,ye,Oj,ze,Oj,Ae,Oj,Be,Oj,Ce,Oj,De,Oj,Ee,Oj,Fe,Oj,Ge,Oj,He,Oj,Ie,Oj,Je,Oj,Ke,Oj,Le,Oj,Me,Oj,Ne,Oj,Oe,Oj,Pe,Oj,Qe,Oj,Re,Oj,Se,Oj,Te,Oj,Ue,Oj,Ve,Oj,We,Oj,Xe,Oj,Ye,Oj,Ze,Oj,_e,Oj,Hb,Qb,Wb,cc,ic,kc,rc,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj,Oj];var Ka=[Pj,Pj,af,Pj,bf,Pj,cf,Pj,df,Pj,ef,Pj,ff,Pj,gf,Pj,hf,Pj,jf,Pj,kf,Pj,lf,Pj,mf,Pj,nf,Pj,of,Pj,pf,Pj,qf,Pj,rf,Pj,sf,Pj,tf,Pj,uf,Pj,vf,Pj,wf,Pj,xf,Pj,yf,Pj,zf,Pj,Af,Pj,Bf,Pj,Cf,Pj,Df,Pj,Ef,Pj,Ff,Pj,Gf,Pj,Hf,Pj,If,Pj,Jf,Pj,Kf,Pj,Lf,Pj,Mf,Pj,Nf,Pj,Of,Pj,Pf,Pj,Qf,Pj,Rf,Pj,Sf,Pj,Tf,Pj,Uf,Pj,Vf,Pj,Wf,Pj,Xf,Pj,Yf,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj,Pj];var La=[Qj,Qj,_f,Qj,$f,Qj,ag,Qj,bg,Qj,cg,Qj,dg,Qj,eg,Qj,fg,Qj,gg,Qj,hg,Qj,ig,Qj,jg,Qj,kg,Qj,lg,Qj,mg,Qj,ng,Qj,og,Qj,pg,Qj,qg,Qj,rg,Qj,sg,Qj,tg,Qj,ug,Qj,vg,Qj,wg,Qj,xg,Qj,yg,Qj,zg,Qj,Ag,Qj,Bg,Qj,Cg,Qj,Dg,Qj,Eg,Qj,Fg,Qj,Gg,Qj,Hg,Qj,Ig,Qj,Jg,Qj,Kg,Qj,Lg,Qj,Mg,Qj,Ng,Qj,Og,Qj,Pg,Qj,Qg,Qj,Rg,Qj,Sg,Qj,Tg,Qj,Ug,Qj,Vg,Qj,Gb,Pb,Rb,bc,dc,pc,fb,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj,Qj];var Ma=[Rj,Rj,Xg,Rj,Yg,Rj,Zg,Rj,_g,Rj,$g,Rj,ah,Rj,bh,Rj,ch,Rj,dh,Rj,eh,Rj,fh,Rj,gh,Rj,hh,Rj,ih,Rj,jh,Rj,kh,Rj,lh,Rj,mh,Rj,nh,Rj,oh,Rj,ph,Rj,qh,Rj,rh,Rj,sh,Rj,th,Rj,uh,Rj,vh,Rj,wh,Rj,xh,Rj,yh,Rj,zh,Rj,Ah,Rj,Bh,Rj,Ch,Rj,Dh,Rj,Eh,Rj,Fh,Rj,Gh,Rj,Hh,Rj,Ih,Rj,Jh,Rj,Kh,Rj,Lh,Rj,Mh,Rj,Nh,Rj,Oh,Rj,Ph,Rj,Qh,Rj,Rh,Rj,Sh,Rj,lc,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj,Rj];var Na=[Sj,Sj,Uh,Sj,Vh,Sj,Wh,Sj,Xh,Sj,Yh,Sj,Zh,Sj,_h,Sj,$h,Sj,ai,Sj,bi,Sj,ci,Sj,di,Sj,ei,Sj,fi,Sj,gi,Sj,hi,Sj,ii,Sj,ji,Sj,ki,Sj,li,Sj,mi,Sj,ni,Sj,oi,Sj,pi,Sj,qi,Sj,ri,Sj,si,Sj,ti,Sj,ui,Sj,vi,Sj,wi,Sj,xi,Sj,yi,Sj,zi,Sj,Ai,Sj,Bi,Sj,Ci,Sj,Di,Sj,Ei,Sj,Fi,Sj,Gi,Sj,Hi,Sj,Ii,Sj,Ji,Sj,Ki,Sj,Li,Sj,Mi,Sj,Ni,Sj,Oi,Sj,Pi,Sj,nc,mc,Jb,Kb,Lb,Nb,Ob,Xb,Yb,Zb,$b,ac,fc,gc,hc,Sj,Sj,Sj,Sj,Sj,Sj,Sj,Sj,Sj,Sj,Sj];var Oa=[Tj,Tj,Ri,Tj,Si,Tj,Ti,Tj,Ui,Tj,Vi,Tj,Wi,Tj,Xi,Tj,Yi,Tj,Zi,Tj,_i,Tj,$i,Tj,aj,Tj,bj,Tj,cj,Tj,dj,Tj,ej,Tj,fj,Tj,gj,Tj,hj,Tj,ij,Tj,jj,Tj,kj,Tj,lj,Tj,mj,Tj,nj,Tj,oj,Tj,pj,Tj,qj,Tj,rj,Tj,sj,Tj,tj,Tj,uj,Tj,vj,Tj,wj,Tj,xj,Tj,yj,Tj,zj,Tj,Aj,Tj,Bj,Tj,Cj,Tj,Dj,Tj,Ej,Tj,Fj,Tj,Gj,Tj,Hj,Tj,Ij,Tj,Jj,Tj,Kj,Tj,Lj,Tj,Mj,Tj,wb,xb,zb,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj,Tj];return{_i64Subtract:Rc,_free:Nc,_i64Add:Sc,_memmove:Xc,_Mpg123Decode:Za,_memset:Tc,_malloc:Mc,_memcpy:Wc,_bitshift64Lshr:Uc,_Mpg123Initialize:Ya,_bitshift64Shl:Vc,_Mpg123Destroy:_a,runPostSets:Qc,stackAlloc:Pa,stackSave:Qa,stackRestore:Ra,establishStackSpace:Sa,setThrew:Ta,setTempRet0:Wa,getTempRet0:Xa,dynCall_iiii:fd,dynCall_vi:ce,dynCall_vii:$e,dynCall_ii:Zf,dynCall_iiiii:Wg,dynCall_iii:Th,dynCall_viiii:Qi}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _Mpg123Decode=Module["_Mpg123Decode"]=asm["_Mpg123Decode"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _Mpg123Initialize=Module["_Mpg123Initialize"]=asm["_Mpg123Initialize"];var _Mpg123Destroy=Module["_Mpg123Destroy"]=asm["_Mpg123Destroy"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();module.exports=Module + + + + + +},{"fs":undefined,"path":undefined}],2:[function(require,module,exports){ +/* @license + * Copyright (c) 2016 Calvin Walton + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +var AV = (typeof window !== "undefined" ? window['AV'] : typeof global !== "undefined" ? global['AV'] : null); +var Mpg123 = require('../build/libmpg123.js'); + +var MP3Decoder = AV.Decoder.extend(function() { + AV.Decoder.register('mp3', this); + + this.prototype.init = function() { + this.inlen = 4096; /* bytes */ + this.inbuf = Mpg123._malloc(this.inlen); + this.outlen = 4096; /* samples */ + this.outbuf = Mpg123._malloc(this.outlen << 2); + this.outchunks = []; + this.outchunkslen = 0; + + this.mpg123 = Mpg123._Mpg123Initialize(this.outbuf, this.outlen); + + var self = this; + + this.format_cb = Mpg123.Runtime.addFunction(function(rate, channels) { + self.checkFormat(rate, channels); + }); + + this.data_cb = Mpg123.Runtime.addFunction(function(data) { + self.emitData(data); + }); + } + + this.prototype.destroy = function() { + Mpg123._free(this.inbuf); + this.inbuf = null; + Mpg123._free(this.outbuf); + this.outbuf = null + Mpg123._Mpg123Destroy(this.mpg123); + this.mpg123 = null; + Mpg123.removeFunction(this.format_cb); + Mpg123.removeFunction(this.data_cb); + + } + + this.prototype.decode = function() { + this.waiting = !this.receivedFinalBuffer; + var offset = this.bitstream.offset; + + try { + this.readChunk(); + } catch (error) { + if (!(error instanceof AV.UnderflowError)) { + this.emit('error', error); + return false; + } + } + + if (this.outchunkslen > 0) { + var data = new Float32Array(this.outchunkslen); + var offset = 0; + for (var i = 0; i < this.outchunks.length; i++) { + data.set(this.outchunks[i], offset); + offset += this.outchunks[i].length; + } + this.outchunks = []; + this.outchunkslen = 0; + + this.emit('data', data); + if (this.receivedFinalBuffer) + this.emit('end'); + return true + } else if (!this.receivedFinalBuffer) { + this.waiting = true; + } else { + this.emit('end'); + } + + return false; + } + + this.prototype.readChunk = function() { + if (!this.stream.available(1)) + throw new AV.UnderflowError(); + + var list = this.stream.list; + var packet = list.first; + list.advance(); + + var data = packet.data; + + var decoded = 0; + + while (decoded < data.length) { + var inlen = Math.min(this.inlen, data.length - decoded); + var slice = data.subarray(decoded, decoded + inlen); + Mpg123.HEAPU8.set(slice, this.inbuf); + + var ret = Mpg123._Mpg123Decode(this.mpg123, + this.inbuf, inlen, + this.data_cb, this.format_cb); + + if (ret != 0) { + throw new Error("Mpg123 decoding error: " + ret); + } + + decoded += inlen; + } + } + + this.prototype.checkFormat = function(rate, channels) { + if (rate != this.format.sampleRate || channels != this.format.channelsPerFrame) + throw new TypeError("Sample Rate or Channels changed"); + } + + this.prototype.emitData = function(len) { + var samples = Mpg123.HEAPF32.subarray(this.outbuf >> 2, + (this.outbuf >> 2) + len); + this.outchunks.push(new Float32Array(samples)); + this.outchunkslen += samples.length; + } +}); + +module.exports = MP3Decoder; + +},{"../build/libmpg123.js":1}],3:[function(require,module,exports){ +/* @license + * Copyright (c) 2016 Calvin Walton + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +var AV = (typeof window !== "undefined" ? window['AV'] : typeof global !== "undefined" ? global['AV'] : null); + +var MP3Demuxer = AV.Demuxer.extend(function() { + AV.Demuxer.register(this); + + this.getFormatInfo = this.prototype.getFormatInfo = function(stream) { + var off = stream.offset; + + // Check for an ID3v2 header at the start of the file + var id3 = stream.readUInt24(false); + if (id3 == 0x494433) { + // Matches the string 'ID3' + stream.advance(3); + var size = 0; + size |= stream.readUInt8() << 21; + size |= stream.readUInt8() << 14; + size |= stream.readUInt8() << 7; + size |= stream.readUInt8() << 0; + + // Skip over the header + stream.advance(size); + } else { + // No ID3, go back and look for sync. + stream.seek(off); + } + + // Check for sync + var sync = stream.readUInt16(false); + if ((sync & 0xFFFE) != 0xFFFA) { + stream.seek(off); + return null; + } + + var rate = stream.readUInt8(); + + // Check for a valid bitrate + if ((rate & 0xF0) < 0x10 || (rate & 0xF0) > 0xE0) { + stream.seek(off); + return null; + } + + // Determine the sample rate + var sr = 0; + if ((rate & 0x0C) == 0x00) + sr = 44100; + else if ((rate & 0x0C) == 0x04) + sr = 48000; + else if ((rate & 0x0C) == 0x08) + sr = 32000; + else { + stream.seek(off); + return null; + } + + stream.seek(off); + + return { + formatID: "mp3", + sampleRate: sr, + channelsPerFrame: 2, /* Decoder hardcoded to output 2 channels */ + floatingPoint: true + }; + } + + this.probe = function(stream) { + // The MP3 probing is mostly ad-hoc matching. You don't really + // know if something is MP3 until you (fail to) decode it. + + var info = this.getFormatInfo(stream); + + if (info != null) { + // It's... probably an MP3 (MPEG-1 Layer 3), I guess? + return true; + } else { + return false; + } + }; + + this.prototype.readChunk = function() { + var stream = this.stream; + + // Need to parse enough of the file to get format & samplerate + // so that the decoder can be selected (and used) + if (!this.sentInfo) { + this.emit("format", this.getFormatInfo(stream)); + this.sentInfo = true; + } + + // MP3 isn't really muxed; just hand the data straight to + // the decoder. + while (stream.available(1)) { + var buffer = stream.readSingleBuffer( + stream.remainingBytes()); + this.emit('data', buffer); + } + }; +}); + +module.exports = MP3Demuxer; +AV.MP3Demuxer = MP3Demuxer; + +},{}],4:[function(require,module,exports){ +/* @license + * Copyright (c) 2016 Calvin Walton + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +exports.MP3Demuxer = require('./src/demuxer'); +exports.MP3Decoder = require('./src/decoder'); + +},{"./src/decoder":2,"./src/demuxer":3}]},{},[4]);