1
2
3
4
5
6
7
8
9
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Ë
³òúh†BãóØ—dZddlmZddlZddlZddlZddlmZddlm    Z    ddl
m Z ddl m Z mZGd    „d
e«ZGd „d e«ZGd „de«Zd%d„Z    d&                    d'd„Zd(d„Zd(d„ZGd„de«Zd)d„ZGd„dej«ZGd„dej4ej6«ZGd„de«ZGd„de«ZGd„dej>«Z d*d „Z!e jDejFee«e jHejFd!«e jJd"e«e jJd#e«e jLejFe!«e jNd$e «y)+aÑ
Blizzard Mipmap Format (.blp)
Jerome Leclanche <jerome@leclan.ch>
 
The contents of this file are hereby released in the public domain (CC0)
Full text of the CC0 license:
  https://creativecommons.org/publicdomain/zero/1.0/
 
BLP1 files, used mostly in Warcraft III, are not fully supported.
All types of BLP2 files used in World of Warcraft are supported.
 
The BLP file structure consists of a header, up to 16 mipmaps of the
texture
 
Texture sizes must be powers of two, though the two dimensions do
not have to be equal; 512x256 is valid, but 512x200 is not.
The first mipmap (mipmap #0) is the full size image; each subsequent
mipmap halves both dimensions. The final mipmap should be 1x1.
 
BLP files come in many different flavours:
* JPEG-compressed (type == 0) - only supported for BLP1.
* RAW images (type == 1, encoding == 1). Each mipmap is stored as an
  array of 8-bit values, one per pixel, left to right, top to bottom.
  Each value is an index to the palette.
* DXT-compressed (type == 1, encoding == 2):
- DXT1 compression is used if alpha_encoding == 0.
  - An additional alpha bit is used if alpha_depth == 1.
  - DXT3 compression is used if alpha_encoding == 1.
  - DXT5 compression is used if alpha_encoding == 7.
é)Ú annotationsN)ÚIntEnum)ÚBytesIO)ÚIOé)ÚImageÚ    ImageFilecó—eZdZdZy)ÚFormatrN)Ú__name__Ú
__module__Ú __qualname__ÚJPEG©óúEH:\Change_password\venv_build\Lib\site-packages\PIL/BlpImagePlugin.pyr r ,s„Ø Drr có—eZdZdZdZdZy)ÚEncodingrééN)r r rÚ UNCOMPRESSEDÚDXTÚUNCOMPRESSED_RAW_BGRArrrrr0s„Ø€LØ
€CØÑrrcó—eZdZdZdZdZy)Ú AlphaEncodingrréN)r r rÚDXT1ÚDXT3ÚDXT5rrrrr6s„Ø €DØ €DØ Drrcó<—|dz    dzdz|dz    dzdz|dzdzfS)Né éréé?rr)Úis rÚ
unpack_565r&<s2€Ø "‰W˜Ñ  Ñ " a¨1¡f°¡_¸Ñ$:¸QÀ¹XÈ!¹OÐ KÐKrc    óê—t|«dz}t«t«t«t«f}t|«D]/}|dz}tjd||«\}}}t |«\}    }
} t |«\} } }td«D]à}td«D]Ð}|dz}|dz    }d}|dk(r|    |
| }}}n„|dk(r| | |}}}nx|dk(r@||kDr"d|    z| zdz}d|
z| zdz}d| z|zdz}nL|    | zdz}|
| zdz}| |zdz}n3|dk(r.||kDr"d| z|    zdz}d| z|
zdz}d|z| zdz}nd    \}}}}|r||j |g«Œº||j g«ŒÒŒâŒ2|S)
úE
    input: one "row" of data (i.e. will produce 4*width pixels)
    éz<HHIérréÿrr)rrrr©ÚlenÚ    bytearrayÚrangeÚstructÚ unpack_fromr&Úextend)ÚdataÚalphaÚblocksÚretÚ block_indexÚidxÚcolor0Úcolor1ÚbitsÚr0Úg0Úb0Úr1Úg1Úb1Újr%ÚcontrolÚaÚrÚgÚbs                      rÚ decode_dxt1rH@sÜ€ô‹Y˜!‰^€FÜ ‹;œ    › ¤Y£[´)³+Ð
>€Cä˜V“}ó*-ˆ à˜A‰oˆÜ%×1Ñ1°&¸$ÀÓDш˜ä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBôq“ò     -ˆAܘ1“Xò -ð ™(Ø˜q‘yàØ˜a’<Ø  " b˜!q‘AØ ’\Ø  " b˜!q‘AØ ’\Ø ’Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.™à "™W¨™N˜Ø "™W¨™N˜Ø "™W¨™N™Ø ’\Ø ’Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.™à%/™
˜˜1˜a áؘ‘F—M‘M 1 a¨¨A ,Õ/à˜‘F—M‘M 1 a¨ )Õ,ñ? -ò     -ð*-ðX €Jrc    ó&—t|«dz}t«t«t«t«f}t|«D]M}|dz}|||dz}tjd|«}tjd|d«\}}tjd|d«\}    t |«\}
} } t |«\} }}td«D]È}d}td«D]¶}d|z|zd    z}||}|rd}|dz}nd
}|d z}|d z}|    d    d|z|zzz    d z}|dk(r|
| | }}}nY|dk(r| ||}}}nM|d    k(r"d    |
z| zd z}d    | z|zd z}d    | z|zd z}n&|d k(r!d    | z|
zd z}d    |z| zd z}d    |z| zd z}||j |g«Œ¸ŒÊŒP|S)r(éz<8Bú<HHr)ú<Ié r*FrTéérrrr,)r3r5r6r7r8Úblockr;r9r:Úcoder<r=r>r?r@rArBÚhighr%Úalphacode_indexrDÚ
color_coderErFrGs                         rÚ decode_dxt3rUys€ô
‹Y˜"‰_€FÜ ‹;œ    › ¤Y£[´)³+Ð
>€Cä˜V“}ó(,ˆ ؘBшؐS˜3 ™8Ð$ˆä×!Ñ! %¨Ó/ˆÜ×+Ñ+¨E°5¸!Ó<‰ˆä×$Ñ$ T¨5°"Ó5‰ˆä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBäq“ò    ,ˆA؈Dܘ1“Xò ,Ø#$ q¡5¨1¡9°Ñ"2Ø˜Ñ)ÙØ Dؘ!‘G‘AàDؘ‘HAؐR‘à" a¨1¨q©5°1©9¡oÑ5¸Ñ=
à ’?Ø  " b˜!q‘AØ 1’_Ø  " b˜!q‘AØ 1’_ؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AؘR™ "™¨Ñ*‘AØ 1’_ؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AàA‘— ‘ ˜q ! Q¨˜lÕ+ñ5 ,ò    ,ð(,ðT €Jrc    óz—t|«dz}t«t«t«t«f}t|«D]÷}|dz}|||dz}tjd|«\}}tjd|d«}|d|ddzz|ddzz|dd    zz}    |d
|d dzz}
tjd |d«\} } tjd |d«\} t | «\}}}t | «\}}}td«D])}td«D]}dd|z|zz}|dkr    |
|z    dz}n|dk(r|
dz    |    d zdzz}n |    |dz
z    dz}|d
k(r|}nF|d k(r|}n>||kDrd|z
|z|d z
|zzdz}n$|dk(rd
}n|dk(rd}nd|z
|z|d z
|zzdz}| dd|z|zzz    dz}|d
k(r|||}}}nY|d k(r|||}}}nM|dk(r"d|z|zdz}d|z|zdz}d|z|zdz}n&|dk(r!d|z|zdz}d|z|zdz}d|z|zdz}||j |g«ŒŒ,Œú|S)zG
    input: one "row" of data (i.e. will produce 4 * width pixels)
    rJz<BBz<6Brrr)r*r#érrrKrLrMrrNér+r,)r3r5r6r7r8rPÚa0Úa1r;Ú
alphacode1Ú
alphacode2r9r:rQr<r=r>r?r@rArBr%rSÚ    alphacoderDrTrErFrGs                             rÚ decode_dxt5r^®së€ô
‹Y˜"‰_€FÜ ‹;œ    › ¤Y£[´)³+Ð
>€Cä˜V“}ó9,ˆ ؘBшؐS˜3 ™8Ð$ˆä×#Ñ# E¨5Ó1‰ˆˆBä×!Ñ! %¨°Ó2ˆØ˜!‘W  Q¡¨1¡ Ñ-°°a±¸B±Ñ?À4ÈÁ7ÈbÁ=ÑQˆ
ؘ!‘W  Q¡¨1¡ Ñ-ˆ
ä×+Ñ+¨E°5¸!Ó<‰ˆä×$Ñ$ T¨5°"Ó5‰ˆä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBäq“ó(    ,ˆAܘ1“Xó' ,à"# q¨1¡u¨q¡y¡/à" bÒ(Ø!+¨Ñ!>À$Ñ F‘IØ$¨Ò*Ø!+¨rÑ!1°zÀQ±È$Ñ6NÑ O‘Ià!+°À"Ñ0DÑ!EÈÑ MIà ’>Ø‘AØ !’^Ø‘Aؘ"’Wؘi™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJ‘AØ !’^Ø‘AØ !’^Ø‘Aà˜i™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJAà" a¨1¨q©5°1©9¡oÑ5¸Ñ=
à ’?Ø  " b˜!q‘AØ 1’_Ø  " b˜!q‘AØ 1’_ؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AؘR™ "™¨Ñ*‘AØ 1’_ؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AؘR™ "™¨Ñ*AàA‘— ‘ ˜q ! Q¨˜lÖ+òO' ,ò(    ,ð#9,ðv €Jrcó —eZdZy)ÚBLPFormatErrorN)r r rrrrr`r`ôs„Ørr`có$—|jd«S)N)óBLP1óBLP2)Ú
startswith)Úprefixs rÚ_acceptrføs€Ø × Ñ Ð/Ó 0Ð0rcó —eZdZdZdZdZdd„Zy)Ú BlpImageFilez 
    Blizzard Mipmap Format
    ÚBLPzBlizzard Mipmap Formatcó&—|jjd«|_t|j«s#dt    |j«›}t |«‚t jd|jjd««d}|jdk(r6t jd|jjd««ddk7}nÃt jd|jjd««d}t jd|jjd««ddk7}t jd|jjd««d}|jjdtj«t jd    |jjd
««|_ |jdk(rdt jd|jjd««d}|jjdtj«|||f}d }n||f}d }|jj«}|rd nd|_ tj|d|j z||«g|_y)Nr*zBad BLP magic ú<irrbrLú<brú<IIr)ééÚRGBAÚRGB©rr)ÚfpÚreadÚmagicrfÚreprr`r0ÚunpackÚseekÚosÚSEEK_CURÚ_sizeÚdecodeÚ_moder    Ú_TileÚsizeÚtile)    ÚselfÚmsgÚ compressionr4ÚencodingÚalpha_encodingÚargsÚoffsetÚdecoders             rÚ_openzBlpImageFile._opensـؗW‘W—\‘\ !“_ˆŒ
ܐt—z‘zÔ"Ø"¤4¨¯
©
Ó#3Ð"4Ð5ˆCÜ  Ó%Ð %ä—m‘m D¨$¯'©'¯,©,°q«/Ó:¸1Ñ=ˆ Ø :‰:˜Ò  Ü—M‘M $¨¯©¯ © °Q«Ó8¸Ñ;¸qÑ@‰Eä—}‘} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHÜ—M‘M $¨¯©¯ © °Q«Ó8¸Ñ;¸qÑ@ˆEÜ#Ÿ]™]¨4°·±·±¸a³ÓAÀ!ÑDˆNØ G‰GL‰L˜œBŸK™KÔ (ä—]‘] 5¨$¯'©'¯,©,°q«/Ó:ˆŒ
ð :‰:˜Ò  Ü—}‘} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHØ G‰GL‰L˜œBŸK™KÔ (à ¨5Ð1ˆD؉Fà ¨5°.ÐAˆD؈Fà—*‘*×#Ñ#Ó%ˆá$‘V¨%ˆŒ
Ü—_‘_ W¨f°t·y±yÑ.@À&È$ÓOÐPˆ    rN©ÚreturnÚNone)r r rÚ__doc__ÚformatÚformat_descriptionr‰rrrrhrhüs„ñð€FØ1ÐôQrrhcój—eZdZdZd    d„Zej d
d„«Zd
d„Zd d„Z    d d„Z
                        d d„Z y)Ú_BLPBaseDecoderTc󘗠   |j«|j«y#tj$r}d}t    |«|‚d}~wwxYw)NzTruncated BLP file)éÿÿÿÿr)Ú _read_headerÚ_loadr0ÚerrorÚOSError)rÚbufferÚer‚s    rr|z_BLPBaseDecoder.decode)sH€ð    &Ø × Ñ Ô Ø J‰JŒLðøô|‰|ò    &Ø&ˆCܘ#“, AÐ %ûð    &ús‚ #£A    ¶AÁA    có—y©Nr©rs rr•z_BLPBaseDecoder._load2s€à rcó¬—tjd|jd««|_tjd|jd««|_y)Nú<16Ié@)r0rwÚ
_safe_readÚ_offsetsÚ_lengthsrœs rr”z_BLPBaseDecoder._read_header6s8€ÜŸ ™  f¨d¯o©o¸fÓ.EÓFˆŒ ÜŸ ™  f¨d¯o©o¸fÓ.EÓFˆ rcó^—|j€J‚tj|j|«Sr›)Úfdr    r )rÚlengths  rr z_BLPBaseDecoder._safe_read:s)€Øw‰wÐ"Ð"Ð"Ü×#Ñ# D§G¡G¨VÓ4Ð4rcóà—g}td«D]B}    tjd|jd««\}}}}|j ||||f«ŒD|S#tj$rY|SwxYw)Néú<4Br*)r/r0rwr r–Úappend)rr6r%rGrFrErDs       rÚ _read_palettez_BLPBaseDecoder._read_palette>sz€ØˆÜs“ò    %ˆAð Ü#Ÿ]™]¨5°$·/±/À!Ó2DÓE‘
1a˜ð J‰J˜˜1˜a |Õ $ð     %ð ˆ
øô—<‘<ò Ùàˆ
ð ús’*AÁA-Á,A-có<—t«}t|j|jd««}        t    j
d|j d««\}||\}}}}    |||f}
|r|
|    fz }
|j|
«ŒQ#tj$rY|SwxYw)Nrú<Br)    r.rr r¢r0rwrtr–r2) rÚpaletter4r3Ú_datar‡rGrFrErDÚds            rÚ
_read_bgraz_BLPBaseDecoder._read_bgraHs¤€ô‹{ˆÜ˜Ÿ™¨¯ © °aÑ(8Ó9Ó:ˆØð Ü"ŸM™M¨$°·
±
¸1³ Ó>‘    ð! ™‰JˆAˆq!QØ"# Q¨ ˆAÙØaT‘    Ø K‰K˜ŒNðøô—<‘<ò Øð ˆ ð ús´'BÂBÂBN)r˜z$bytes | Image.SupportsArrayInterfacer‹ztuple[int, int]rŠ)r¥Úintr‹Úbytes)r‹úlist[tuple[int, int, int, int]])r­r³r4Úboolr‹r.) r r rÚ    _pulls_fdr|ÚabcÚabstractmethodr•r”r rªr°rrrr‘r‘&sS„Ø€Ióð    ×Ñò óð óGó5óðØ6ðØ?Cðà    ôrr‘có—eZdZdd„Zdd„Zy)Ú BLP1DecodercóÀ—|j\|_|_}|jtjk(r|j «y|jdk(re|jdvr4|j «}|j||«}|j|«ydt|j«›}t|«‚dt|j«›}t|«‚)Nr)r*r#zUnsupported BLP encoding zUnsupported BLP compression ) r†Ú _compressionÚ    _encodingr rÚ_decode_jpeg_streamrªr°Ú
set_as_rawrvr`)rr4r­r3r‚s     rr•zBLP1Decoder._load[s»€Ø37·9±9Ñ0ˆÔ˜4œ>¨5à × Ñ ¤§ ¡ Ò +Ø × $Ñ $Õ &à × Ñ  !Ò #؏~‰~ Ñ'Ø×,Ñ,Ó.Ø—‘ w°Ó6Ø—‘ Õ%à1´$°t·~±~Ó2FÐ1GÐHÜ$ SÓ)Ð)à0´°d·n±nÓ1EÐ0FÐGˆCÜ  Ó%Ð %rcóÚ—ddlm}tjd|j    d««\}|j    |«}|j
€J‚|j    |j d|j
j«z
«|j    |jd«}||z}|t|««}tj|j«|jdk(rU|jdj}t!|t"«sJ‚|jdj%|ddf¬«g|_|j'|j)d«j+«d    «y)
Nr)Ú JpegImageFilerLr*rÚCMYK)r†rqÚBGR)ÚJpegImagePluginrÀr0rwr r¤r¡Útellr¢rrÚ_decompression_bomb_checkrÚmoder€r†Ú
isinstanceÚtupleÚ_replacer¾ÚconvertÚtobytes)rrÀÚjpeg_header_sizeÚ jpeg_headerr3Úimager†s       rr½zBLP1Decoder._decode_jpeg_streamms€Ý2ä$Ÿm™m¨D°$·/±/À!Ó2DÓEÑР   Ø—o‘oÐ&6Ó7ˆ ؏w‰wÐ"Ð"Ð"Ø ‰˜Ÿ ™  aÑ(¨4¯7©7¯<©<«>Ñ9Ô:؏‰˜tŸ}™}¨QÑ/Ó0ˆØ˜TÑ!ˆÙœg d›mÓ,ˆÜ ×'Ñ'¨¯
©
Ô3Ø :‰:˜Ò Ø—:‘:˜a‘=×%Ñ%ˆDܘd¤EÔ*Ð *Ð*ØŸ*™* Q™-×0Ñ0°t¸A±wÀÐ6GÐ0ÓHÐIˆEŒJØ ‰˜Ÿ ™  eÓ,×4Ñ4Ó6¸Õ>rNrŠ)r r rr•r½rrrr¹r¹Zs „ó&ô$?rr¹có—eZdZdd„Zy)Ú BLP2DecodercóÜ—|j\|_|_}|_|j    «}|j
€J‚|j
j |jd«|jdk(rB|jtjk(r|j||«}n4|jtjk(rÐt«}|jtjk(rp|jj dzdzdz}t#|jj$dzdz«D]'}t'|j)|«|«D]}||z }Œ    Œ)n|jtj*k(rn|jj dzdzdz}t#|jj$dzdz«D]&}t-|j)|««D]}||z }Œ    Œ(nô|jtj.k(rn|jj dzdzdz}t#|jj$dzdz«D]&}t1|j)|««D]}||z }Œ    Œ(nidt3|j«›}t5|«‚dt3|j«›}t5|«‚d    t3|j«›}t5|«‚|j7|«y)
Nrrrr*r)rJzUnsupported alpha encoding zUnknown BLP encoding zUnknown BLP compression )r†r»r¼Ú_alpha_encodingrªr¤rxr¡rrr°rr.rrÚstateÚxsizer/ÚysizerHr rrUrr^rvr`r¾)rr4r­r3ÚlinesizeÚybr¯r‚s        rr•zBLP2Decoder._load€s™€ØIMÏÉÑFˆÔ˜4œ>¨5°$Ô2Fà×$Ñ$Ó&ˆàw‰wÐ"Ð"Ð"Ø ‰ ‰ T—]‘] 1Ñ%Ô&à × Ñ  Ó !ð~‰~¤×!6Ñ!6Ò6Ø—‘ w°Ó6’à—‘¤8§<¡<Ó/Ü “{Ø×'Ñ'¬=×+=Ñ+=Ò=Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸QÑ>HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ó@ò&˜Ü!,¨T¯_©_¸XÓ-FÈÓ!Nò&˜AØ  A™I™Dñ&ò&ð×)Ñ)¬]×-?Ñ-?Ò?Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸RÑ?HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ó@ò&˜Ü!,¨T¯_©_¸XÓ-FÓ!Gò&˜AØ  A™I™Dñ&ñ&ð×)Ñ)¬]×-?Ñ-?Ò?Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸RÑ?HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ó@ò&˜Ü!,¨T¯_©_¸XÓ-FÓ!Gò&˜AØ  A™I™Dñ&ñ&ð8¼¸T×=QÑ=QÓ8RÐ7SÐTCÜ(¨Ó-Ð-à-¬d°4·>±>Ó.BÐ-CÐDÜ$ SÓ)Ð)ð-¬T°$×2CÑ2CÓ-DÐ,EÐFˆCÜ  Ó%Ð %à ‰˜ÕrNrŠ)r r rr•rrrrÐrÐs„ô,rrÐcó —eZdZdZdd„Zdd„Zy)Ú
BLPEncoderTc    ó8—d}|j€J‚|jjdd«}tt|«dz«D]1}||dz|dzdz\}}}}|t    j
d||||«z }Œ3t|«dkr|dz }t|«dkrŒ|S)Nrrpr*rr¨is)ÚimÚ
getpaletter/r-r0Úpack)rr3r­r%rErFrGrDs        rÚ_write_palettezBLPEncoder._write_palette²s°€ØˆØw‰wÐ"Ð"Ð"Ø—'‘'×$Ñ$ V¨VÓ4ˆÜ”s˜7“| qÑ(Ó)ò    3ˆAØ   Q¡¨!¨a©%°1©Ð5‰JˆAˆq!QØ ”F—K‘K  q¨!¨Q°Ó2Ñ 2‰Dð    3ô$‹i˜'Ò!Ø KÑ ˆDô$‹i˜'Ó!àˆ rc
ó—|j«}dt|«z}tjd|gd¢­Ž}|j€J‚|jj
\}}|tjd||zgd¢­Žz }||z }t |«D]F}t |«D]6}|tjd|jj||f««z }Œ8ŒHt|«d|fS)Né”rž)rrrrrrrrrrrrrrrr¬r)rÞr-r0rÝrÛrr/Úgetpixel)    rÚbufsizeÚ palette_datar‡r3ÚwÚhÚyÚxs             rÚencodezBLPEncoder.encode½sâ€Ø×*Ñ*Ó,ˆ à ¤3 |Ó#4Ñ4ˆÜ{‰{˜6 6Ð8¨YÒ8ˆàw‰wÐ"Ð"Ð"؏w‰w|‰|‰ˆˆ1Ø ”— ‘ ˜F A¨¡EÐ8¨YÒ8Ñ8ˆà  шäq“ò    DˆAܘ1“Xò DØœŸ ™  D¨$¯'©'×*:Ñ*:¸A¸q¸6Ó*BÓCÑC‘ñ Dð    Dô4‹y˜!˜TÐ!Ð!rN)r‹r²)râr±r‹ztuple[int, int, bytes])r r rÚ
_pushes_fdrÞrèrrrrÙrÙ¯s„Ø€Jó    ô"rrÙc
ób—|jdk7r d}t|«‚|jjd«dk(rdnd}|j    |«|j
€J‚|j    t jdd««|j
jd    k(rdnd
}|dk(r&|j    t jd |««n¢|j    t jd tj««|j    t jd |««|j    t jd d
««|j    t jd d
««|j    t jd g|j¢­Ž«|dk(rJ|j    t jdd««|j    t jdd
««tj||tjdd|jzd
|j«g«y)NÚPzUnsupported BLP image modeÚ blp_versionÚBLP1rbrcrkrrprz<Lrlrmr#rirr)rÆÚ
ValueErrorÚ encoderinfoÚgetÚwriter­r0rÝrrrr    Ú_saver~)rÛrsÚfilenamer‚ruÚ alpha_depths      rròròÐs…€Ø    ‡ww#‚~Ø*ˆÜ˜‹oÐà—~‘~×)Ñ)¨-Ó8¸FÒB‰GÈ€E؇HHˆU„Oà :‰:Ð !Ð!Ð !؇HHŒV[‰[˜˜qÓ !Ô"à—z‘z—‘¨&Ò0‘!°a€KØ ÒØ
‰”—‘˜T ;Ó/Õ0à
‰”—‘˜T¤8×#8Ñ#8Ó9Ô:Ø
‰”—‘˜T ;Ó/Ô0Ø
‰”—‘˜T 1Ó%Ô&Ø
‰”—‘˜T 1Ó%Ô&؇HHŒV[‰[˜Ð ) §¡Ò )Ô*Ø ÒØ
‰”—‘˜T 1Ó%Ô&Ø
‰”—‘˜T 1Ó%Ô&ä ‡OOB˜œYŸ_™_¨U°F¸R¿W¹WÑ4DÀaÈÏÉÓQÐRÕSrz.blpríÚBLP2ri)r%r±r‹ztuple[int, int, int])F)r3r²r4r´r‹ú1tuple[bytearray, bytearray, bytearray, bytearray])r3r²r‹rö)rer²r‹r´)rÛz Image.Imagersz    IO[bytes]róz str | bytesr‹rŒ)(rÚ
__future__rr¶ryr0ÚenumrÚiorÚtypingrÚrr    r rrr&rHrUr^ÚNotImplementedErrorr`rfrhÚABCÚ    PyDecoderr‘r¹rÐÚ    PyEncoderrÙròÚ register_openrŽÚregister_extensionÚregister_decoderÚ register_saveÚregister_encoderrrrú<module>rssðñõ>#ã
Û    Û ÝÝÝçô ˆWô ôˆwôô  Gô ó Lð
 %ð6Ø
ð6Øð6à6ó6ór2ójCôL    Ð(ô    ó1ô'Q9×&Ñ&ô'QôT1c—g‘g˜y×2Ñ2ô1ôh"?/ô"?ôJ-/ô-ô`"×$Ñ$ô"óBTð6€×ѐL×'Ñ'¨°wÔ?Ø€×ј×,Ñ,¨fÔ5Ø€×ѐv˜{Ô+Ø€×ѐv˜{Ô+à€×ѐL×'Ñ'¨Ô/Ø€×ѐu˜jÕ)r