Files
Trancribe/venv/lib/python3.12/site-packages/websockets/__pycache__/frames.cpython-312.pyc

149 lines
16 KiB
Plaintext
Raw Normal View History

<EFBFBD>
$n!jY2<00><01><><00>UddlmZddlZddlZddlZddlZddlZddlZddlm Z m
Z
ddl m Z ddl mZmZddl mZ ddlmZgd <09>ZGd
<EFBFBD>d ej,<00>Zej0Zej4Zej8Zej<Zej@Z!ejDZ#eeefZ$ee!e#fZ%Gd <0C>d ej,<00>Z&e&jNde&jPde&jRde&jTde&jVde&jXde&jZde&j\de&j^de&j`de&jbde&jdde&jfde&jhde&jjdiZ6de7d<e&jNe&jPe&jRe&jTe&jZe&j\e&j^e&j`e&jbe&jde&jfe&jhh Z8e&jNe&jPe&jVhZ9ejtGd<1F>d <20><00>Z;ejtGd!<21>d"<22><00>Z<dd#l=m>Z>y#e$r
ddlmZY<00><02>+wxYw)$<24>)<01> annotationsN)<02> Generator<6F>Sequence)<01>Callable<6C>)<02> PayloadTooBig<69> ProtocolError)<01> BytesLike)<01>
apply_mask) <0C>Opcode<64>OP_CONT<4E>OP_TEXT<58> OP_BINARY<52>OP_CLOSE<53>OP_PING<4E>OP_PONG<4E> DATA_OPCODES<45> CTRL_OPCODES<45> CloseCode<64>Frame<6D>Closec<01>(<00>eZdZdZd\ZZZd\ZZZ y)r z#Opcode values for WebSocket frames.)rr<00>)<03><00> <00>
N)
<EFBFBD>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>CONT<4E>TEXT<58>BINARY<52>CLOSE<53>PING<4E>PONG<4E><00><00>S/home/jean/linux-transcriber/venv/lib/python3.12/site-packages/websockets/frames.pyr r &s<00><00>-<2D>)<29><16>D<EFBFBD>$<24><06>(<28><15>E<EFBFBD>4<EFBFBD>r(r c<01>L<00>eZdZdZdZdZdZdZdZdZ dZ
d Z d
Z d Z d Zd ZdZdZdZy)rz-Close code values for WebSocket close frames.i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>i<>N)rrrr <00>NORMAL_CLOSURE<52>
GOING_AWAY<EFBFBD>PROTOCOL_ERROR<4F>UNSUPPORTED_DATA<54>NO_STATUS_RCVD<56>ABNORMAL_CLOSURE<52> INVALID_DATA<54>POLICY_VIOLATION<4F>MESSAGE_TOO_BIG<49>MANDATORY_EXTENSION<4F>INTERNAL_ERROR<4F>SERVICE_RESTART<52>TRY_AGAIN_LATER<45> BAD_GATEWAY<41> TLS_HANDSHAKEr'r(r)rr8sT<00><00>7<><19>N<EFBFBD><15>J<EFBFBD><19>N<EFBFBD><1B><14><19>N<EFBFBD><1B><14><17>L<EFBFBD><1B><14><1A>O<EFBFBD><1E><17><19>N<EFBFBD><1A>O<EFBFBD><1A>O<EFBFBD><16>K<EFBFBD><18>Mr(r<00>OKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterz bad gatewayz TLS handshake failure [internal]zdict[int, str]<5D>CLOSE_CODE_EXPLANATIONSc<01><><00>eZdZUdZded<ded<dZded<d Zded
<d Zded <d Zded <e e
jjd d<0E><00>Z dd<0F>Zeddd<11> dd<12><06>Zdd<13> dd<14>Zdd<15>Zy)raN
WebSocket frame.
Attributes:
opcode: Opcode.
data: Payload data.
fin: FIN bit.
rsv1: RSV1 bit.
rsv2: RSV2 bit.
rsv3: RSV3 bit.
Only these fields are needed. The MASK bit, payload length and masking-key
are handled on the fly when parsing and serializing frames.
r <00>opcoder
<00>dataT<61>bool<6F>finF<6E>rsv1<76>rsv2<76>rsv3<76>WEBSOCKETS_MAX_LOG_SIZE<5A>75c<01> <00>d}t|j<00><00>dt|j<00>dk(rdnd<05><00>}|jrdnd}|jtur-t t |j<00>j<00><00>}n<>|jturs|j}t|<05>|jdzkDr3|jdzdz
dz}dj|dd |zd
|| dg<03>}d jd <0C>|D<00><00>}ny|jtur)ttj|j<00><00>}n>|jr0 t t |j<00>j<00><00>}d }nd}t|<04>|jkDr$|jdzdz
}|dd |zdz|| dz}djt#d|||g<03><00>}|jj$<00>d |<04>d|<07>d<14>S#tt f$rw|j}t|<05>|jdzkDr3|jdzdz
dz}dj|dd |zd
|| dg<03>}d jd<0E>|D<00><00>}d}Y<00><>wxYw)zE
Return a human-readable representation of a frame.
Nz byter<00><00>s<> continued<65>r(rs<00> c3<01>$K<00>|]}|d<00><04><01><00>
y<01>w<01><02>02xNr'<00><02>.0<EFBFBD>bytes r)<00> <genexpr>z Frame.__str__.<locals>.<genexpr><3E>s<00><00><><00>=<3D>d<EFBFBD>t<EFBFBD>C<EFBFBD>j<EFBFBD>M<EFBFBD>=<3D><><00><01>textc3<01>$K<00>|]}|d<00><04><01><00>
y<01>wrMr'rOs r)rRz Frame.__str__.<locals>.<genexpr><3E>s<00><00><><00>A<>$<24>4<EFBFBD><03>*<2A> <0A>A<>rS<00>binaryz''z...z, z [<5B>])<13>lenr>r@r=r<00>repr<70>bytes<65>decoder<00> MAX_LOG_SIZE<5A>joinr<00>strr<00>parse<73>UnicodeDecodeError<6F>AttributeError<6F>filter<65>name)<08>self<6C>coding<6E>length<74> non_finalr>rV<00>cut<75>metadatas r)<00>__str__z Frame.__str__<5F>s_<00><00>
<16><06><17><04> <09> <09>N<EFBFBD>#<23>5<EFBFBD>s<EFBFBD>4<EFBFBD>9<EFBFBD>9<EFBFBD>~<7E><11>/B<><12><03>(L<>M<><06><1E>(<28>(<28>B<EFBFBD> <0B> <09> <0F>;<3B>;<3B>'<27> !<21><18><05>d<EFBFBD>i<EFBFBD>i<EFBFBD>(<28>/<2F>/<2F>1<>2<>D<EFBFBD> <11>[<5B>[<5B>I<EFBFBD> %<25><1A>Y<EFBFBD>Y<EFBFBD>F<EFBFBD><12>6<EFBFBD>{<7B>T<EFBFBD>.<2E>.<2E>!<21>3<>3<><1B>(<28>(<28>A<EFBFBD>-<2D><01>1<>a<EFBFBD>7<><03><1C><18><18>6<EFBFBD>)<29>A<EFBFBD><03>G<EFBFBD>#4<>k<EFBFBD>6<EFBFBD>3<EFBFBD>$<24>%<25>=<3D>"Q<>R<><06><16>8<EFBFBD>8<EFBFBD>=<3D>f<EFBFBD>=<3D>=<3D>D<EFBFBD> <11>[<5B>[<5B>H<EFBFBD> $<24><16>u<EFBFBD>{<7B>{<7B>4<EFBFBD>9<EFBFBD>9<EFBFBD>-<2D>.<2E>D<EFBFBD> <11>Y<EFBFBD>Y<EFBFBD> "<22><1B>E<EFBFBD>$<24>)<29>)<29>,<2C>3<>3<>5<>6<><04><1F><06><18>D<EFBFBD> <0E>t<EFBFBD>9<EFBFBD>t<EFBFBD>(<28>(<28> (<28><16>#<23>#<23>q<EFBFBD>(<28>1<EFBFBD>,<2C>C<EFBFBD><17> <09>!<21>c<EFBFBD>'<27>?<3F>U<EFBFBD>*<2A>T<EFBFBD>3<EFBFBD>$<24>%<25>[<5B>8<>D<EFBFBD><17>9<EFBFBD>9<EFBFBD>V<EFBFBD>D<EFBFBD>6<EFBFBD>6<EFBFBD>9<EFBFBD>*E<>F<>G<><08><16>+<2B>+<2B>"<22>"<22>#<23>1<EFBFBD>T<EFBFBD>F<EFBFBD>"<22>X<EFBFBD>J<EFBFBD>a<EFBFBD>8<>8<><38>!'<27><0E>7<> "<22><1D><19><19><06><16>v<EFBFBD>;<3B><14>!2<>!2<>a<EFBFBD>!7<>7<><1F>,<2C>,<2C><01>1<>A<EFBFBD>5<>!<21>;<3B>C<EFBFBD> <20>X<EFBFBD>X<EFBFBD>v<EFBFBD>i<EFBFBD><01>C<EFBFBD><07>'8<>+<2B>v<EFBFBD>s<EFBFBD>d<EFBFBD>e<EFBFBD>}<7D>&U<>V<>F<EFBFBD><1A>x<EFBFBD>x<EFBFBD>A<>&<26>A<>A<><04>!<21><06>  "<22>s<00>.G=<00>=BJ<03>JN)<02>max_size<7A>
extensionsc#<01>K<00>|d<01>Ed{<00><02><02>}tjd|<05>\}}|dzrdnd}|dzrdnd} |dzrdnd}
|d zrdnd} t|d
z<00>} |dzrdnd|k7r t d <0C><00>|d z}|dk(r)|d<01>Ed{<00><02><02>}tjd|<05>\}n-|d k(r(|d<10>Ed{<00><02><02>}tjd|<05>\}|<03>||kDr t ||<03><00>|r|d<12>Ed{<00><02><02>}||<0E>Ed{<00><02><02>}|r t |<0F>}|| ||| |
| <0B>}|<04>g}t|<04>D]}|j||<03><13>}<10>|j<00>|S7<00><01>Q#t$r} t d <0B>| <0A>d} ~ wwxYw7<00><>7<00><>7<00><>7<00>~<7E>w)a<>
Parse a WebSocket frame.
This is a generator-based coroutine.
Args:
read_exact: Generator-based coroutine that reads the requested
bytes or raises an exception if there isn't enough data.
mask: Whether the frame should be masked i.e. whether the read
happens on the server side.
max_size: Maximum payload size in bytes.
extensions: List of extensions, applied in reverse order.
Raises:
EOFError: If the connection is closed without a full WebSocket frame.
PayloadTooBig: If the frame's payload size exceeds ``max_size``.
ProtocolError: If the frame contains incorrect values.
rN<>!BB<42><42>TF<54>@<00> <00><00>zinvalid opcodezincorrect masking<6E><00>~<00>!Hrz!Q<>)rk)
<EFBFBD>struct<63>unpackr <00>
ValueErrorr rr <00>reversedr[<00>check)<12>cls<6C>
read_exact<EFBFBD>maskrkrlr><00>head1<64>head2r@rArBrCr=<00>excrf<00>
mask_bytes<EFBFBD>frame<6D> extensions r)r_z Frame.parse<73>s<><00><00><><00>:%<25>Q<EFBFBD>-<2D>'<27><04><1D>}<7D>}<7D>U<EFBFBD>D<EFBFBD>1<> <0C><05>u<EFBFBD><1C>j<EFBFBD>(<28>d<EFBFBD>e<EFBFBD><03><1C>z<EFBFBD>)<29>t<EFBFBD>u<EFBFBD><04><1C>z<EFBFBD>)<29>t<EFBFBD>u<EFBFBD><04><1C>z<EFBFBD>)<29>t<EFBFBD>u<EFBFBD><04> ;<3B><1B>E<EFBFBD>J<EFBFBD>.<2E>/<2F>F<EFBFBD><1A>J<EFBFBD>&<26>D<EFBFBD>E<EFBFBD>d<EFBFBD> :<3A><1F> 3<>4<> 4<><16><1A>#<23><06> <11>S<EFBFBD>=<3D>(<28><11>m<EFBFBD>+<2B>D<EFBFBD><1E> <0A> <0A>d<EFBFBD>D<EFBFBD>1<>I<EFBFBD>V<EFBFBD> <13>s<EFBFBD>]<5D>(<28><11>m<EFBFBD>+<2B>D<EFBFBD><1E> <0A> <0A>d<EFBFBD>D<EFBFBD>1<>I<EFBFBD>V<EFBFBD> <13> <1F>F<EFBFBD>X<EFBFBD>$5<><1F><06><08>1<> 1<> <0F>$.<2E>q<EFBFBD>M<EFBFBD>1<>J<EFBFBD>%<25>V<EFBFBD>,<2C>,<2C><04> <0F><1D>d<EFBFBD>J<EFBFBD>/<2F>D<EFBFBD><13>F<EFBFBD>D<EFBFBD>#<23>t<EFBFBD>T<EFBFBD>4<EFBFBD>8<><05> <15> <1D><1B>J<EFBFBD>!<21>*<2A>-<2D> ?<3F>I<EFBFBD><1D>$<24>$<24>U<EFBFBD>X<EFBFBD>$<24>><3E>E<EFBFBD> ?<3F> <0E> <0B> <0B> <0A><14> <0C>W(<28><><1A> ;<3B><1F> 0<>1<>s<EFBFBD> :<3A><> ;<3B><>,<2C><>,<2C><>
2<><32>-<2D>sw<00> F<01>E<04>AF<01>E"<00>,F<01> E?<04> -F<01>9F<04>:<F<01>6F<04>7F<01>F<04>AF<01>" E<<03>+ E7<03>7E<<03><F<01>F<01>F<01>F<01>rlc<01>F<00>|j<00>|<02>g}|D]}|j|<00>}<00>tj<00>}|jrdnd|j
rdndz|j rdndz|jrdndz|jz}|rdnd}t|j<00>}|dkr*|jtjd|||z<00><00>nZ|dkr+|jtjd ||dz|<07><00>n*|jtjd
||d z|<07><00>|r&tjd <0C>}|j|<08>|rt!|j<08>} n |j} |j| <09>|j#<00>S) aH
Serialize a WebSocket frame.
Args:
mask: Whether the frame should be masked i.e. whether the write
happens on the client side.
extensions: List of extensions, applied in order.
Raises:
ProtocolError: If the frame contains incorrect values.
rorrprqrrrurniz!BBHz!BBQrtrw)r|<00>encode<64>io<69>BytesIOr@rArBrCr=rXr><00>writerx<00>pack<63>secrets<74> token_bytesr <00>getvalue)
rdrrlr<><00>outputr<74>r<>rfr<>r>s
r)<00> serializezFrame.serializesm<00><00>$ <0A>
<EFBFBD>
<EFBFBD> <0C> <15> <1D><1B>J<EFBFBD>#<23> *<2A>I<EFBFBD><1C>#<23>#<23>D<EFBFBD>)<29>D<EFBFBD> *<2A><14><1A><1A><1C><06> <20>8<EFBFBD>8<EFBFBD>Z<EFBFBD><11>!<21>Y<EFBFBD>Y<EFBFBD>z<EFBFBD>A<EFBFBD> /<2F>!<21>Y<EFBFBD>Y<EFBFBD>z<EFBFBD>A<EFBFBD> /<2F>"<22>Y<EFBFBD>Y<EFBFBD>z<EFBFBD>A<EFBFBD> /<2F><13>k<EFBFBD>k<EFBFBD>  <1A> <0E>#<23>
<EFBFBD><01><05><14>T<EFBFBD>Y<EFBFBD>Y<EFBFBD><1E><06> <11>C<EFBFBD><<3C> <12>L<EFBFBD>L<EFBFBD><16><1B><1B>U<EFBFBD>E<EFBFBD>5<EFBFBD>6<EFBFBD>><3E>B<> C<> <13>e<EFBFBD>^<5E> <12>L<EFBFBD>L<EFBFBD><16><1B><1B>V<EFBFBD>U<EFBFBD>E<EFBFBD>C<EFBFBD>K<EFBFBD><16>H<> I<> <12>L<EFBFBD>L<EFBFBD><16><1B><1B>V<EFBFBD>U<EFBFBD>E<EFBFBD>C<EFBFBD>K<EFBFBD><16>H<> I<> <0F> <20>,<2C>,<2C>Q<EFBFBD>/<2F>J<EFBFBD> <12>L<EFBFBD>L<EFBFBD><1A> $<24> <10><1D>d<EFBFBD>i<EFBFBD>i<EFBFBD><1A>4<>D<EFBFBD><17>9<EFBFBD>9<EFBFBD>D<EFBFBD><0E> <0C> <0C>T<EFBFBD><1A><15><EFBFBD><EFBFBD> <20> r(c<01><><00>|js|js |jr td<01><00>|jt
vr;t |j<00>dkDr td<03><00>|js td<04><00>yy)z<>
Check that reserved bits and opcode have acceptable values.
Raises:
ProtocolError: If a reserved bit or the opcode is invalid.
zreserved bits must be 0<>}zcontrol frame too longzfragmented control frameN) rArBrCr r=rrXr>r@<00>rds r)r|z Frame.checkNsh<00><00> <10>9<EFBFBD>9<EFBFBD><04> <09> <09>T<EFBFBD>Y<EFBFBD>Y<EFBFBD><1F> 9<>:<3A> :<3A> <0F>;<3B>;<3B>,<2C> &<26><12>4<EFBFBD>9<EFBFBD>9<EFBFBD>~<7E><03>#<23>#<23>$<<3C>=<3D>=<3D><17>8<EFBFBD>8<EFBFBD>#<23>$><3E>?<3F>?<3F><1C> 'r(<00><02>returnr^)
r~z9Callable[[int], Generator[None, None, bytes | bytearray]]rr?rkz
int | Nonerl<00>%Sequence[extensions.Extension] | Noner<65>zGenerator[None, None, Frame])rr?rlr<>r<>rZ<00>r<><00>None)rrrr <00>__annotations__r@rArBrC<00>int<6E>os<6F>environ<6F>getr\rj<00> classmethodr_r<>r|r'r(r)rrzs<><00><00><08> <13>N<EFBFBD>
<13>O<EFBFBD><14>C<EFBFBD><14><14><16>D<EFBFBD>$<24><16><16>D<EFBFBD>$<24><16><16>D<EFBFBD>$<24><16><17>r<EFBFBD>z<EFBFBD>z<EFBFBD>~<7E>~<7E>&?<3F><14>F<>G<>L<EFBFBD>09<>d<11> $<24><@<40> G<15>M<>G<15><13> G<15>
<1D> G<15> :<3A> G<15>
&<26>G<15><11>G<15>Z=A<01> :!<21><13>:!<21>:<3A> :!<21>
<0F> :!<21>x@r(rc<01>P<00>eZdZUdZded<ded<d d<06>Zed d<07><04>Zd d<08>Zdd <09>Z y
)rz
Code and reason for WebSocket close frames.
Attributes:
code: Close code.
reason: Close reason.
zCloseCode | int<6E>coder^<00>reasonc<01><00>d|jcxkrdkrnnd}n;d|jcxkrdkrnnd}n tj|jd<06>}|j<00>d|<01>d<08>}|jr|<02>d |j<00><00>}|S)
zU
Return a human-readable representation of a close code and reason.
<20><> i<><00>
registered<EFBFBD><EFBFBD>z private use<73>unknownz (<28>)rK)r<>r;r<>r<>)rd<00> explanation<6F>results r)rjz Close.__str__ns|<00><00>
<10>4<EFBFBD>9<EFBFBD>9<EFBFBD> #<23>t<EFBFBD> #<23>&<26>K<EFBFBD> <11>T<EFBFBD>Y<EFBFBD>Y<EFBFBD> %<25><14> %<25>'<27>K<EFBFBD>1<>5<>5<>d<EFBFBD>i<EFBFBD>i<EFBFBD><19>K<>K<EFBFBD><18>I<EFBFBD>I<EFBFBD>;<3B>b<EFBFBD><1B> <0A>Q<EFBFBD>/<2F><06> <0F>;<3B>;<3B><1E>x<EFBFBD>q<EFBFBD><14><1B><1B> <0A>.<2E>F<EFBFBD><15> r(c<01>F<00>t|t<00>r td<01><00>t|<01>dk\rIt j
d|dd<00>\}|ddj <00>}|||<03>}|j<00>|St|<01>dk(r|tjd<06>Std<07><00>)z<>
Parse the payload of a close frame.
Args:
data: Payload of the close frame.
Raises:
ProtocolError: If data is ill-formed.
UnicodeDecodeError: If the reason isn't valid UTF-8.
z.only compressed outgoing frames use memoryviewrrvNrrGzclose frame too short) <0B>
isinstance<EFBFBD>
memoryview<EFBFBD>AssertionErrorrXrxryr[r|rr/r )r}r>r<>r<><00>closes r)r_z Close.parse<73>s<><00><00> <16>d<EFBFBD>J<EFBFBD> '<27> <20>!Q<>R<> R<> <0E>t<EFBFBD>9<EFBFBD><01>><3E><1C>m<EFBFBD>m<EFBFBD>D<EFBFBD>$<24>r<EFBFBD><01>(<28>3<>G<EFBFBD>T<EFBFBD><19>!<21>"<22>X<EFBFBD>_<EFBFBD>_<EFBFBD>&<26>F<EFBFBD><17><04>f<EFBFBD>%<25>E<EFBFBD> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><18>L<EFBFBD> <10><14>Y<EFBFBD>!<21>^<5E><16>y<EFBFBD>/<2F>/<2F><12>4<> 4<><1F> 7<>8<> 8r(c<01><><00>|j<00>tjd|j<00>|jj <00>zS)z:
Serialize the payload of a close frame.
rv)r|rxr<>r<>r<>r<>r<>s r)r<>zClose.serialize<7A>s4<00><00>
<0A>
<EFBFBD>
<EFBFBD> <0C><15>{<7B>{<7B>4<EFBFBD><14><19><19>+<2B>d<EFBFBD>k<EFBFBD>k<EFBFBD>.@<40>.@<40>.B<>B<>Br(c<01><><00>|jtvs-d|jcxkrdkstd<03><00>td<03><00>yy)z<>
Check that the close code has a valid value for a close frame.
Raises:
ProtocolError: If the close code is invalid.
r<>r<>zinvalid status codeN)r<><00>EXTERNAL_CLOSE_CODESr r<>s r)r|z Close.check<63>sH<00><00><15> <09> <09>1<>1<>T<EFBFBD>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>5M<35><14>5M<35><1F> 5<>6<> 6<>6N<01><1F> 5<>6<> 6<>6N<01>1r(Nr<4E>)r>r
r<>r)r<>rZr<>)
rrrr r<>rjr<>r_r<>r|r'r(r)rr`s8<00><00><08> <1A><19> <0F>K<EFBFBD><16>$<11>9<><11>9<>2C<01> 7r(rr<>)?<3F>
__future__r<00> dataclasses<65>enumr<6D>r<>r<>rx<00>collections.abcrr<00>typingr<00>
exceptionsrr r
<00>speedupsr <00> ImportError<6F>utils<6C>__all__<5F>IntEnumr r!r r"rr#rr$rr%rr&rrrrr+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r;r<>r<><00>OK_CLOSE_CODES<45> dataclassrrrGrlr'r(r)<00><module>r<>sg<00><01>"<22><12> <0B> <09> <09><0E> <0A>/<2F><1B>4<><1D>"<22>$<24>
<02><07> )<29>T<EFBFBD>\<5C>\<5C>)<29> <11>+<2B>+<2B><07>
<10>+<2B>+<2B><07> <12>M<EFBFBD>M<EFBFBD> <09> <11><<3C><<3C><08>
<10>+<2B>+<2B><07>
<10>+<2B>+<2B><07><16><07><19>*<2A> <0C><17><17>'<27>)<29> <0C><19><04> <0C> <0C><19>.<0E><1C><1C>d<EFBFBD> <0A><18><18>,<2C> <0A><1C><1C>.<2E> <0A><1E><1E> 2<> <0A><1C><1C>=<3D> <0A><1E><1E> =<3D> <0A><1A><1A>8<> <0A><1E><1E> 2<> <0A><1D><1D>0<> <0A>!<21>!<21>#8<> <0A><1C><1C>.<2E> <0A><1D><1D>0<> <0A><1D><1D>0<> <0A><19><19>=<3D> <0A><1B><1B>?<3F>+<02><17><1E><02>,<0E><1C><1C> <0A><18><18> <0A><1C><1C> <0A><1E><1E> <0A><1A><1A> <0A><1E><1E> <0A><1D><1D> <0A>!<21>!<21> <0A><1C><1C> <0A><1D><1D> <0A><1D><1D> <0A><19><19> <02><14>"<0E><1C><1C> <0A><18><18> <0A><1C><1C><02><0E> <0A><16><16>b@<01>b@<01><17>b@<01>J <0A><16><16>J7<>J7<><17>J7<>\<19><>{ <13>"<22>!<21>!<21>"<22>s<00>I <00> I/<03>.I/