ne of ZLIB_ENCODING_* constants. * @return string The compressed string. * @throws ZlibException * */ function gzcompress(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_DEFLATE): string { error_clear_last(); $result = \gzcompress($data, $level, $encoding); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function returns a decoded version of the input * data. * * @param string $data The data to decode, encoded by gzencode. * @param int $length The maximum length of data to decode. * @return string The decoded string. * @throws ZlibException * */ function gzdecode(string $data, int $length = null): string { error_clear_last(); if ($length !== null) { $result = \gzdecode($data, $length); } else { $result = \gzdecode($data); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function compresses the given string using the DEFLATE * data format. * * For details on the DEFLATE compression algorithm see the document * "DEFLATE Compressed Data Format * Specification version 1.3" (RFC 1951). * * @param string $data The data to deflate. * @param int $level The level of compression. Can be given as 0 for no compression up to 9 * for maximum compression. If not given, the default compression level will * be the default compression level of the zlib library. * @param int $encoding One of ZLIB_ENCODING_* constants. * @return string The deflated string. * @throws ZlibException * */ function gzdeflate(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_RAW): string { error_clear_last(); $result = \gzdeflate($data, $level, $encoding); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function returns a compressed version of the input * data compatible with the output of the * gzip program. * * For more information on the GZIP file format, see the document: * GZIP file format specification * version 4.3 (RFC 1952). * * @param string $data The data to encode. * @param int $level The level of compression. Can be given as 0 for no compression up to 9 * for maximum compression. If not given, the default compression level will * be the default compression level of the zlib library. * @param int $encoding_mode The encoding mode. Can be FORCE_GZIP (the default) * or FORCE_DEFLATE. * * Prior to PHP 5.4.0, using FORCE_DEFLATE results in * a standard zlib deflated string (inclusive zlib headers) after a gzip * file header but without the trailing crc32 checksum. * * In PHP 5.4.0 and later, FORCE_DEFLATE generates * RFC 1950 compliant output, consisting of a zlib header, the deflated * data, and an Adler checksum. * @return string The encoded string. * @throws ZlibException * */ function gzencode(string $data, int $level = -1, int $encoding_mode = FORCE_GZIP): string { error_clear_last(); $result = \gzencode($data, $level, $encoding_mode); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Gets a (uncompressed) string of up to length - 1 bytes read from the given * file pointer. Reading ends when length - 1 bytes have been read, on a * newline, or on EOF (whichever comes first). * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @param int $length The length of data to get. * @return string The uncompressed string. * @throws ZlibException * */ function gzgets($zp, int $length = null): string { error_clear_last(); if ($length !== null) { $result = \gzgets($zp, $length); } else { $result = \gzgets($zp); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Identical to gzgets, except that * gzgetss attempts to strip any HTML and PHP * tags from the text it reads. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @param int $length The length of data to get. * @param string $allowable_tags You can use this optional parameter to specify tags which should not * be stripped. * @return string The uncompressed and stripped string. * @throws ZlibException * */ function gzgetss($zp, int $length, string $allowable_tags = null): string { error_clear_last(); if ($allowable_tags !== null) { $result = \gzgetss($zp, $length, $allowable_tags); } else { $result = \gzgetss($zp, $length); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function inflates a deflated string. * * @param string $data The data compressed by gzdeflate. * @param int $length The maximum length of data to decode. * @return string The original uncompressed data. * * The function will return an error if the uncompressed data is more than * 32768 times the length of the compressed input data * or more than the optional parameter length. * @throws ZlibException * */ function gzinflate(string $data, int $length = 0): string { error_clear_last(); $result = \gzinflate($data, $length); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Reads to EOF on the given gz-file pointer from the current position and * writes the (uncompressed) results to standard output. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @return int The number of uncompressed characters read from gz * and passed through to the input. * @throws ZlibException * */ function gzpassthru($zp): int { error_clear_last(); $result = \gzpassthru($zp); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Sets the file position indicator of the given gz-file pointer to the * beginning of the file stream. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @throws ZlibException * */ function gzrewind($zp): void { error_clear_last(); $result = \gzrewind($zp); if ($result === false) { throw ZlibException::createFromPhpError(); } } /** * This function uncompress a compressed string. * * @param string $data The data compressed by gzcompress. * @param int $length The maximum length of data to decode. * @return string The original uncompressed data. * * The function will return an error if the uncompressed data is more than * 32768 times the length of the compressed input data * or more than the optional parameter length. * @throws ZlibException * */ function gzuncompress(string $data, int $length = 0): string { error_clear_last(); $result = \gzuncompress($data, $length); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * * * @param resource $resource * @return int Returns number of bytes read so far. * @throws ZlibException * */ function inflate_get_read_len($resource): int { error_clear_last(); $result = \inflate_get_read_len($resource); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Usually returns either ZLIB_OK or ZLIB_STREAM_END. * * @param resource $resource * @return int Returns decompression status. * @throws ZlibException * */ function inflate_get_status($resource): int { error_clear_last(); $result = \inflate_get_status($resource); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Incrementally inflates encoded data in the specified context. * * Limitation: header information from GZIP compressed data are not made * available. * * @param resource $context A context created with inflate_init. * @param string $encoded_data A chunk of compressed data. * @param int $flush_mode One of ZLIB_BLOCK, * ZLIB_NO_FLUSH, * ZLIB_PARTIAL_FLUSH, * ZLIB_SYNC_FLUSH (default), * ZLIB_FULL_FLUSH, ZLIB_FINISH. * Normally you will want to set ZLIB_NO_FLUSH to * maximize compression, and ZLIB_FINISH to terminate * with the last chunk of data. See the zlib manual for a * detailed description of these constants. * @return string Returns a chunk of uncompressed data. * @throws ZlibException * */ function inflate_add($context, string $encoded_data, int $flush_mode = ZLIB_SYNC_FLUSH): string { error_clear_last(); $result = \inflate_add($context, $encoded_data, $flush_mode); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Initialize an incremental inflate context with the specified * encoding. * * @param int $encoding One of the ZLIB_ENCODING_* constants. * @param array $options An associative array which may contain the following elements: * * * level * * * The compression level in range -1..9; defaults to -1. * * * * * memory * * * The compression memory level in range 1..9; defaults to 8. * * * * * window * * * The zlib window size (logarithmic) in range 8..15; defaults to 15. * * * * * strategy * * * One of ZLIB_FILTERED, * ZLIB_HUFFMAN_ONLY, ZLIB_RLE, * ZLIB_FIXED or * ZLIB_DEFAULT_STRATEGY (the default). * * * * * dictionary * * * A string or an array of strings * of the preset dictionary (default: no preset dictionary). * * * * * * The compression level in range -1..9; defaults to -1. * * The compression memory level in range 1..9; defaults to 8. * * The zlib window size (logarithmic) in range 8..15; defaults to 15. * * One of ZLIB_FILTERED, * ZLIB_HUFFMAN_ONLY, ZLIB_RLE, * ZLIB_FIXED or * ZLIB_DEFAULT_STRATEGY (the default). * * A string or an array of strings * of the preset dictionary (default: no preset dictionary). * @return resource Returns an inflate context resource (zlib.inflate) on * success. * @throws ZlibException * */ function inflate_init(int $encoding, array $options = null) { error_clear_last(); $result = \inflate_init($encoding, $options); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Reads a file, decompresses it and writes it to standard output. * * readgzfile can be used to read a file which is not in * gzip format; in this case readgzfile will directly * read from the file without decompression. * * @param string $filename The file name. This file will be opened from the filesystem and its * contents written to standard output. * @param int $use_include_path You can set this optional parameter to 1, if you * want to search for the file in the include_path too. * @return int Returns the number of (uncompressed) bytes read from the file on success * @throws ZlibException * */ function readgzfile(string $filename, int $use_include_path = 0): int { error_clear_last(); $result = \readgzfile($filename, $use_include_path); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Uncompress any raw/gzip/zlib encoded data. * * @param string $data * @param int $max_decoded_len * @return string Returns the uncompressed data. * @throws ZlibException * */ function zlib_decode(string $data, int $max_decoded_len = null): string { error_clear_last(); if ($max_decoded_len !== null) { $result = \zlib_decode($data, $max_decoded_len); } else { $result = \zlib_decode($data); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; }}w69?^[ڐ)޴޻HHbB*Iof ErfYĖ`03@Ŷij?fΘiu ፖN|:Џ=GQCcVS3IΒ~q,fIbE$Gcr4 K3͗/_uo4xhm'- ~^L}x1e'NXj뿞5tr3^:Sf>Eqkn,+K'.}O}'0 "DO(FЃލLg,|$Jq&7/Ջ?k1 lDkNbIz0]ldR#`1Q43ˍ 7IFnq{nͦl,_97v(Ofsc'W {A cW?eF!S@W:AK|Q,'s 42VrUPG3!~٘lz6Z%=ڤC(OH7W3Snlsʒ"LpYg]Kof)N]zX(QC'˶ ~i\k6D]t vhnv=vmh(] ?v```0g-vGA &nBɜ,]'x?%8 :c -N~ZMW7o9d @7X{Je&tkA:߿ӆ1e#@fIc灹(,N4XV8f fcQwœ؝ COx ^;~)x˔Qb&"e"A/6g l^ Ahߜ`NfGbh%~11H9?s).sCwWAgsF޹16̍pNk3ԝrhLl:wMY@(btWO',!7=o`cNpnqOm?OJqh. jE$b]]YShh؄g]&Cc0M4`Z1I8u䁤cB5Oɑߛ9i:;rP tTx5f7 L,K1y 齬?-\`NMK08M[ۥ401jHI8\F59 }q;IŭqE 2l gN(K731+HѨهؿtܛa3hv5;VKPk7{K8h ͩLm-KQRZh ۿKVA v;Ic,{lw옢Tzȁ[/[1ZiKc u ̉)8K..q{?Ok@.ՐK ဿ@||2n,Qy֞֋D,z?)Ψ\{h 뗚-)VOK!R;Ծ<51b*Q|ت0=*?Ek +Jt A%Tc}05}rt U1UOM2 KU"jn1N{%&lN yp.fQCw?6ͮGXlf3쒅8ܕ=зBxK*Ahw ?ׁCHh#FQ4xj;ӵ@\hqZ[ +ˀnǞ, C +c^@J\~ U=S.{}^hwP.@Z{\)ۃu'^{c 1ZvCt vNyZ}WF..=[ a=pY&MB=(JԛmҘV[1VվWaTۇ.| tbx )Ct 4\ !/_*#`X2s\r4OQ+bs#qiV4Z(@Z.W'\79 uvPI ǾWFލVr+*km(W/*F,{M~\K>C \y9odXrA8Iڪ4QVd%մZV QWx[kN\[ԵmO9a*p ѕU`$hCt[#K6ēWʢ qeCVĿ5P46^jR\nJ#j5ZCіZ!M*0r//z.='x c5}3_ 0(7F>Ch|?{|6r'uI| } |`з}/i_@q7a_BK|Ճ|֗ڃ|wes$V{6 5t7ތD+&6U c!6USWJߓxݏjڪx+&ã.[ISn5<=jӨbZi/Qdr44SDUAK[^G{xir&‰K*Oƭxk|#+/dvŊ㙩4YlE{}A{-V@rWC_, ܠk,ۏTyrgOvF !@@//b"*A62n07Wh2o A1E:eJlNz>0@D Jow=: Mfk6*-̆_e*i]u.5KnuO }.Zk_;1O%˜&훧~~DTZ6,Lr~Qm?;S?{oɛAx坜om)x(42nxƅf8K- $W'/zOt[% ?'~?43'WW+xp>$14GP<1Mv+Vbǻɞs}#cj4dxNJ|叆i'Oȩx_KvkF ״M$ `_,kPZRܹ!˃ƫf&)-f%+;$7uE4[HOi3xi 7'.%eе ̺<}O_k+8oqjQ|E.AL?ME Z=1''Wl]kpJ\#u IQjY/[4W]2H*wp[B:+PM3?23.HFh[]<ZoC'N"hU^2cC 8g{Q` =.cA\A&|׭ڻmw2 fX}Tz4zZ  L$ݜ:c\gM|Hog (Y ųӃ%g~+dinn|̢˵]gqa^kBzFr x%V l*`~=Lt5R9u ?AU}3.Q!/-.mIwَdt[A[϶^4qfq7(6:y^ϿSmə9tbi>ҏIpOTK;Edxy$RJ YUG !2*m_¹ϴU G O܋"~4/.;֧XB$ڧVO'lk :cyC7u|`SʶBX{&L.L (gfG b30e :r!ה0گ"l, :Cј/OΝVW{KT'/ߪp&x˖ Z>!=}znp~ bS|V'6 xDauS\a@{J=_#_Mzu3Z!K簻A4I8dOƼGRkQ A\kX9=n;{ ,ojV>w-79|~@9*@Ғi4,3Ċ=g[erQPWȥ6ij029t ԁj#ƼDoqʗ(ѩXa*_b[>5:3[N:5d]&nbl|qa@&&V^ "7HȏbĜ0! &7;}?1_;qk&1P|]#f{`^"hƬX$T=h"LYa>uEw| }_T9)/%NJQoW59faisvj wdLgok&.,lwrIN@` x&b>)%坂(g/(CWkAk-?rVg&gm>|zB[ynؿtsxǸt>5/}Sӝ3?KwAY}f#gk6 |7t'u J\E\x[}!B7PNL|ڭx4h4JPh- m7 "<5 Y &{`&CؚxS?loMfO[ʓE:Ǚ_ryNjOEOY4O/>֦l+8dJkiV+"T e +5г_۶xt;;0(<-?$oe~.iqD I*%۷ ИoNõl- xgBAy bPb̨ݝ~xۣ}X>"W;XStpڻU-7 +#ޛe{ZsQI6i4 >qP /*Ғ>7$!V -$t11F<B1,iEAji460|Ew V56c/S:ٷ@̶FlsmdA Yx * C5UVUYD CIg1Iw;Ӥt8OԿdhGe۶C=CetQ(3hP9~" m1QҢM+}9][ɐ'1hX=|#Vnٛ&QƷD, 'eo7 y7~zHwWܪ?-Tdw>J\AYHد>ODgm-H@ഌ>(W񝟆cWPi=p[4h ]-#,m7/(⮍qBnHSgL w}+jg`i|sՠ[: g˒A[c8F,-|t2g aD7|(Υ1jN7 ?>3]'íCG Yo~zS'~ʽ.Nb,<eOHg;R7.,tcj욹qY%3݀.<mϻ0,|{ߐ;lsl%Z.|v烔ɾٹ]@ig: 1Ycc1|W;Ey.η\kUeQ|Rp :Bؠgѹn8G"#|wUsg Uw (yLVs0R_gR',:SKJꖫd}`(صAmPvb^ICɲ)n V皇4" i9ݎ"}@X(CyR+8٠0D0L<@1zuj@]h< .] #HN$tl߈Qf3p&];o1py>,9c&뇹r dTaA[ |[/Ы gR&3ѝȾ=?{sI1Y*vv~giMr\uiS|Ƞcs"v4iUI@[ʜZ,^rxPH"TYɹd' ,>ja66"kdSOaƏUH g@ A!ۄWA":qBӉ?Pɽ%FD+ ^7nh|șU_G.C%C> SYFk_ ȃAwX\CJ"8xlNCQfb䌡@Y:H*n}ȓ& 3yA _abfQP5#F; ^>qFXBBB4O1;KdHhTh_!YLM[L-Qgs0W5q}\~dK'?;?$Eb, q୲qmyBޗ_m ؃H!$͵[F8(էYesUv1%PNЕ+ߔyڛjaU4VJ"Y*X0! mo3Z˰!(2MTػc|5vNٮkD ܣRG3DF2^^@%rPB֭0m0>ޫ鍧~55<8VF=Nԅ?"n :roCϧ~5BMdHԪr<>WZU)y>>֑5z~(HXE2e>W@gKksK3I*_ ' FFYCS빱*~ZPև; 3WhV#%0fN#6̣Џ0oW*ey }1"GB8ㆾ9**NTă$Ӻ%Mv8A)|܉f=Qw͟bU i=4)IYuɗ_0+3]1Iy=u,|2XKAsԑQ((xhmR]15%f@ woTPI5^+$\J¡ dX|ʗ  =>ɺvq2C\$D)CkEL9̀bPϑ-̘҅EMvRL3Ax {+jj/o/`~ w+QgNyC1.Lʦ&ϋNɶ`v}DQF_ؑ:t;r\7JE訶U9d07Ws/协g)w rvm_ID-s:vfyN&9Bn}%NĒ d'rT+ZW,x/ ՌFɥqE&Rq F{u˦U3D Fb̖d/'@x!gVZVfȥ)oej>H'xadKFaTI|L".8_Js!qK#>>/l}r."ErNzR`g5E^ ᗺ\=PN) ڹq<|8wK@e <ƛgJ-& Sda+^i=Aεw[ kmk- "Fn(a_M7$NeSQȤ=]W} T\i <2cghx1œW)(pY.(w\Unm5#N!E/[#edV9UZGsFmg+#f>ԝ.hJun$ZtF7\~'8`ELqq,mgj褓?9Q(`eb5hxԺC xV@VCVd"[Qh;^VJ!3%/+?o /;Tmvz ūc c0.i tzlkLṋpł΄a3.K7\a鱶EScH ԗһ+yºTβJ1EXJ[RBnWNVY֙qmgi^uOb(k]0y@Nc kKV;qb9 ٹBIɫFӦLOG,K49~CWd'DUÌY\G 8bf֭',2*ErzK"emFLz\ZLHJÜ0A8eTO6v1揶V/ғq]7NjAO!Uz)s'e?Nm :kV Ņec];e_ E?‰N'+RHgWc8Sk*a\HG:-b@!6Yd5P$l=Z+6ejO”N >T`ZAF,'0ŅAG8)=5ۜŬM3<K)"|LwEy!u(BS땺ͶFƗ2灅%B˖+xf0+_68 Zzx\Ϩn[qUvDe?D_yge)'}dqt.w\yFuZfuk̶9-v:MJ ^4 |ǧKƵSxǞ20mLr'~kZޚ^ulzZ5֡j!