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

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

?? inflate.java

?? java 版本的zlib壓縮代碼
?? 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一区二区三区免费野_久草精品视频
奇米色777欧美一区二区| 中文字幕中文字幕一区二区| 午夜精品国产更新| 在线观看91av| 精品综合免费视频观看| 国产欧美一区二区精品忘忧草| 丁香天五香天堂综合| 亚洲欧洲日产国码二区| 色婷婷综合久久久中文字幕| 丝袜亚洲精品中文字幕一区| 日韩欧美国产一区二区在线播放| 国产一区激情在线| 亚洲人成7777| 337p亚洲精品色噜噜狠狠| 国产精品一品二品| 一区二区三区在线免费观看| 91精品久久久久久蜜臀| 国产v综合v亚洲欧| 亚洲福利一二三区| 久久午夜老司机| 91色|porny| 日韩成人一区二区| 中文字幕的久久| 欧美三级一区二区| 国产高清久久久| 午夜欧美在线一二页| 亚洲国产精品99久久久久久久久| 欧美猛男gaygay网站| 粉嫩蜜臀av国产精品网站| 亚洲尤物视频在线| 国产日韩一级二级三级| 欧美日韩亚州综合| 成人黄色小视频在线观看| 亚洲成av人片在线观看无码| 欧美国产激情二区三区| 91麻豆精品国产自产在线| 不卡一区二区在线| 精品在线视频一区| 亚洲国产你懂的| 国产精品女主播av| 精品久久久久一区| 欧美三级中文字幕| 91麻豆国产福利精品| 国产制服丝袜一区| 日韩主播视频在线| 亚洲色图在线播放| 日av在线不卡| 亚洲综合成人在线| 欧美国产精品专区| 国产亚洲欧美日韩日本| 欧美人与z0zoxxxx视频| 在线精品视频免费播放| a美女胸又www黄视频久久| 久久成人久久爱| 爽好多水快深点欧美视频| 亚洲女爱视频在线| 亚洲三级小视频| 国产精品私人自拍| 亚洲国产高清在线观看视频| 久久亚洲私人国产精品va媚药| 在线成人小视频| 欧美在线不卡一区| 色噜噜久久综合| 91色综合久久久久婷婷| 播五月开心婷婷综合| 国产v综合v亚洲欧| 成人午夜在线免费| 成人av资源站| av在线播放一区二区三区| 成人丝袜高跟foot| 国产一区 二区| 豆国产96在线|亚洲| 成人免费福利片| 成人免费毛片app| 波多野结衣在线aⅴ中文字幕不卡| 成人自拍视频在线| 成人精品gif动图一区| 不卡的av网站| 91小视频在线观看| 在线日韩av片| 欧美日韩久久久久久| 最近日韩中文字幕| 亚洲精品免费在线| 夜夜爽夜夜爽精品视频| 视频一区免费在线观看| 麻豆精品在线播放| 国产成人精品亚洲777人妖| 成人av综合在线| 在线精品视频免费观看| 91精品国产综合久久香蕉麻豆| 日韩一区二区精品| 国产三级欧美三级日产三级99| 欧美国产一区视频在线观看| 亚洲欧美视频在线观看视频| 一卡二卡三卡日韩欧美| 婷婷国产在线综合| 国产自产高清不卡| 91香蕉视频污在线| 欧美精品777| 久久久九九九九| 一区二区免费在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久精品免费免费| 久久久久国产一区二区三区四区| 国产精品毛片高清在线完整版| 亚洲激情一二三区| 日本午夜精品一区二区三区电影 | 一区二区三区**美女毛片| 亚洲成年人影院| 激情五月婷婷综合| gogogo免费视频观看亚洲一| 欧美日本乱大交xxxxx| 精品国产一区二区精华| 国产精品九色蝌蚪自拍| 日韩和欧美一区二区三区| 韩国毛片一区二区三区| 色综合久久中文综合久久牛| 91精品国产乱码久久蜜臀| 中文字幕精品三区| 日韩1区2区3区| 白白色亚洲国产精品| 在线成人小视频| 亚洲视频免费在线观看| 久久机这里只有精品| 91丨九色丨蝌蚪丨老版| 精品欧美一区二区三区精品久久| 亚洲欧美一区二区在线观看| 久久国产三级精品| 欧美三区免费完整视频在线观看| 2020国产精品自拍| 日韩av不卡一区二区| 色婷婷精品久久二区二区蜜臀av| 26uuu欧美| 美日韩黄色大片| 欧洲国内综合视频| 国产精品久久看| 国产综合久久久久久久久久久久 | 日本成人超碰在线观看| 97国产一区二区| 国产亚洲欧美色| 久久99久久99| 欧美精品18+| 一区二区三区成人| 91视视频在线观看入口直接观看www | 欧美日韩亚洲另类| 亚洲美女一区二区三区| 成人在线视频一区二区| 精品电影一区二区| 午夜精品爽啪视频| 色视频成人在线观看免| 中文在线一区二区 | 亚洲成人av一区二区| 99精品在线免费| 中文字幕av一区 二区| 国产成人亚洲综合a∨婷婷图片| 欧美va日韩va| 久久9热精品视频| 欧美成人女星排行榜| 日本va欧美va精品发布| 欧美日本在线播放| 视频一区中文字幕国产| 欧美军同video69gay| 亚洲福中文字幕伊人影院| 欧美三级乱人伦电影| 亚洲一线二线三线视频| 欧美色倩网站大全免费| 亚洲高清一区二区三区| 欧美日韩精品系列| 午夜精品久久久久久久蜜桃app| 欧美性xxxxxxxx| 亚洲成a人v欧美综合天堂下载| 欧美日韩国产综合一区二区三区| 亚洲第一激情av| 欧美一级黄色录像| 麻豆精品一区二区综合av| 久久这里只有精品6| 国产成a人无v码亚洲福利| 亚洲欧洲性图库| 欧美人与z0zoxxxx视频| 美女网站色91| 国产午夜亚洲精品羞羞网站| 高清不卡在线观看| 樱桃国产成人精品视频| 欧美人与性动xxxx| 韩国欧美国产1区| 中文欧美字幕免费| 欧美伊人久久大香线蕉综合69 | 91免费国产在线| 性做久久久久久久免费看| 91精品国产入口| 国产成人啪免费观看软件| 中文字幕一区不卡| 91麻豆精品国产91久久久更新时间| 国模无码大尺度一区二区三区| 国产欧美一二三区| 欧美在线免费视屏| 黄色日韩网站视频| 亚洲美女偷拍久久| 欧美videos中文字幕| 99在线精品视频|