亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inflate.java

?? 著名的zlib 壓縮解壓縮庫的JAVA語言實現。
?? JAVA
字號:
/* -*-mode:java; c-basic-offset:2; -*- *//*Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved.Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice,     this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright      notice, this list of conditions and the following disclaimer in      the documentation and/or other materials provided with the distribution.  3. The names of the authors may not be used to endorse or promote products     derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* * This program is based on zlib-1.1.3, so all credit should go authors * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) * and contributors of zlib. */package com.jcraft.jzlib;final class Inflate{    static final private int MAX_WBITS=15; // 32K LZ77 window  // preset dictionary flag in zlib header  static final private int PRESET_DICT=0x20;  static final int Z_NO_FLUSH=0;  static final int Z_PARTIAL_FLUSH=1;  static final int Z_SYNC_FLUSH=2;  static final int Z_FULL_FLUSH=3;  static final int Z_FINISH=4;  static final private int Z_DEFLATED=8;  static final private int Z_OK=0;  static final private int Z_STREAM_END=1;  static final private int Z_NEED_DICT=2;  static final private int Z_ERRNO=-1;  static final private int Z_STREAM_ERROR=-2;  static final private int Z_DATA_ERROR=-3;  static final private int Z_MEM_ERROR=-4;  static final private int Z_BUF_ERROR=-5;  static final private int Z_VERSION_ERROR=-6;  static final private int METHOD=0;   // waiting for method byte  static final private int FLAG=1;     // waiting for flag byte  static final private int DICT4=2;    // four dictionary check bytes to go  static final private int DICT3=3;    // three dictionary check bytes to go  static final private int DICT2=4;    // two dictionary check bytes to go  static final private int DICT1=5;    // one dictionary check byte to go  static final private int DICT0=6;    // waiting for inflateSetDictionary  static final private int BLOCKS=7;   // decompressing blocks  static final private int CHECK4=8;   // four check bytes to go  static final private int CHECK3=9;   // three check bytes to go  static final private int CHECK2=10;  // two check bytes to go  static final private int CHECK1=11;  // one check byte to go  static final private int DONE=12;    // finished check, done  static final private int BAD=13;     // got an error--stay here  int mode;                            // current inflate mode  // mode dependent information  int method;        // if FLAGS, method byte  // if CHECK, check values to compare  long[] was=new long[1] ; // computed check value  long need;               // stream check value  // if BAD, inflateSync's marker bytes count  int marker;  // mode independent information  int  nowrap;          // flag for no wrapper  int wbits;            // log2(window size)  (8..15, defaults to 15)  InfBlocks blocks;     // current inflate_blocks state  int inflateReset(ZStream z){    if(z == null || z.istate == null) return Z_STREAM_ERROR;        z.total_in = z.total_out = 0;    z.msg = null;    z.istate.mode = z.istate.nowrap!=0 ? BLOCKS : METHOD;    z.istate.blocks.reset(z, null);    return Z_OK;  }  int inflateEnd(ZStream z){    if(blocks != null)      blocks.free(z);    blocks=null;    //    ZFREE(z, z->state);    return Z_OK;  }  int inflateInit(ZStream z, int w){    z.msg = null;    blocks = null;    // handle undocumented nowrap option (no zlib header or check)    nowrap = 0;    if(w < 0){      w = - w;      nowrap = 1;    }    // set window size    if(w<8 ||w>15){      inflateEnd(z);      return Z_STREAM_ERROR;    }    wbits=w;    z.istate.blocks=new InfBlocks(z, 				  z.istate.nowrap!=0 ? null : this,				  1<<w);    // reset state    inflateReset(z);    return Z_OK;  }  int inflate(ZStream z, int f){    int r;    int b;    if(z == null || z.istate == null || z.next_in == null)      return Z_STREAM_ERROR;    f = f == Z_FINISH ? Z_BUF_ERROR : Z_OK;    r = Z_BUF_ERROR;    while (true){//System.out.println("mode: "+z.istate.mode);      switch (z.istate.mode){      case METHOD:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        if(((z.istate.method = z.next_in[z.next_in_index++])&0xf)!=Z_DEFLATED){          z.istate.mode = BAD;          z.msg="unknown compression method";          z.istate.marker = 5;       // can't try inflateSync          break;        }        if((z.istate.method>>4)+8>z.istate.wbits){          z.istate.mode = BAD;          z.msg="invalid window size";          z.istate.marker = 5;       // can't try inflateSync          break;        }        z.istate.mode=FLAG;      case FLAG:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        b = (z.next_in[z.next_in_index++])&0xff;        if((((z.istate.method << 8)+b) % 31)!=0){          z.istate.mode = BAD;          z.msg = "incorrect header check";          z.istate.marker = 5;       // can't try inflateSync          break;        }        if((b&PRESET_DICT)==0){          z.istate.mode = BLOCKS;          break;        }        z.istate.mode = DICT4;      case DICT4:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need=((z.next_in[z.next_in_index++]&0xff)<<24)&0xff000000L;        z.istate.mode=DICT3;      case DICT3:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<16)&0xff0000L;        z.istate.mode=DICT2;      case DICT2:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<8)&0xff00L;        z.istate.mode=DICT1;      case DICT1:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need += (z.next_in[z.next_in_index++]&0xffL);        z.adler = z.istate.need;        z.istate.mode = DICT0;        return Z_NEED_DICT;      case DICT0:        z.istate.mode = BAD;        z.msg = "need dictionary";        z.istate.marker = 0;       // can try inflateSync        return Z_STREAM_ERROR;      case BLOCKS:        r = z.istate.blocks.proc(z, r);        if(r == Z_DATA_ERROR){          z.istate.mode = BAD;          z.istate.marker = 0;     // can try inflateSync          break;        }        if(r == Z_OK){          r = f;        }        if(r != Z_STREAM_END){          return r;        }        r = f;        z.istate.blocks.reset(z, z.istate.was);        if(z.istate.nowrap!=0){          z.istate.mode=DONE;          break;        }        z.istate.mode=CHECK4;      case CHECK4:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need=((z.next_in[z.next_in_index++]&0xff)<<24)&0xff000000L;        z.istate.mode=CHECK3;      case CHECK3:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<16)&0xff0000L;        z.istate.mode = CHECK2;      case CHECK2:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<8)&0xff00L;        z.istate.mode = CHECK1;      case CHECK1:        if(z.avail_in==0)return r;r=f;        z.avail_in--; z.total_in++;        z.istate.need+=(z.next_in[z.next_in_index++]&0xffL);        if(((int)(z.istate.was[0])) != ((int)(z.istate.need))){          z.istate.mode = BAD;          z.msg = "incorrect data check";          z.istate.marker = 5;       // can't try inflateSync          break;        }        z.istate.mode = DONE;      case DONE:        return Z_STREAM_END;      case BAD:        return Z_DATA_ERROR;      default:        return Z_STREAM_ERROR;      }    }  }  int inflateSetDictionary(ZStream z, byte[] dictionary, int dictLength){    int index=0;    int length = dictLength;    if(z==null || z.istate == null|| z.istate.mode != DICT0)      return Z_STREAM_ERROR;    if(z._adler.adler32(1L, dictionary, 0, dictLength)!=z.adler){      return Z_DATA_ERROR;    }    z.adler = z._adler.adler32(0, null, 0, 0);    if(length >= (1<<z.istate.wbits)){      length = (1<<z.istate.wbits)-1;      index=dictLength - length;    }    z.istate.blocks.set_dictionary(dictionary, index, length);    z.istate.mode = BLOCKS;    return Z_OK;  }  static private byte[] mark = {(byte)0, (byte)0, (byte)0xff, (byte)0xff};  int inflateSync(ZStream z){    int n;       // number of bytes to look at    int p;       // pointer to bytes    int m;       // number of marker bytes found in a row    long r, w;   // temporaries to save total_in and total_out    // set up    if(z == null || z.istate == null)      return Z_STREAM_ERROR;    if(z.istate.mode != BAD){      z.istate.mode = BAD;      z.istate.marker = 0;    }    if((n=z.avail_in)==0)      return Z_BUF_ERROR;    p=z.next_in_index;    m=z.istate.marker;    // search    while (n!=0 && m < 4){      if(z.next_in[p] == mark[m]){        m++;      }      else if(z.next_in[p]!=0){        m = 0;      }      else{        m = 4 - m;      }      p++; n--;    }    // restore    z.total_in += p-z.next_in_index;    z.next_in_index = p;    z.avail_in = n;    z.istate.marker = m;    // return no joy or set up to restart on a new block    if(m != 4){      return Z_DATA_ERROR;    }    r=z.total_in;  w=z.total_out;    inflateReset(z);    z.total_in=r;  z.total_out = w;    z.istate.mode = BLOCKS;    return Z_OK;  }  // Returns true if inflate is currently at the end of a block generated  // by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP  // implementation to provide an additional safety check. PPP uses Z_SYNC_FLUSH  // but removes the length bytes of the resulting empty stored block. When  // decompressing, PPP checks that at the end of input packet, inflate is  // waiting for these length bytes.  int inflateSyncPoint(ZStream z){    if(z == null || z.istate == null || z.istate.blocks == null)      return Z_STREAM_ERROR;    return z.istate.blocks.sync_point();  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区| 国产欧美日韩在线视频| 国产精品国产自产拍高清av| 亚洲日韩欧美一区二区在线| 国产乱理伦片在线观看夜一区| 日韩网站在线看片你懂的| 亚洲福中文字幕伊人影院| 色婷婷国产精品| 国产欧美一二三区| 国产高清精品在线| 久久亚洲精精品中文字幕早川悠里| 日韩电影在线免费观看| 欧美色倩网站大全免费| 亚洲另类春色国产| av电影在线不卡| 国产精品久久久99| 国产精品一二一区| 中文字幕欧美国产| a亚洲天堂av| 中文字幕在线观看不卡视频| av欧美精品.com| 久久久99免费| 国产91丝袜在线观看| 欧美一区二区在线播放| 日本欧美一区二区在线观看| 欧美丰满嫩嫩电影| 欧美人狂配大交3d怪物一区| 久久精品无码一区二区三区| 91麻豆精品在线观看| 婷婷激情综合网| 久久午夜国产精品| 欧美午夜不卡在线观看免费| 七七婷婷婷婷精品国产| 国产精品久久久久aaaa樱花 | 日韩欧美国产一区在线观看| 国产成人精品免费网站| 亚洲va韩国va欧美va精品| 精品电影一区二区三区 | 亚洲激情六月丁香| 欧美刺激午夜性久久久久久久| 91原创在线视频| 久久国产欧美日韩精品| 亚洲另类中文字| 久久亚洲精品国产精品紫薇| 欧美视频日韩视频在线观看| 成人精品一区二区三区中文字幕| 五月婷婷激情综合| 亚洲特级片在线| 久久久美女毛片| 欧美一级欧美一级在线播放| 一本大道久久a久久精品综合| 精品午夜久久福利影院| 亚洲国产精品天堂| 亚洲色图清纯唯美| 久久久蜜桃精品| 日韩欧美国产精品| 欧美日韩你懂的| 91浏览器入口在线观看| 国产91在线观看丝袜| 久草精品在线观看| 日韩不卡一二三区| 亚洲一二三四久久| 国产美女在线精品| 国产精品视频第一区| 91精选在线观看| 91久久精品网| 91啪在线观看| 成人免费的视频| 国产一区在线视频| 久久精品国产99国产| 日本欧美大码aⅴ在线播放| 亚洲精品精品亚洲| 亚洲欧美日韩成人高清在线一区| 国产农村妇女毛片精品久久麻豆 | 国产午夜精品理论片a级大结局| 91精品国产欧美一区二区成人| 欧美亚一区二区| 欧美体内she精视频| 色94色欧美sute亚洲线路二| 一本一道久久a久久精品综合蜜臀| 成人动漫精品一区二区| 国产福利91精品一区二区三区| 久久精品99国产国产精| 精品午夜一区二区三区在线观看| 久久99日本精品| 国产一区二区视频在线| 国产精品综合在线视频| 高清国产一区二区三区| 国产美女精品一区二区三区| 激情文学综合网| 韩日欧美一区二区三区| 极品少妇一区二区| 国产99久久精品| 成人一区二区在线观看| av高清久久久| 欧美性猛交xxxxxxxx| 7777精品伊人久久久大香线蕉完整版 | 亚洲美女在线国产| 一区二区免费在线播放| 性欧美大战久久久久久久久| 三级一区在线视频先锋| 久久精品999| 福利91精品一区二区三区| 成人aaaa免费全部观看| 色94色欧美sute亚洲13| 91精品在线观看入口| 精品国产乱码久久久久久蜜臀| 欧美国产精品一区二区三区| 中文字幕一区二区三区色视频| 亚洲欧美国产毛片在线| 日本系列欧美系列| 东方欧美亚洲色图在线| 在线观看亚洲精品视频| 日韩欧美一级二级| 国产精品午夜在线观看| 亚洲一区二区三区四区中文字幕 | 国产一区二区三区综合| 成人18视频在线播放| 欧美人牲a欧美精品| 2014亚洲片线观看视频免费| 综合亚洲深深色噜噜狠狠网站| 午夜私人影院久久久久| 国产一区二区不卡在线| 在线观看区一区二| 久久―日本道色综合久久| 一区二区免费在线播放| 国产一区二区美女诱惑| 欧洲在线/亚洲| 久久嫩草精品久久久久| 亚洲不卡av一区二区三区| 国产一区在线不卡| 欧美日韩亚洲高清一区二区| 久久综合色一综合色88| 亚洲人吸女人奶水| 国产在线国偷精品免费看| 91成人看片片| 欧美韩日一区二区三区| 欧美a一区二区| 欧美日韩一区成人| 国产精品久久久久国产精品日日| 久久精品99国产国产精| 欧美日韩国产一级| 亚洲欧洲国产日韩| 国产精品66部| 91精品国产综合久久久久久久| 中文字幕制服丝袜成人av| 精品一区二区日韩| 欧美高清dvd| 一区二区在线观看视频在线观看| 激情小说欧美图片| 51精品久久久久久久蜜臀| 亚洲精品国产高清久久伦理二区| 精品一区二区三区免费播放| 91精品国产乱码| 亚洲国产成人tv| 色综合久久天天综合网| 久久嫩草精品久久久精品| 亚洲日本成人在线观看| 久久精品夜色噜噜亚洲aⅴ| 色吧成人激情小说| 色哟哟一区二区在线观看| 亚洲国产色一区| 99国产精品国产精品毛片| 欧美精品一区二区久久久 | 亚洲精品国产a久久久久久| 99视频在线观看一区三区| 国产日产精品一区| 精品一区二区在线观看| 精品久久国产老人久久综合| 麻豆成人久久精品二区三区红| 欧美精品久久久久久久多人混战 | 亚洲成人手机在线| 色菇凉天天综合网| 一区二区三区四区国产精品| 欧洲中文字幕精品| 亚洲成年人影院| 91精品国产高清一区二区三区蜜臀| 日精品一区二区三区| 日韩视频一区二区在线观看| 日本美女一区二区三区| 日韩午夜在线观看| 韩国成人精品a∨在线观看| www久久久久| 成年人国产精品| 亚洲另类在线视频| 欧美老女人在线| 蜜臀av性久久久久蜜臀aⅴ| 日韩精品一区二区三区在线| 国产一区二区在线影院| 国产精品乱人伦中文| 色婷婷综合久久久| 午夜精品久久久久久久| 欧美xxxx老人做受| 国产a区久久久| 亚洲久本草在线中文字幕| 欧美日本一区二区在线观看| 极品少妇xxxx精品少妇| 亚洲天堂成人在线观看| 制服丝袜成人动漫| 粉嫩绯色av一区二区在线观看|