§
    ·Łh¤  ć                   óā   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZmZmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZ  G d d¦  «        Z ed	¦  «        Z G d
 dee         ¦  «        Z G d dee         ee         ¦  «        Z  ede!e"¦  «        Z# G d de e#         ¦  «        Z$ G d de$e!         ¦  «        Z% G d de$e"         ¦  «        Z& G d de&¦  «        Z' G d de%¦  «        Z( G d de%¦  «        Z) G d de%¦  «        Z* G d de%¦  «        Z+ G d d e%¦  «        Z, G d! d"e%¦  «        Z- G d# d$e%¦  «        Z. G d% d&e%¦  «        Z/ G d' d(e%¦  «        Z0 G d) d*e%¦  «        Z1 G d+ d,e%¦  «        Z2 G d- d.e%¦  «        Z3 G d/ d0e+¦  «        Z4 G d1 d2e+¦  «        Z5 G d3 d4e+¦  «        Z6 G d5 d6e+¦  «        Z7 G d7 d8e+¦  «        Z8 G d9 d:e+¦  «        Z9 G d; d<e+¦  «        Z: G d= d>e+¦  «        Z; G d? d@e+¦  «        Z< G dA dBe e         ¦  «        Z= edCe>e?¦  «        Z@ G dD dEe e@         ee@         ¦  «        ZA G dF dGeAe?         ¦  «        ZB G dH dIeAe>         ¦  «        ZC G dJ dKeC¦  «        ZD G dL dMeAe?         ¦  «        ZE G dN dOeAe?         ¦  «        ZF G dP dQeAe?         ¦  «        ZG G dR dSeAe?         ¦  «        ZH G dT dUe e?         ¦  «        ZI G dV dWe=¦  «        ZJ G dX dYeJ¦  «        ZK G dZ d[eK¦  «        ZL G d\ d]eK¦  «        ZM G d^ d_eK¦  «        ZN G d` daeK¦  «        ZO G db dceK¦  «        ZP G dd deeK¦  «        ZQ G df dgeK¦  «        ZR G dh dieK¦  «        ZS G dj dkeJ¦  «        ZT G dl dme ee                  ¦  «        ZU G dn doe ejV                 ¦  «        ZW G dp dqe$e         ee         ¦  «        ZX G dr dseXe"         ¦  «        ZY G dt dueXe!         ¦  «        ZZ G dv dweXe?         ¦  «        Z[ G dx dyeXe?         ¦  «        Z\ G dz d{ee         ¦  «        Z] G d| d}ee!         ¦  «        Z^ G d~ dee>         ¦  «        Z_ G d de_¦  «        Z`dS )z"
Fields that hold random numbers.
é    N)ŚNet)Śbytes_encodeŚchbŚ	plain_str)Ścorrupt_bitsŚcorrupt_bytes)
ŚListŚTypeVarŚGenericŚSetŚUnionŚAnyŚDictŚOptionalŚTupleŚcastc                   ó*    e Zd ZdZddZd Zd ZeZdS )	ŚRandomEnumerationaF  iterate through a sequence in random order.
       When all the values have been drawn, if forever=1, the drawing is done again.  # noqa: E501
       If renewkeys=0, the draw will be in the same order, guaranteeing that the same  # noqa: E501
       number will be drawn in not less than the number of integers of the sequenceNé   r   c                 ó   || _         || _        || _        t          j        |¦  «        | _        d| _        ||z
  dz   | _        d}d|z  | j        k     r|dz  }d|z  | j        k     °|| _        t          d|dz   dz  ¦  «        | _
        d| j
        z  dz
  | _        t          | j        d¦  «        | _        d| _        d| _        d S )Né   r   r   é   é   )ŚforeverŚ	renewkeysŚinfŚrandomŚRandomŚrndŚ	sbox_sizeŚtopŚnŚminŚfsŚfsmaskŚmaxŚroundsŚturnsŚi)Śselfr   ŚsupŚseedr   r   r"   s          śR/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/volatile.pyŚ__init__zRandomEnumeration.__init__1   sÄ    ąŲ"ŲŻ= Ń&Ō&Ųą9q=ąŲAvŅ!Š!ŲFAš AvŅ!Š!ąåa!a% AŃ&Ō&Ųj 1nŻ$& !nnŲ
Ųó    c                 ó    | S ©N© ©r*   s    r-   Ś__iter__zRandomEnumeration.__iter__F   s    ąr/   c                 ó    	  j         dk    s j        dk    rW j        rP j                             dd j        z  dz
  ¦  «         _         fdt           j        ¦  «        D ¦   «          _	         xj         dz  c_          j        d j        z  k     r j         j        z  } xj        dz  c_        t           j
        ¦  «        D ]C}| j        z  }| j        z  }| j	        | j        z           z  }|| j         j        z
  z  z  }D| j        k     r
 j        |z   S  j        d j        z  k     °d _         j        st           F)NTr   r   r   c                 óP    g | ]"}j                              d j        ¦  «        #S ©r   )r   Śrandintr%   ©Ś.0Ś_r*   s     r-   ś
<listcomp>z*RandomEnumeration.next.<locals>.<listcomp>O   s=   ų š =š =š =Ų!"š "X×-Ņ-Øa°“Ń=Ō=š =š =š =r/   )r(   r)   r   r   r8   r"   Ścnt_keyŚranger    Śsboxr'   r%   r$   r!   r   r   ŚStopIteration)r*   Śctr;   Ślsbs   `   r-   ŚnextzRandomEnumeration.nextJ   se  ų š	$ŲzQ 4¤6ØQ¢; ;°4“> ;Ų#x×/Ņ/°°1°d“f±9øq±=ŃAŌAš=š =š =š =Ż&+ØD¬NŃ&;Ō&;š=ń =ō =	ąJJ!OJJŲ&1df9Ņ$Š$ŲVdlŃ*Ų!Żt{Ń+Ō+š 4š 4AŲt{Ń*CŲ47NBŲ49 RØ$¬.Ń%8Ō9Ń9CŲ# $¤&Ø4¬7Ń"2Ń3Ń3BBą==Ų8 b=Š(š &1df9Ņ$Š$š DFŲ<š $Ż#Š#ń'	$r/   )Nr   r   )Ś__name__Ś
__module__Ś__qualname__Ś__doc__r.   r4   rC   Ś__next__r2   r/   r-   r   r   +   sS        šWš Wš
š š š š*š š š$š $š $š, HHHr/   r   Ś_Tc                   óV    e Zd Zd Zd ZddZd Zd ZdZd Z	d	 Z
d
 Zd Zd Zd ZdS )ŚVolatileValuec                 ó     d| j         j        z  S )Nś<%s>)Ś	__class__rD   r3   s    r-   Ś__repr__zVolatileValue.__repr__g   s    ąŌ/Ń/Š/r/   c                 ó    dS ©NŚ r2   r3   s    r-   Ś_command_argszVolatileValue._command_argsk   ó    ąrr/   Fc                 ó    |r!| j         j        |                      ¦   «         dS | j         j        d|                      ¦   «         dS )N)ŚtypeŚvalueś(ś))rN   rD   rS   )r*   Śjsons     r-   ŚcommandzVolatileValue.commando   sR    ąš 	NŲ NŌ3ød×>PŅ>PŃ>RŌ>RŠSŠSŠSą#~Ō6Š6Š6ø×8JŅ8JŃ8LŌ8LŠ8LŠ8LŠMŠMr/   c                 óä    |                       ¦   «         }t          |t          ¦  «        r|                      ¦   «         n|}t          |t          |¦  «        ¦  «        sdS t	          ||k    ¦  «        S )NF)Ś_fixŚ
isinstancerK   rV   Śbool)r*   ŚotherŚxŚys       r-   Ś__eq__zVolatileValue.__eq__v   s\    ąIIKKŻ& u­mŃ<Ō<ŠGEJJLLLĄ%Ż!T !WWŃ%Ō%š 	Ų5ŻAF||Šr/   c                 ó    | |k     S r1   r2   ©r*   r`   s     r-   Ś__ne__zVolatileValue.__ne__~   s    š 5=Š Š r/   Nc                 ól    |dv rt          |¦  «        t          |                      ¦   «         |¦  «        S )N)Ś__setstate__Ś__getstate__)ŚAttributeErrorŚgetattrr]   )r*   Śattrs     r-   Ś__getattr__zVolatileValue.__getattr__   s4    ąŠ3Š3Š3Ż  Ń&Ō&Š&Żtyy{{ DŃ)Ō)Š)r/   c                 óD    t          |                      ¦   «         ¦  «        S r1   ©Śstrr]   r3   s    r-   Ś__str__zVolatileValue.__str__   ó    å499;;ŃŌŠr/   c                 óD    t          |                      ¦   «         ¦  «        S r1   ©r   r]   r3   s    r-   Ś	__bytes__zVolatileValue.__bytes__   ó    åDIIKKŃ(Ō(Š(r/   c                 óD    t          |                      ¦   «         ¦  «        S r1   )Ślenr]   r3   s    r-   Ś__len__zVolatileValue.__len__   s    õ 499;;ŃŌŠr/   c                 ó*    t          j         | ¦  «        S r1   )Ścopyr3   s    r-   r{   zVolatileValue.copy   s    åyŠr/   c                 ó,    t          t          d ¦  «        S r1   )r   rI   r3   s    r-   r]   zVolatileValue._fix   s    åB~~Šr/   )F)rD   rE   rF   rO   rS   r[   rc   rf   Ś__hash__rm   rq   ru   ry   r{   r]   r2   r/   r-   rK   rK   f   sÉ        š0š 0š 0šš š šNš Nš Nš Nšš š š!š !š !š
 Hš*š *š *š š  š  š)š )š )š š  š  š
š š šš š š š r/   rK   c                   ó    e Zd ZdS )Ś	RandFieldN©rD   rE   rF   r2   r/   r-   r   r   ”   ó        ŲDr/   r   Ś_Ic                   ón    e Zd ZdZd Zd Zd ZeZd Zd Z	d Z
d Zd	 Zd
 Zd ZeZd Zd Zd Zd ZdS )Ś_RandNumeralz*Implements integer management in RandFieldc                 óD    t          |                      ¦   «         ¦  «        S r1   )Śintr]   r3   s    r-   Ś__int__z_RandNumeral.__int__«   rr   r/   c                 ó     t          | ¦  «        S r1   )r   r3   s    r-   Ś	__index__z_RandNumeral.__index__Æ   s    å4yyŠr/   c                 óD    t          |                      ¦   «         ¦  «        S r1   )r_   r]   r3   s    r-   Ś__nonzero__z_RandNumeral.__nonzero__³   s    åDIIKKŃ Ō Š r/   c                 ó0    |                       ¦   «         |z   S r1   ©r]   re   s     r-   Ś__add__z_RandNumeral.__add__ø   ó    ąyy{{UŃ"Š"r/   c                 ó0    ||                       ¦   «         z   S r1   r   re   s     r-   Ś__radd__z_RandNumeral.__radd__¼   ó    ątyy{{Ń"Š"r/   c                 ó0    |                       ¦   «         |z
  S r1   r   re   s     r-   Ś__sub__z_RandNumeral.__sub__Ą   r   r/   c                 ó0    ||                       ¦   «         z
  S r1   r   re   s     r-   Ś__rsub__z_RandNumeral.__rsub__Ä   r   r/   c                 ó0    |                       ¦   «         |z  S r1   r   re   s     r-   Ś__mul__z_RandNumeral.__mul__Č   r   r/   c                 ó0    ||                       ¦   «         z  S r1   r   re   s     r-   Ś__rmul__z_RandNumeral.__rmul__Ģ   r   r/   c                 ó0    |                       ¦   «         |z  S r1   r   re   s     r-   Ś__floordiv__z_RandNumeral.__floordiv__Š   r   r/   c                 ó2    |                       ¦   «         |k     S r1   r   re   s     r-   Ś__lt__z_RandNumeral.__lt__Õ   ó    ąyy{{UŅ"Š"r/   c                 ó2    |                       ¦   «         |k    S r1   r   re   s     r-   Ś__le__z_RandNumeral.__le__Ł   ó    ąyy{{eŅ#Š#r/   c                 ó2    |                       ¦   «         |k    S r1   r   re   s     r-   Ś__ge__z_RandNumeral.__ge__Ż   r¢   r/   c                 ó2    |                       ¦   «         |k    S r1   r   re   s     r-   Ś__gt__z_RandNumeral.__gt__į   r   r/   N)rD   rE   rF   rG   r   r   r   Ś__bool__r   r   r   r   r   r   r   Ś__div__r   r”   r¤   r¦   r2   r/   r-   r   r   Ø   sś        Ų4Š4š š  š  šš š š!š !š !š Hš#š #š #š#š #š #š#š #š #š#š #š #š#š #š #š#š #š #š#š #š #š Gš#š #š #š$š $š $š$š $š $š#š #š #š #š #r/   r   c                   óZ     e Zd ZdZdZdZd Z fdZd Zd Z	d Z
d Zd	 Zd
 Zd Z xZS )ŚRandNumz7Instances evaluate to random integers in selected ranger   c                 ó"    || _         || _        d S r1   ©r#   r&   ©r*   r#   r&   s      r-   r.   zRandNum.__init__ė   ó    ąŲr/   c                 ó    | j         j        dk    rd| j        d| j        S t	          t
          | ¦  «                             ¦   «         S )NrŖ   śmin=ś, max=)rN   rD   r#   r&   ŚsuperrŖ   rS   ©r*   rN   s    r-   rS   zRandNum._command_argsš   sG   ų ą>Ō" iŅ/Š/Š/Ų'+¤x x x°“°Š:Š:ŻWdŃ#Ō#×1Ņ1Ń3Ō3Š3r/   c                 óF    t          j        | j        | j        dz   ¦  «        S )Nr   )r   Ś	randranger#   r&   r3   s    r-   r]   zRandNum._fixö   s    åŌ ¤Ø$¬(°Q©,Ń7Ō7Š7r/   c                 ó0    |                       ¦   «         |z  S r1   r   re   s     r-   Ś
__lshift__zRandNum.__lshift__ś   ó    ąyy{{eŃ#Š#r/   c                 ó0    |                       ¦   «         |z	  S r1   r   re   s     r-   Ś
__rshift__zRandNum.__rshift__ž   rø   r/   c                 ó0    |                       ¦   «         |z  S r1   r   re   s     r-   Ś__and__zRandNum.__and__  r   r/   c                 ó0    ||                       ¦   «         z  S r1   r   re   s     r-   Ś__rand__zRandNum.__rand__  r   r/   c                 ó0    |                       ¦   «         |z  S r1   r   re   s     r-   Ś__or__zRandNum.__or__
  r   r/   c                 ó0    ||                       ¦   «         z  S r1   r   re   s     r-   Ś__ror__zRandNum.__ror__  r   r/   )rD   rE   rF   rG   r#   r&   r.   rS   r]   r·   rŗ   r¼   r¾   rĄ   rĀ   Ś__classcell__©rN   s   @r-   rŖ   rŖ   ę   sĄ   ų     ŲAŠAŲ
CŲ
Cšš š š
4š 4š 4š 4š 4š8š 8š 8š$š $š $š$š $š $š#š #š #š#š #š #š#š #š #š#š #š #š #š #š #š #r/   rŖ   c                   ó    e Zd Zd Zd ZdS )Ś	RandFloatc                 ó"    || _         || _        d S r1   r¬   r­   s      r-   r.   zRandFloat.__init__  r®   r/   c                 ó@    t          j        | j        | j        ¦  «        S r1   )r   Śuniformr#   r&   r3   s    r-   r]   zRandFloat._fix  s    å~dhØ¬Ń1Ō1Š1r/   N)rD   rE   rF   r.   r]   r2   r/   r-   rĘ   rĘ     s2        šš š š
2š 2š 2š 2š 2r/   rĘ   c                   ó    e Zd Zd ZdS )ŚRandBinFloatc                 ó    t          t          t          j        dt	          t          d¦  «        ¦  «        ¦  «        d         ¦  «        S )Nz!fé   r   )r   ŚfloatŚstructŚunpackŚbytesŚRandBinr3   s    r-   r]   zRandBinFloat._fix  s9    åŻŻM$„„gØa”j¤jŃ 1Ō 1Ń2Ō2°1Ō5ń
ō 
š 	
r/   N©rD   rE   rF   r]   r2   r/   r-   rĖ   rĖ     s#        š
š 
š 
š 
š 
r/   rĖ   c                   ó     e Zd Zd Zd Zd ZdS )ŚRandNumGammac                 ó"    || _         || _        d S r1   ©ŚalphaŚbeta)r*   rŲ   rŁ   s      r-   r.   zRandNumGamma.__init__(  ó    ą
Ų			r/   c                 ó&    d| j         d| j        S )Nzalpha=z, beta=r×   r3   s    r-   rS   zRandNumGamma._command_args-  s     ą&*¤j j j°$“)°)Š<Š<r/   c                 ót    t          t          t          j        | j        | j        ¦  «        ¦  «        ¦  «        S r1   )r   Śroundr   ŚgammavariaterŲ   rŁ   r3   s    r-   r]   zRandNumGamma._fix1  s)    å5Ō,ØT¬Zø¼ŃCŌCŃDŌDŃEŌEŠEr/   N©rD   rE   rF   r.   rS   r]   r2   r/   r-   rÕ   rÕ   '  sF        šš š š
=š =š =šFš Fš Fš Fš Fr/   rÕ   c                   ó     e Zd Zd Zd Zd ZdS )ŚRandNumGaussc                 ó"    || _         || _        d S r1   ©ŚmuŚsigma)r*   rä   rå   s      r-   r.   zRandNumGauss.__init__7  s    ąŲ


r/   c                 ó&    d| j         d| j        S )Nzmu=z, sigma=rć   r3   s    r-   rS   zRandNumGauss._command_args<  s     ą$(¤G G GØT¬ZØZŠ8Š8r/   c                 ót    t          t          t          j        | j        | j        ¦  «        ¦  «        ¦  «        S r1   )r   rŻ   r   Śgaussrä   rå   r3   s    r-   r]   zRandNumGauss._fix@  s(    å5 d¤gØt¬zŃ:Ō:Ń;Ō;Ń<Ō<Š<r/   Nrß   r2   r/   r-   rį   rį   6  sA        šš š š
9š 9š 9š=š =š =š =š =r/   rį   c                   ó"    e Zd ZddZd Zd ZdS )ŚRandNumExpor   c                 ó"    || _         || _        d S r1   ©ŚlambdŚbase)r*   rķ   rī   s      r-   r.   zRandNumExpo.__init__F  rŚ   r/   c                 óJ    d| j         z  }| j        dk    r|d| j        z  z  }|S )Nzlambd=%rr   z	, base=%rrģ   ©r*   Śrets     r-   rS   zRandNumExpo._command_argsK  s/    ą4:Ń%Ų9>>Ų; ¤Ń*Ń*CŲ
r/   c                 óx    | j         t          t          t          j        | j        ¦  «        ¦  «        ¦  «        z   S r1   )rī   r   rŻ   r   Śexpovariaterķ   r3   s    r-   r]   zRandNumExpo._fixR  s,    ąy3u„VŌ%7ø¼
Ń%CŌ%CŃDŌDŃEŌEŃEŠEr/   Nr7   rß   r2   r/   r-   rź   rź   E  sK        šš š š š
š š šFš Fš Fš Fš Fr/   rź   c                   ó0     e Zd ZdZd fd	Zd Zd Z xZS )ŚRandEnumzRInstances evaluate to integer sampling without replacement from the given intervalNc                 ó    || _         t          |||¦  «        | _        t          t          | ¦  «                             ||¦  «         d S r1   )Ś_seedr   Śseqr²   rõ   r.   )r*   r#   r&   r,   rN   s       r-   r.   zRandEnum.__init__Z  sC   ų ą
Ż$ SØ#ØtŃ4Ō4ŻhŃŌ×&Ņ& sØCŃ0Ō0Š0Š0Š0r/   c                 óR    d| j         d| j        }| j        r|d| j        z  z  }|S )Nr°   r±   ś	, seed=%r)r#   r&   r÷   rš   s     r-   rS   zRandEnum._command_args`  s8     ą"&¤( ( (ØD¬HØHŠ5Ų:š 	,Ų; ¤Ń+Ń+CŲ
r/   c                 ó*    t          | j        ¦  «        S r1   )rC   rų   r3   s    r-   r]   zRandEnum._fixg  s    åDH~~Šr/   r1   )rD   rE   rF   rG   r.   rS   r]   rĆ   rÄ   s   @r-   rõ   rõ   W  sa   ų     Ų\Š\š1š 1š 1š 1š 1š 1šš š šš š š š š š r/   rõ   c                   ó    e Zd Zd ZdS )ŚRandBytec                 ó>    t                                | dd¦  «         d S ©Nr   é’   ©rŖ   r.   r3   s    r-   r.   zRandByte.__init__m  s     å×Ņq (Ń+Ō+Š+Š+Š+r/   N©rD   rE   rF   r.   r2   r/   r-   rż   rż   l  ó#        š,š ,š ,š ,š ,r/   rż   c                   ó    e Zd Zd ZdS )Ś	RandSBytec                 ó>    t                                | dd¦  «         d S ©Ni’’’é   r  r3   s    r-   r.   zRandSByte.__init__s  s     å×Ņu hŃ/Ō/Š/Š/Š/r/   Nr  r2   r/   r-   r  r  r  ó#        š0š 0š 0š 0š 0r/   r  c                   ó    e Zd Zd ZdS )Ś	RandShortc                 ó>    t                                | dd¦  «         d S ©Nr   é’’  r  r3   s    r-   r.   zRandShort.__init__y  ó     å×Ņq )Ń,Ō,Š,Š,Š,r/   Nr  r2   r/   r-   r  r  x  ó#        š-š -š -š -š -r/   r  c                   ó    e Zd Zd ZdS )Ś
RandSShortc                 ó>    t                                | dd¦  «         d S ©Ni ’’i’  r  r3   s    r-   r.   zRandSShort.__init__  ó     å×Ņv yŃ1Ō1Š1Š1Š1r/   Nr  r2   r/   r-   r  r  ~  ó#        š2š 2š 2š 2š 2r/   r  c                   ó    e Zd Zd ZdS )ŚRandIntc                 ó>    t                                | dd¦  «         d S ©Nr   l   ’’ r  r3   s    r-   r.   zRandInt.__init__  r  r/   Nr  r2   r/   r-   r  r    r  r/   r  c                   ó    e Zd Zd ZdS )ŚRandSIntc                 ó>    t                                | dd¦  «         d S ©Ni   i’’’r  r3   s    r-   r.   zRandSInt.__init__  r  r/   Nr  r2   r/   r-   r  r    r  r/   r  c                   ó    e Zd Zd ZdS )ŚRandLongc                 ó>    t                                | dd¦  «         d S ©Nr   l   ’’’’ r  r3   s    r-   r.   zRandLong.__init__  r  r/   Nr  r2   r/   r-   r   r     r  r/   r   c                   ó    e Zd Zd ZdS )Ś	RandSLongc                 ó>    t                                | dd¦  «         d S ©Nlū’’’         l   ’’’’ r  r3   s    r-   r.   zRandSLong.__init__  r  r/   Nr  r2   r/   r-   r$  r$    r  r/   r$  c                   ó    e Zd Zd ZdS )ŚRandEnumBytec                 ó>    t                                | dd¦  «         d S r’   ©rõ   r.   r3   s    r-   r.   zRandEnumByte.__init__  s     å×Ņ$  8Ń,Ō,Š,Š,Š,r/   Nr  r2   r/   r-   r(  r(    r  r/   r(  c                   ó    e Zd Zd ZdS )ŚRandEnumSBytec                 ó>    t                                | dd¦  «         d S r  r*  r3   s    r-   r.   zRandEnumSByte.__init__£  s     å×Ņ$  xŃ0Ō0Š0Š0Š0r/   Nr  r2   r/   r-   r,  r,  ¢  ó#        š1š 1š 1š 1š 1r/   r,  c                   ó    e Zd Zd ZdS )ŚRandEnumShortc                 ó>    t                                | dd¦  «         d S r  r*  r3   s    r-   r.   zRandEnumShort.__init__©  ó     å×Ņ$  9Ń-Ō-Š-Š-Š-r/   Nr  r2   r/   r-   r0  r0  Ø  ó#        š.š .š .š .š .r/   r0  c                   ó    e Zd Zd ZdS )ŚRandEnumSShortc                 ó>    t                                | dd¦  «         d S r  r*  r3   s    r-   r.   zRandEnumSShort.__init__Æ  ó     å×Ņ$ Ø	Ń2Ō2Š2Š2Š2r/   Nr  r2   r/   r-   r5  r5  ®  ó#        š3š 3š 3š 3š 3r/   r5  c                   ó    e Zd Zd ZdS )ŚRandEnumIntc                 ó>    t                                | dd¦  «         d S r  r*  r3   s    r-   r.   zRandEnumInt.__init__µ  r2  r/   Nr  r2   r/   r-   r:  r:  “  r3  r/   r:  c                   ó    e Zd Zd ZdS )ŚRandEnumSIntc                 ó>    t                                | dd¦  «         d S r  r*  r3   s    r-   r.   zRandEnumSInt.__init__»  r7  r/   Nr  r2   r/   r-   r=  r=  ŗ  r8  r/   r=  c                   ó    e Zd Zd ZdS )ŚRandEnumLongc                 ó>    t                                | dd¦  «         d S r"  r*  r3   s    r-   r.   zRandEnumLong.__init__Į  r2  r/   Nr  r2   r/   r-   r@  r@  Ą  r3  r/   r@  c                   ó    e Zd Zd ZdS )ŚRandEnumSLongc                 ó>    t                                | dd¦  «         d S r&  r*  r3   s    r-   r.   zRandEnumSLong.__init__Ē  r7  r/   Nr  r2   r/   r-   rC  rC  Ę  r8  r/   rC  c                   ó&    e Zd ZdZddZd Zd ZdS )ŚRandEnumKeysz*Picks a random value from dict keys list. Nc                 ó    t          |¦  «        | _        t                               | dt	          | j        ¦  «        dz
  |¦  «         d S )Nr   r   )ŚlistŚenumrõ   r.   rx   )r*   rI  r,   s      r-   r.   zRandEnumKeys.__init__Ļ  s<    åJJ	Ż×Ņ$ „3 t¤y”>¤>°AŃ#5°tŃ<Ō<Š<Š<Š<r/   c                 óB    d| j         z  }| j        r|d| j        z  z  }|S )Nzenum=%rrś   )rI  r÷   rš   s     r-   rS   zRandEnumKeys._command_argsŌ  s0    š $)Ń#Ų:š 	,Ų; ¤Ń+Ń+CŲ
r/   c                 ó@    | j         t          | j        ¦  «                 S r1   )rI  rC   rų   r3   s    r-   r]   zRandEnumKeys._fixÜ  s    ąydhŌ(Š(r/   r1   ©rD   rE   rF   rG   r.   rS   r]   r2   r/   r-   rF  rF  Ģ  sL        Ų4Š4š=š =š =š =š
š š š)š )š )š )š )r/   rF  c                   ó     e Zd Zd Zd Zd ZdS )Ś
RandChoicec                 óP    |st          d¦  «        t          |¦  «        | _        d S )Nz$RandChoice needs at least one choice)Ś	TypeErrorrH  Ś_choice)r*   Śargss     r-   r.   zRandChoice.__init__ā  s+    ąš 	DŻŠBŃCŌCŠCŻDzzr/   c                 ó6    d                      | j        ¦  «        S )Nś, )ŚjoinrQ  r3   s    r-   rS   zRandChoice._command_argsč  s    ąyyŃ&Ō&Š&r/   c                 ó4    t          j        | j        ¦  «        S r1   )r   ŚchoicerQ  r3   s    r-   r]   zRandChoice._fixģ  s    å}T\Ń*Ō*Š*r/   Nrß   r2   r/   r-   rN  rN  į  sA        š"š "š "š'š 'š 'š+š +š +š +š +r/   rN  Ś_Sc                   ó     e Zd Zd Zd Zd ZdS )Ś_RandStringc                 óD    t          |                      ¦   «         ¦  «        S r1   )r   r]   r3   s    r-   rq   z_RandString.__str__õ  s    åŃ%Ō%Š%r/   c                 óD    t          |                      ¦   «         ¦  «        S r1   rt   r3   s    r-   ru   z_RandString.__bytes__ł  rv   r/   c                 ó0    |                       ¦   «         |z  S r1   r   )r*   r"   s     r-   r   z_RandString.__mul__ż  s    ąyy{{QŠr/   N)rD   rE   rF   rq   ru   r   r2   r/   r-   rZ  rZ  ō  sA        š&š &š &š)š )š )šš š š š r/   rZ  c                   óT    e Zd Zej        ej        z   ej        z   ZdefdZd Z	d Z
dS )Ś
RandStringNc                 óD    |t          d¦  «        }|| _        || _        d S ©Nē{®Gįz?©rź   ŚsizeŚchars©r*   rd  re  s      r-   r.   zRandString.__init__  ó&    ą<ŻtŃ$Ō$DŲ	Ų


r/   c                 ó   d}t          | j        t          ¦  «        r@| j        j        dk    s| j        j        dk    r|d| j                             ¦   «         z  z  }n|d| j        z  z  }| j        | j        k    r|d| j        z  z  }|S )NrR   rb  r   śsize=%rz
, chars=%r)r^   rd  rK   rķ   rī   r[   re  Ś_DEFAULT_CHARSrš   s     r-   rS   zRandString._command_args  s    ąŻdi„Ń/Ō/š 	)Ųy $Ņ&Š&Ø$¬)¬.øAŅ*=Š*=Ųy 4¤9×#4Ņ#4Ń#6Ō#6Ń6Ń6ųą9tyŃ(Ń(Cą:Ō,Ņ,Š,Ų< $¤*Ń,Ń,CŲ
r/   c                 ó    d}t          t          | j        ¦  «        ¦  «        D ]}|t          j        | j        ¦  «        z  }|S rQ   )r>   r   rd  r   rW  re  ©r*   Śsr;   s      r-   r]   zRandString._fix  sC    ąŻs49~~Ń&Ō&š 	+š 	+AŲtzŃ*Ō*Ń*AAŲr/   )rD   rE   rF   ŚstringŚascii_uppercaseŚascii_lowercaseŚdigitsrj  r.   rS   r]   r2   r/   r-   r_  r_    sg        ŲŌ,ØvŌ/EŃEŲmń$Nš !Øš š š š šš š šš š š š r/   r_  c                   óv    e Zd Zd                     d  ed¦  «        D ¦   «         ¦  «        ZdefdZd Zd ZdS )rŅ   r/   c              #   ó4   K   | ]}t          |¦  «        V  d S r1   )r   )r:   Ścs     r-   ś	<genexpr>zRandBin.<genexpr>#  s(   č č  Š9Š9Øc !ffŠ9Š9Š9Š9Š9Š9r/   r   Nc                 óD    |t          d¦  «        }|| _        || _        d S ra  rc  rf  s      r-   r.   zRandBin.__init__%  rg  r/   c                 óś    t          | j        t          ¦  «        s
d| j        z  S t          | j        t          ¦  «        r"| j        j        dk    r| j        j        dk    rdS d| j                             ¦   «         z  S )Nri  rb  r   rR   )r^   rd  rK   rź   rķ   rī   r[   r3   s    r-   rS   zRandBin._command_args,  sr    å$)„]Ń3Ō3š 	)ŲtyŃ(Š(ådi„Ń-Ō-š 	Ų	 4Ņ'Š'ØD¬I¬NøaŅ,?Š,?ą2Ų49×,Ņ,Ń.Ō.Ń.Š.r/   c                 ó°    d}t          t          | j        ¦  «        ¦  «        D ]1}|t          j        dt          j        | j        ¦  «        ¦  «        z  }2|S )Nr/   z!B)r>   r   rd  rĻ   Śpackr   rW  re  rl  s      r-   r]   zRandBin._fix7  sO    ąŻs49~~Ń&Ō&š 	>š 	>AŲT„6¤=°“Ń#<Ō#<Ń=Ō=Ń=AAŲr/   )	rD   rE   rF   rU  r>   rj  r.   rS   r]   r2   r/   r-   rŅ   rŅ   "  ss        ŲXXŠ9Š9ØeØe°C©j¬jŠ9Ń9Ō9Ń9Ō9Ną Øš š š š š	/š 	/š 	/šš š š š r/   rŅ   c                   ó.     e Zd Z fdZ fdZd Z xZS )ŚRandTermStringc                 óĢ    t          |¦  «        | _        t          t          | ¦  «                             |¬¦  «         | j                             | j        d¦  «        | _        d S )N)rd  r/   )r   Śtermr²   r{  r.   re  Śreplace)r*   rd  r}  rN   s      r-   r.   zRandTermString.__init__@  sR   ų å  Ń&Ō&	ŻndŃ#Ō#×,Ņ,°$Š,Ń7Ō7Š7ŲZ×'Ņ'Ø¬	°3Ń7Ō7


r/   c                 ó    d                      t          t          | ¦  «                             ¦   «         d| j        z  f¦  «        S )NrT  zterm=%r)rU  r²   r{  rS   r}  r³   s    r-   rS   zRandTermString._command_argsF  s@   ų ąyy%„°Ń5Ō5×CŅCŃEŌEŲ# d¤iŃ/š1ń 2ō 2š 	2r/   c                 óF    t                                | ¦  «        | j        z   S r1   )rŅ   r]   r}  r3   s    r-   r]   zRandTermString._fixK  s    å||DŃ!Ō! D¤IŃ-Š-r/   ©rD   rE   rF   r.   rS   r]   rĆ   rÄ   s   @r-   r{  r{  ?  s`   ų     š8š 8š 8š 8š 8š2š 2š 2š 2š 2š
.š .š .š .š .š .š .r/   r{  c                   ó2     e Zd ZdZef fd	Zd Zd Z xZS )ŚRandIPz	0.0.0.0/0c                 ó~    t          t          | ¦  «                             ¦   «          t          |¦  «        | _        d S r1   )r²   r  r.   r   Śip)r*   Ś
iptemplaterN   s     r-   r.   zRandIP.__init__S  s0   ų åfdŃŌ×$Ņ$Ń&Ō&Š&Żj//r/   c                 ó\    | j         j        d| j         j        }|| j        k    rdS d|z  S )Nś/rR   ziptemplate=%r)r  ŚnetŚmaskŚ_DEFAULT_IPTEMPLATE)r*   Śreps     r-   rS   zRandIP._command_argsX  s8    ą d¤g¤l lŠ3Ų$Ō*Ņ*Š*Ų2Ų Ń$Š$r/   c                 ó4    | j                              ¦   «         S r1   )r  rW  r3   s    r-   r]   zRandIP._fix_  s    ąw~~ŃŌŠr/   )rD   rE   rF   r  r.   rS   r]   rĆ   rÄ   s   @r-   r  r  P  sd   ų     Ų%Šą"5š "š "š "š "š "š "š
%š %š %š š  š  š  š  š  š  r/   r  c                   ó,     e Zd Zd fd	Zd Zd Z xZS )ŚRandMACŚ*c                 óü   t          t          | ¦  «                             ¦   «          || _        |dz  }|                     d¦  «        }d| _        t          d¦  «        D ]}d}||         dk    rt          ¦   «         }nkd||         v rK||                              d¦  «        \  }}t          t          |d¦  «        t          |d¦  «        ¦  «        }nt          ||         d¦  «        }| xj        |fz  c_        d S )	Nz
:*:*:*:*:*ś:r2   é   r   r  ś-é   )
r²   r  r.   Ś	_templateŚsplitŚmacr>   rż   rŖ   r   )r*   r  Śtemplater)   Śvra   rb   rN   s          r-   r.   zRandMAC.__init__e  sų   ų ågtŃŌ×%Ņ%Ń'Ō'Š'Ų"Ų\Ń!	Ų?? 3Ń'Ō'ŲŻqš 		š 		AŲAŲ{cŅ!Š!ŻJJŲ Š#Š#Ų {×(Ņ(ØŃ-Ō-1ŻC  2JJ­ØAØr©
¬
Ń3Ō3å  RŃ(Ō(ŲHHŃHHHš		š 		r/   c                 ó0    | j         dk    rdS d| j         z  S )Nr  rR   śtemplate=%r)r  r3   s    r-   rS   zRandMAC._command_argsw  s!    ą>SŅ Š Ų2Ųt~Ń-Š-r/   c                 ó    d| j         z  S )Nz%02x:%02x:%02x:%02x:%02x:%02x)r  r3   s    r-   r]   zRandMAC._fix}  s    ą.°“Ń9Š9r/   )r  r  rÄ   s   @r-   r  r  d  s[   ų     šš š š š š š$.š .š .š:š :š :š :š :š :š :r/   r  c                   ó,     e Zd Zd fd	Zd Zd Z xZS )ŚRandIP6ś**c           
      ó   t          t          | ¦  «                             ¦   «          || _        g | _        | j                             d¦  «        D ]Ģ}|r|dk    r| j                             |¦  «         %d|v r|                     d¦  «        \  }}n|dk    rdx}}n|x}}|sd}|sd}||k    r)| j                             t          |d¦  «        ¦  «         | j                             t          t          |d¦  «        t          |d¦  «        ¦  «        ¦  «         Ķd| j        v | _	        | j         
                    d¦  «        | _        d S )	Nr  r   r  r  rR   Ś0Śffffr  )r²   r  r.   ŚtmplŚspr  Śappendr   rŖ   ŚvariableŚcountŚmulti)r*   Śip6templater  ŚaŚbrN   s        r-   r.   zRandIP6.__init__  sG  ų ågtŃŌ×%Ņ%Ń'Ō'Š'Ų	ŲŲ Ń%Ō%š 	@š 	@AŲš T		ŲqŃ!Ō!Š!ŲŲaxxŲwws||11ŲcŲ
AAą	Aąš ŲŲš ŲŲAvvŲs 1 bzzŃ*Ō*Š*Š*ąw„sØ1Øb”z¤zµ3°qø"±:“:Ń>Ō>Ń?Ō?Š?Š?ŲdgŲW]] 4Ń(Ō(


r/   c                 ó0    | j         dk    rdS d| j         z  S )Nr   rR   zip6template=%r)r¤  r3   s    r-   rS   zRandIP6._command_args  s!    ą9ŅŠŲ2Ų $¤)Ń+Š+r/   c           	      ó^   | j         }g }t          | j        ¦  «        D ]A\  }}|dk    r|dz  }dt          | j        ¦  «        |z
  dz
  z
  t          |¦  «        z
  |z   }d| j        v r|dz  }|s| j        rt          j        d|¦  «        }t          |¦  «        D ]-}|                     dt          j        dd¦  «        z  ¦  «         .«t          |t          ¦  «        r&|                     dt          |¦  «        z  ¦  «         ę|dk    r|                     d¦  «         |s|                     d¦  «         |                     dt          |¦  «        z  ¦  «         Ct          |¦  «        d	k    r|                     d¦  «         |d
         dk    rd|d
<   d                     |¦  «        S )Nr   r   é   rR   r   z%04xr  r¢  é	   é’’’’r  )r©  Ś	enumerater„  rx   r§  r   r8   r>   r¦  r^   rŖ   r   ŚremoverU  )r*   Śnbmr  r)   r"   ŚremainŚjs          r-   r]   zRandIP6._fix¤  s©   ąjŲŻdgŃ&Ō&š 	+ń 	+DAqŲDyyŲqŲc $¤'llØQŃ.°Ń2Ń3µcø"±g“gŃ=ĄŃCŲ==ŲaKFŲš 7$-š 7Ż#^ØAØvŃ6Ō6FŻvš Aš AAŲIIf„v¤~°aøŃ'?Ō'?Ń?Ń@Ō@Š@Š@šAåAwŃ'Ō'š +Ų		&„3 q”6¤6/Ń*Ō*Š*Š*ŲaŲ		#Ųš +Ų		"ą		&„3 q”6¤6/Ń*Ō*Š*Ń*Żr77a<<ŲIIbMMMŲb6R<<ŲBrFŲxx||Šr/   )r   r  rÄ   s   @r-   r  r    s[   ų     š)š )š )š )š )š )š6,š ,š ,šš š š š š š r/   r  c                   ó\     e Zd Zd ed¦  «         ed¦  «        f fd	Zd Zd Zd Z xZS )ŚRandOIDNē¹?rb  c                 óŚ    t          t          | ¦  «                             ¦   «          || _        d | _        |$d |                     d¦  «        D ¦   «         | _        || _        || _        d S )Nc           
      ó    g | ]=}d |v r5t          t          t          |                     d ¦  «        ¦  «        ¦  «        n|>S )r  )ŚtupleŚmapr   r  ©r:   ra   s     r-   r<   z$RandOID.__init__.<locals>.<listcomp>Č  sQ    š š š ąš 25ø°°c#qww s||Ń,Ō,Ń-Ō-Š-øqšš š r/   ś.)r²   rø  r.   Śori_fmtŚfmtr  ŚdepthŚidnum)r*   rĮ  rĀ  rĆ  rN   s       r-   r.   zRandOID.__init__Ā  sp   ų ågtŃŌ×%Ņ%Ń'Ō'Š'ŲŲŲ?šš ą 3šń ō DHš 
Ų


r/   c                 óü   g }| j         r|                     d| j        z  ¦  «         t          | j        t
          ¦  «        s|                     d| j        z  ¦  «         nit          | j        t          ¦  «        r | j        j        dk    s| j        j        dk    r/|                     d| j         	                    ¦   «         z  ¦  «         t          | j
        t
          ¦  «        s|                     d| j
        z  ¦  «         nit          | j
        t          ¦  «        r | j
        j        dk    s| j
        j        dk    r/|                     d| j
         	                    ¦   «         z  ¦  «         d	                     |¦  «        S )
Nzfmt=%rzdepth=%rr¹  r   zdepth=%szidnum=%rrb  zidnum=%srT  )rĮ  r¦  rĄ  r^   rĀ  rK   rź   rķ   rī   r[   rĆ  rU  rš   s     r-   rS   zRandOID._command_argsĻ  sH   ąŲ8š 	0ŲJJx $¤,Ń.Ń/Ō/Š/å$*„mŃ4Ō4š 	:ŲJJz D¤JŃ.Ń/Ō/Š/Š/ŻDJ­Ń4Ō4š 	:Ų
Ō  CŅ'Š'Ø4¬:¬?øaŅ+?Š+?ŲJJz D¤J×$6Ņ$6Ń$8Ō$8Ń8Ń9Ō9Š9å$*„mŃ4Ō4š 	:ŲJJz D¤JŃ.Ń/Ō/Š/Š/ŻDJ­Ń4Ō4š 	:Ų
Ō  DŅ(Š(ØD¬J¬OøqŅ,@Š,@ŲJJz D¤J×$6Ņ$6Ń$8Ō$8Ń8Ń9Ō9Š9ąyy~~Šr/   c                 ó^    | j         d| j        j        z  S d| j        j        d| j         dS )NrM   ś<ś [ś]>)rĄ  rN   rD   r3   s    r-   rO   zRandOID.__repr__ć  s=    ą<ŠŲDNŌ3Ń3Š3š  š #'¤.Ō"9Š"9Š"9ø4¼<ø<ø<ŠHŠHr/   c                 ó(     j         6d                      fdt          d j        z   ¦  «        D ¦   «         ¦  «        S g } j         D ]¶}|dk    r(|                     t           j        ¦  «        ¦  «         0|dk    r'| fdt          d j        z   ¦  «        D ¦   «         z  }]t          |t          ¦  «        r/|                     t          t          j
        | ¦  «        ¦  «         ”|                     |¦  «         ·d                     |¦  «        S )Nræ  c              3   ó@   K   | ]}t          j        ¦  «        V  d S r1   ©rp   rĆ  r9   s     r-   ru  zRandOID._fix.<locals>.<genexpr>ķ  s+   ųč č  ŠKŠK°C ¤
OOŠKŠKŠKŠKŠKŠKr/   r   r  r   c                 ó8    g | ]}t          j        ¦  «        S r2   rĖ  )r:   r)   r*   s     r-   r<   z RandOID._fix.<locals>.<listcomp>ō  s!   ų ŠKŠKŠK°C ¤
OOŠKŠKŠKr/   )rĮ  rU  r>   rĀ  r¦  rp   rĆ  r^   r¼  r   rµ   )r*   Śoidr)   s   `  r-   r]   zRandOID._fixź  s  ų ą8ŠŲ88ŠKŠKŠKŠKµUø1øt¼z¹>Ń5JŌ5JŠKŃKŌKŃKŌKŠKąCŲXš "š "Ų88ŲJJs 4¤:Ń/Ō/Š/Š/Ų$YYŲŠKŠKŠKŠKµUø1øt¼z¹>Ń5JŌ5JŠKŃKŌKŃKCCŻ „5Ń)Ō)š "ŲJJs„6Ō#3°QŠ#7Ń8Ō8Ń9Ō9Š9Š9ąJJqMMMMŲ88C==Š r/   )	rD   rE   rF   rź   r.   rS   rO   r]   rĆ   rÄ   s   @r-   rø  rø  Į  s   ų     Ų { {°3Ń'7Ō'7ø{ø{Č4Ń?PŌ?Pš š š š š š šš š š(Iš Iš Iš!š !š !š !š !š !š !r/   rø  c                   óv    e Zd ZddZd Zdddddd	d
ddddddddZed ¦   «         Zed ¦   «         Zd Z	d Z
dS )Ś
RandRegExpē333333Ó?c                 ó"    || _         || _        d S r1   ©Ś_regexpŚ_lambda)r*   ŚregexpŚlambda_s      r-   r.   zRandRegExp.__init__ż  s    ąŲr/   c                 óJ    d| j         z  }| j        dk    r|d| j        z  z  }|S )Nz	regexp=%rrŠ  z, lambda_=%rrŅ  rš   s     r-   rS   zRandRegExp._command_args  s1    ąDLŃ(Ų<3ŅŠŲ> D¤LŃ0Ń0CŲ
r/   z[a-zA-Z0-9]z[a-zA-Z]z[ -]z[ 	]z[ -]z[0-9]z[!-~]z[a-z]z[ -~]z&[!"\#$%&'()*+,\-./:;<=>?@\[\\\]^_{|}~]z[ 	
]z[A-Z]z[A-Za-z0-9_]z[A-Fa-f0-9])z	[:alnum:]z	[:alpha:]z	[:ascii:]z	[:blank:]z	[:cntrl:]z	[:digit:]z	[:graph:]z	[:lower:]z	[:print:]z	[:punct:]z	[:space:]z	[:upper:]z[:word:]z
[:xdigit:]c                 óH   d}| o| d         dk    }	 |                       d¦  «        }|dk     rn¾|dk    s|t          | ¦  «        dz
  k    rd}|r| d d         } n| dd          } n| |dz
           }| |dz            }d                     t          t          t          t          |¦  «        t          |¦  «        dz   ¦  «        ¦  «        ¦  «        }| d |dz
           |z   | |dz   d          z   } Ś|| z   |r.d                     fdt          d	¦  «        D ¦   «         ¦  «        S )
NrR   r   ś^Tr  r   r±  c              3   óX   K   | ]$}t          |¦  «        vÆt          |¦  «        V  %d S r1   ©Śchr)r:   ra   Śress     r-   ru  z+RandRegExp.choice_expand.<locals>.<genexpr>0  s9   ųč č  ŠJŠJ Q½øA¹¼ĄcŠ8IŠ8I#a&&Š8IŠ8IŠ8IŠ8IŠJŠJr/   r   )Śfindrx   rU  r½  rÜ  r>   Śord)rm  ŚmŚinvertŚpŚc1Śc2ŚrngrŻ  s          @r-   Śchoice_expandzRandRegExp.choice_expand  sA  ų š ŲŠ"qts{š	0ŲsAŲ1uuŲŲAvvc !ff qjŲŲš Ų#2#AAą!""AAąq1uXŲq1uXŲggc„#„u­S°©W¬Wµcø"±g“gĄ±kŃ'BŌ'BŃCŌCŃDŌDŲfq1ufI O aØØA©ØØ¤iŃ/š	0š !eŲš 	KŲ''ŠJŠJŠJŠJ­%°©*¬*ŠJŃJŌJŃJŌJCŲ
r/   c                 ó   d}d}| D ]y}t          |t          ¦  «        r}|dk    r.|dz
  }|t                               |dd          |z  |¦  «        z  }t                               |dd          |¦  «        }t	          |¦  «        D ]\  }}||u r|||<   ||z  }d}t          |t
          ¦  «        r|\  }}	|dk    r|||	dz
           z  }Ä|dk    r|	}Ķ|dk    rf|dk    r<t          j        |	¦  «        }
|t                               |
dd          |¦  «        z  }|t                               |g|z  |¦  «        z  }d};|dk    r&|t                               |g|z  |¦  «        z  }d}g|t          |¦  «        z  }{|S )NrR   r   ŚciteŚrepeatrW  )	r^   rH  rĻ  Ś	stack_fixr²  r¼  r   rW  rp   )ŚlstŚindexŚrŚmulŚeŚfr)   ŚidxŚkindŚvalrt  s              r-   rź  zRandRegExp.stack_fix3  sæ   š ŲŲš 	 ń 	 AŻ!TŃ"Ō"š  Ų!88Ų 'CŲ×-Ņ-Øa°°°¬e°c©kø5ŃAŌAŃAAå×(Ņ(ØØ1Ø2Ø2¬°Ń6Ō6Ż'ØŃ.Ō.š %š %FAsŲCxxŲ#$aųŲQŲŻAuŃ%Ō%š  Ų	cŲ6>>Ųs QwŃ'AAŲXŅ%Š%ŲCCąXŅ%Š%ŲaxxŻ"MØ#Ń.Ō.ŲZ×1Ņ1°!°A°B°B“%øŃ?Ō?Ń?ąZ×1Ņ1°1°#ø±)øUŃCŌCŃCŲłą!88Ų×-Ņ-ØqØc°C©iøŃ?Ō?Ń?AŲCCąQKAAŲr/   c           	      ó
   d g}g }|}d}| j         }| j                             ¦   «         D ]\  }}|                     ||¦  «        }t	          |¦  «        }d}	||k     r||         }
|dz  }|
dk    r |g}|d                              |¦  «         nO|
dk    rP|d         }|d         }t          |t          ¦  «        sd|gf}||d<   n|d                              |¦  «         |g}nł|
dk    r]|d         d         }t          |t          ¦  «        r|d                              |¦  «         |                     |¦  «         |d         }n|
d	k    s|
d
k    r"|g}|d                              |¦  «         d}	nh|
dk    r||d         }t           	                    d 
                    |                     ¦   «         dd          ¦  «        ¦  «        }|                     t          t          |¦  «         ¦  «         d}	nę|
dk    r|d         }d 
                    |                     ¦   «         dd          ¦  «        }|                     ¦   «         }d|vr+|                     |g|gt          |¦  «        z  z   ¦  «         n|                     d¦  «        \  }}|sd}|r+t!          t          |¦  «        t          |¦  «        ¦  «        }n#t#          | j        t          |¦  «        ¬¦  «        }|                     d|f¦  «         |                     |¦  «         d}	nÉ|
dk    rc||         }
|
dk    r$|                     t          dd¦  «        ¦  «         n*|
dv r&|                     dt'          |
¦  «        dz
  ¦  «         |dz  }n`|	s|                     |
¦  «         nG|
dk    rY|                     ¦   «         }|                     |g|gt          t)          j        | j        ¦  «        ¦  «        dz   z  z   ¦  «         nč|
dk    rV|                     ¦   «         }|                     |g|gt          t)          j        | j        ¦  «        ¦  «        z  z   ¦  «         n|
dk    r*t)          j        dd¦  «        r|                     ¦   «          n\|
dk    r4|                     t          d t/          d¦  «        D ¦   «          ¦  «         n"|
d k    s|
d!k    rn|                     |
¦  «         ||k     °t                               |dd          |¦  «        S )"Nr   Tr   rX   ś|r±  rW  rY   ś[Ś{Fś]rR   Ś}ś,r¢  )rī   ré  ś\rm  ś ś	Ś
0123456789rč  é0   ś+r  ś?ræ  c                 ó,    g | ]}t          |¦  «        S r2   rŪ  r¾  s     r-   r<   z#RandRegExp._fix.<locals>.<listcomp>©  s    Š+GŠ+GŠ+G°q­C°©F¬FŠ+GŠ+GŠ+Gr/   r   ś$rŁ  )rÓ  Śspecial_setsŚitemsr~  rx   r¦  r^   r¼  rĻ  rę  rU  ŚpoprN  rH  r   r  rŖ   rź   rŌ  rß  r   ró   r8   r>   rź  )r*   Śstackrģ  Ścurrentr)   rÕ  Śkr  ŚlnŚinterprt  rā  ŚchrW  Śnumrļ  Śnum_minŚnum_maxr"   s                      r-   r]   zRandRegExp._fixZ  sģ   ąŲąŲŲŲŌ%×+Ņ+Ń-Ō-š 	*š 	*DAqŲ^^ A qŃ)Ō)FFŻ[[ŲŲ"ffŲq	AŲFAąCxxŲ")Ų
×!Ņ! 'Ń*Ō*Š*Ń*ŲcŲAJŲrUŻ! "„eŃ,Ō,š *Ų" W IŠ.BŲAbEEąqELL Ń)Ō)Š)Ų#ŲcŲQZ ^Żb„%Ń(Ō(š *ŲqELL Ń)Ō)Š)ŲWŃ%Ō%Š%Ų! !*ŲcQ #XXŲ")Ų
×!Ņ! 'Ń*Ō*Š*ŲŲcŲ! !*Ż#×1Ņ1°"·'²'ø'æ+ŗ+¹-¼-ČČČŌ:KŃ2LŌ2LŃMŌMŲz­4°©<¬<Š8Ń9Ō9Š9ŲŲcŲ! !*ŲgggkkmmØAØBØBŌ/Ń0Ō0ŲKKMMŲc>>ŲNN G 9°ØsµSø±X“X©~Ń#=Ń>Ō>Š>Š>ą'*§y¢y°”~¤~Ń$GWŲ"š &Ų"%Ųš IŻ#„CØ”L¤Lµ#°g±,“,Ń?Ō?å'Ø¬½3øw¹<¼<ŠHŃHŌHŲNN HØa =Ń1Ō1Š1ŲNN 1Ń%Ō%Š%ŲŲdŲ1IŲ88ŲNN„:Øc°4Ń#8Ō#8Ń9Ō9Š9Š9Ų,Š&Š&ŲNN 6­3Øq©6¬6°D©=Ń9Ō9Š9ŲQŲš "ŲqŃ!Ō!Š!Ń!ŲcŲKKMMŲ yØAØ3µ#µfŌ6HČĢŃ6VŌ6VŃ2WŌ2WŠZ[Ń2[Ń+\Ń\Ń]Ō]Š]Š]ŲcŲKKMMŲ yØAØ3µµVŌ5GČĢŃ5UŌ5UŃ1VŌ1VŃ+VŃVŃWŌWŠWŠWŲcŻ> ! QŃ'Ō'š "ŲKKMMMųŲcŲzŠ+GŠ+G½EĄ#¹J¼JŠ+GŃ+GŌ+GŠHŃIŌIŠIŠIŲcQ #XXŲąqŃ!Ō!Š!šO "ffõR ×#Ņ# EØ!Ø"Ø"¤IØuŃ5Ō5Š5r/   c                 ó2    d| j         j        d| j        dS )NrĘ  rĒ  rČ  )rN   rD   rÓ  r3   s    r-   rO   zRandRegExp.__repr__±  s      ą"nŌ5Š5Š5°t“|°|°|ŠDŠDr/   N)rŠ  )rD   rE   rF   r.   rS   r  Śstaticmethodrę  rź  r]   rO   r2   r/   r-   rĻ  rĻ  ü  sĶ        šš š š š
š š š #ŲŲ"ŲŲ&ŲŲ"ŲŲ"ŲDŲ$ŲŲ"Ų#šš Lš" šš ń \šš0 š$š $ń \š$šLU6š U6š U6šnEš Eš Eš Eš Er/   rĻ  c                   ó    e Zd ZdS )ŚRandSingularityNr   r2   r/   r-   r  r  ¶  r   r/   r  c                   ó>     e Zd Zed ¦   «         Z fdZ fdZ xZS )ŚRandSingNumc                 óÖ    d| dk    rd} | dk     r|  } dt          t          j        | ¦  «        t          j        d¦  «        z  ¦  «        dz   }fdt          |¦  «        D ¦   «         S )Nr   r   r±  r   c                 ó     h | ]
}d |z  z  S )r   r2   )r:   r)   Śsigns     r-   ś	<setcomp>z0RandSingNum.make_power_of_two.<locals>.<setcomp>Å  s!   ų Š2Š2Š2 q!tŠ2Š2Š2r/   )r   ŚmathŚlogr>   )ŚendŚend_nr  s     @r-   Śmake_power_of_twozRandSingNum.make_power_of_two»  st   ų š Ų!88ŲCŲ77Ų$CŲDŻDHSMM„D¤HØQ”K¤KŃ/Ń0Ō0°1Ń4Ų2Š2Š2Š2„UØ5”\¤\Š2Ń2Ō2Š2r/   c                 ó&   || _         || _        d||t          ||z   dz  ¦  «        h}||                      |¦  «        z  }||                      |¦  «        z  }|                     ¦   «         D ]2}|                     |dz   ¦  «         |                     |dz
  ¦  «         3|                     ¦   «         D ]&}||cxk    r|k    sn |                     |¦  «         ' t          t          | ¦  «        j	        |  | j
                             ¦   «          d S )Nr   r   r   )Ś_mnŚ_mxr   r  r{   Śaddr³  r²   r  r.   rQ  Śsort)r*   ŚmnŚmxŚsingr)   rN   s        r-   r.   zRandSingNum.__init__Ē  s  ų ąŲŲ2r3  R”Ø1}Ń-Ō-Š.Ų×&Ņ& rŃ*Ō*Ń*Ų×&Ņ& rŃ*Ō*Ń*Ųš 	š 	AŲHHQUOOOŲHHQUOOOOŲš 	š 	AŲ====b====ŲAųŲ)k4Ń Ō Ō)Ø4Š0Š0Ų×ŅŃŌŠŠŠr/   c                 ó    | j         j        dk    rd| j        d| j        S t	          t
          | ¦  «                             ¦   «         S )Nr  zmn=z, mx=)rN   rD   r   r!  r²   r  rS   r³   s    r-   rS   zRandSingNum._command_args×  sG   ų ą>Ō" mŅ3Š3Š3Ų%)¤X X XØt¬xØxŠ8Š8Ż[ $Ń'Ō'×5Ņ5Ń7Ō7Š7r/   )rD   rE   rF   r  r  r.   rS   rĆ   rÄ   s   @r-   r  r  ŗ  sj   ų     Ųš	3š 	3ń \š	3šš š š š š 8š 8š 8š 8š 8š 8š 8š 8š 8r/   r  c                   ó    e Zd Zd ZdS )ŚRandSingBytec                 ó>    t                                | dd¦  «         d S r’   ©r  r.   r3   s    r-   r.   zRandSingByte.__init__ß  s     å×ŅT 1 hŃ/Ō/Š/Š/Š/r/   Nr  r2   r/   r-   r)  r)  Ž  r	  r/   r)  c                   ó    e Zd Zd ZdS )ŚRandSingSBytec                 ó>    t                                | dd¦  «         d S r  r+  r3   s    r-   r.   zRandSingSByte.__init__å  s     å×ŅT 5Ø(Ń3Ō3Š3Š3Š3r/   Nr  r2   r/   r-   r-  r-  ä  ó#        š4š 4š 4š 4š 4r/   r-  c                   ó    e Zd Zd ZdS )ŚRandSingShortc                 ó>    t                                | dd¦  «         d S r  r+  r3   s    r-   r.   zRandSingShort.__init__ė  ó     å×ŅT 1 iŃ0Ō0Š0Š0Š0r/   Nr  r2   r/   r-   r1  r1  ź  r.  r/   r1  c                   ó    e Zd Zd ZdS )ŚRandSingSShortc                 ó>    t                                | dd¦  «         d S r  r+  r3   s    r-   r.   zRandSingSShort.__init__ń  ó     å×ŅT 6Ø9Ń5Ō5Š5Š5Š5r/   Nr  r2   r/   r-   r5  r5  š  ó#        š6š 6š 6š 6š 6r/   r5  c                   ó    e Zd Zd ZdS )ŚRandSingIntc                 ó>    t                                | dd¦  «         d S r  r+  r3   s    r-   r.   zRandSingInt.__init__÷  r3  r/   Nr  r2   r/   r-   r:  r:  ö  r.  r/   r:  c                   ó    e Zd Zd ZdS )ŚRandSingSIntc                 ó>    t                                | dd¦  «         d S r  r+  r3   s    r-   r.   zRandSingSInt.__init__ż  r7  r/   Nr  r2   r/   r-   r=  r=  ü  r8  r/   r=  c                   ó    e Zd Zd ZdS )ŚRandSingLongc                 ó>    t                                | dd¦  «         d S r"  r+  r3   s    r-   r.   zRandSingLong.__init__  r3  r/   Nr  r2   r/   r-   r@  r@    r.  r/   r@  c                   ó    e Zd Zd ZdS )ŚRandSingSLongc                 ó>    t                                | dd¦  «         d S r&  r+  r3   s    r-   r.   zRandSingSLong.__init__	  r7  r/   Nr  r2   r/   r-   rC  rC    r8  r/   rC  c                   ó0     e Zd Z fdZd Zd Zd Z xZS )ŚRandSingStringc                 óJ    g d¢} t          t          | ¦  «        j        |  d S )N)6rR   z%xz%%z%sz%iz%nz%x%x%x%x%x%x%x%x%xz*%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%sś%z%%%Į   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   s   ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’s   s   a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a   \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a   ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a   ../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../a   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////a   ${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}z
 or 1=1 --z' or 1=1 --z" or 1=1 --z
 or 1=1; #z' or 1=1; #z" or 1=1; #z;reboot;z	$(reboot)z`reboot`zindex.php%00ó    z%00rū  z=../../../../../../../../../../../../../../../../../etc/passwdz¾%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwda4  %252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fboot.inizŖ..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afetc/passwdzØ..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afboot.iniz//etc/passwdz;..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\boot.inizAUX:zCLOCK$zCOM:śCON:zLPT:zLST:zNUL:rK  z
C:\CON\CONzC:\boot.iniz\\myserver\sharezfoo.exe:zfoo.exe\)r²   rF  r.   )r*   Śchoices_listrN   s     r-   r.   zRandSingString.__init__  s7   ų š5'š 5'š 5'šl 	-ndŃ#Ō#Ō,ØlŠ;Š;Š;Š;r/   c                 ó    dS rQ   r2   r3   s    r-   rS   zRandSingString._command_argsI  rT   r/   c                 óD    t          |                      ¦   «         ¦  «        S r1   ro   r3   s    r-   rq   zRandSingString.__str__M  rr   r/   c                 óD    t          |                      ¦   «         ¦  «        S r1   rt   r3   s    r-   ru   zRandSingString.__bytes__Q  rv   r/   )rD   rE   rF   r.   rS   rq   ru   rĆ   rÄ   s   @r-   rF  rF    sf   ų     š8<š 8<š 8<š 8<š 8<štš š š š  š  š)š )š )š )š )š )š )r/   rF  c                   ó     e Zd Zd Zd Zd ZdS )ŚRandPoolc                 ó¶    || _         g }|D ]E}d}t          |t          ¦  «        r|\  }}|t          t          t
                   |¦  «        g|z  z  }F|| _        dS )zIEach parameter is a volatile object or a couple (volatile object, weight)r   N)Ś_argsr^   r¼  r   rK   r   Ś_pool)r*   rR  Śpoolrā  Śws        r-   r.   zRandPool.__init__W  sm    š 
ŲŲš 	6š 	6AŲAŻ!UŃ#Ō#š Ų1ŲT-­Ō,ØaŃ0Ō0Š1°AŃ5Ń5DDŲ


r/   c                 ó2   g }| j         D ]y}t          |t          ¦  «        r;|                     d|d                              ¦   «         d|d         d¦  «         R|                     |                     ¦   «         ¦  «         zd                     |¦  «        S )NrX   r   rT  r   rY   )rS  r^   r¼  r¦  r[   rU  )r*   rń   rā  s      r-   rS   zRandPool._command_argsc  s    ąŲš 	(š 	(AŻ!UŃ#Ō#š (Ų


ØØ1¬ÆŖ©¬ØØøø1¼øøŠ>Ń?Ō?Š?Š?ą

199;;Ń'Ō'Š'Š'Ųyy~~Šr/   c                 ó\    t          j        | j        ¦  «        }|                     ¦   «         S r1   )r   rW  rT  r]   )r*   rķ  s     r-   r]   zRandPool._fixm  s     åM$*Ń%Ō%Ųvvxxr/   Nrß   r2   r/   r-   rQ  rQ  V  sA        š
š 
š 
šš š šš š š š r/   rQ  c            	       ó   e Zd ZdZdZ ej        d                     e                     d¦  «        e                     d¦  «        e                     d¦  «        ¦  «        ej        ¦  «        Z	g d¢Z
	 	 	 	 	 	 dd	Zd
 Zd ZdS )ŚRandUUIDaJ  Generates a random UUID.

    By default, this generates a RFC 4122 version 4 UUID (totally random).

    See Python's ``uuid`` module documentation for more information.

    Args:
        template (optional): A template to build the UUID from. Not valid with
                             any other option.
        node (optional): A 48-bit Host ID. Only valid for version 1 (where it
                         is optional).
        clock_seq (optional): An integer of up to 14-bits for the sequence
                              number. Only valid for version 1 (where it is
                              optional).
        namespace: A namespace identifier, which is also a UUID. Required for
                   versions 3 and 5, must be omitted otherwise.
        name: string, required for versions 3 and 5, must be omitted otherwise.
        version: Version of UUID to use (1, 3, 4 or 5). If omitted, attempts to
                 guess which version to generate, defaulting to version 4
                 (totally random).

    Raises:
        ValueError: on invalid constructor arguments
    z4([0-9a-f]{{{0}}}|\*|[0-9a-f]{{{0}}}:[0-9a-f]{{{0}}})z+^{0}-?{1}-?{1}-?{2}{2}-?{2}{2}{2}{2}{2}{2}$rÆ  rĶ   r   )r   r   rĶ   é   Nc           
      óÜ   || _         || _        d | _        d | _        d | _        d | _        d | _        d | _        |rT|s|s|s|s|rt          d¦  «        t          j
                             |¦  «        }|r|                     ¦   «         }nt          d¦  «        t          gt          gdz  z   t          gdz  z   }g }	t!          |¦  «        D ]®\  }
}|dk    r$|	                      ||
         ¦   «         ¦  «         /d|v rX|                     d¦  «        \  }}|	                     t'          t)          |d¦  «        t)          |d¦  «        ¦  «        ¦  «         |	                     t)          |d¦  «        ¦  «         Æt+          |	¦  «        | _        d S |r%|t          j        vrt          d¦  «        || _        n|s|rd	| _        n|r
|rd
| _        nd| _        | j        d	k    r#|s|rt          d¦  «        || _        || _        d S | j        dv r;|s|r't          d                     | j        ¦  «        ¦  «        || _        || _        d S | j        dk    r|s|s|s|rt          d¦  «        d S d S )Nz6UUID template must be the only parameter, if specifiedzUUID template is invalidr   rÆ  r  r  r  zversion is not supportedr   r[  rĶ   z1namespace and name may not be used with version 1)r   r[  z2node and clock_seq may not be used with version {}znode, clock_seq, node and clock_seq may not be used with version 4. If you did not specify version, you need to specify it explicitly.)r  Ś_ori_versionŚuuid_templateŚ	clock_seqŚ	namespaceŚnameŚnodeŚversionŚ
ValueErrorrZ  Ś_REGŚmatchŚgroupsr  r  rż   r²  r¦  r  rŖ   r   r¼  ŚVERSIONSŚformat)r*   r  rb  r_  r`  ra  rc  ŚtmpŚrnd_fr^  r)   ŚtŚminiŚmaxis                 r-   r.   zRandUUID.__init__  s   š "Ų#Ōą!ŌŲŲŲ	Ų	Ųąń <	?Ųš 1yš 1 Iš 1°š 1øš 1Ż š "0ń 1ō 1š 1å-×%Ņ% hŃ/Ō/CŲš =Ų::<<õ !Š!;Ń<Ō<Š<ŻI„ Øa”Ń/µ8°*øq±.Ń@EŲMŻ! (Ń+Ō+š 	5š 	51Ų88Ų!×(Ņ(ØØØq¬©¬Ń4Ō4Š4Š4ŲAXXŲ!"§¢Ø”¤JD$Ų!×(Ņ(Ż„ DØ"”¤­s°4ø©}¬}Ń=Ō=ńō š š š "×(Ņ(­ØQ°©¬Ń4Ō4Š4Š4å!& }Ń!5Ō!5DŌŠŠąš %Ų„(Ō"3Š3Š3Ż$Š%?Ń@Ō@Š@ą#*DLLš š %9š %Ų#$DLLŲš % 4š %Ų#$DLLš $%DLš |qŅ Š Ųš 2 š 2Ż$š &1ń 2ō 2š 2ą 	Ų!*Ų Š'Š'Ųš H9š HŻ$š &2ß28²&ø¼Ń2FŌ2FńHō Hš Hš "+Ų 			Ų Ņ"Š"Ųš ? š ?Øš ?°	š ?Ż$š &>ń ?ō ?š ?š #Š"š?š ?r/   c                 óą   g }| j         r|                     d| j         z  ¦  «         | j        r|                     d| j        z  ¦  «         | j        r|                     d| j        z  ¦  «         | j        r|                     d| j        z  ¦  «         | j        r|                     d| j        z  ¦  «         | j        r|                     d| j        z  ¦  «         d                     |¦  «        S )Nr  znode=%rzclock_seq=%rznamespace=%rzname=%rz
version=%rrT  )r  r¦  rb  r_  r`  ra  r]  rU  rš   s     r-   rS   zRandUUID._command_argsč  sė    ąŲ>š 	7ŲJJ} t¤~Ń5Ń6Ō6Š6Ų9š 	.ŲJJy 4¤9Ń,Ń-Ō-Š-Ų>š 	8ŲJJ~Ø¬Ń6Ń7Ō7Š7Ų>š 	8ŲJJ~Ø¬Ń6Ń7Ō7Š7Ų9š 	.ŲJJy 4¤9Ń,Ń-Ō-Š-ŲŌš 	9ŲJJ| dŌ&7Ń7Ń8Ō8Š8Ųyy~~Šr/   c                 ó   | j         rt          j        d| j         z  ¦  «        S | j        dk    rt          j        | j        | j        ¦  «        S | j        dk    r<| j        r| j        st          d¦  «        t          j
        | j        | j        ¦  «        S | j        dk    rt          j        ¦   «         S | j        dk    r<| j        r| j        st          d¦  «        t          j        | j        | j        ¦  «        S t          d¦  «        )Nz,%08x%04x%04x%02x%02x%02x%02x%02x%02x%02x%02xr   r   zMissing namespace or namerĶ   r[  zUnhandled version)r^  ŚuuidŚUUIDrc  Śuuid1rb  r_  r`  ra  rd  Śuuid3Śuuid4Śuuid5r3   s    r-   r]   zRandUUID._fixł  s   ąŌš 	2Ż9Š;Ų#Ō1ń2ń 3ō 3š 3ą\QŅŠŻ:diØ¬Ń8Ō8Š8Ų\QŅŠŲ>š >Ø¬š >Ż Š!<Ń=Ō=Š=Ż:dnØd¬iŃ8Ō8Š8Ų\QŅŠŻ:<<ŠŲ\QŅŠŲ>š >Ø¬š >Ż Š!<Ń=Ō=Š=Ż:dnØd¬iŃ8Ō8Š8åŠ0Ń1Ō1Š1r/   )NNNNNN)rD   rE   rF   rG   Ś_BASEŚreŚcompileri  ŚIre  rh  r.   rS   r]   r2   r/   r-   rZ  rZ  s  sĪ        šš š4 DEŲ2:Ų6×=Ņ=ŲLLOOU\\Ø!__ØeÆlŖlø1©o¬oń	
ō 	
š 	ń	ō Dš ||Hš ŲŲŲŲŲšO?š O?š O?š O?šbš š š"2š 2š 2š 2š 2r/   rZ  c                   ó    e Zd ZddZd ZdS )Ś	_AutoTimeNc                 ó    || _         || _        |	|| _        d S |	d| _        d S t          j        ¦   «         |z
  | _        d S )Ng        )Ś_baseŚ	_ori_diffŚdiffŚtime)r*   rī   r  s      r-   r.   z_AutoTime.__init__  sG    ą
ŲąŠŲDIIIŲ\ŲDIIIå	 dŃ*DIIIr/   c                 óĄ    g }| j         r|                     d| j         z  ¦  «         | j        r|                     d| j        z  ¦  «         d                     |¦  «        S )Nzbase=%rzdiff=%rrT  )r~  r¦  r  rU  rš   s     r-   rS   z_AutoTime._command_args  s]    ąŲ:š 	/ŲJJy 4¤:Ń-Ń.Ō.Š.Ų>š 	3ŲJJy 4¤>Ń1Ń2Ō2Š2Ųyy~~Šr/   )NN)rD   rE   rF   r.   rS   r2   r/   r-   r|  r|    s7        š
+š 
+š 
+š 
+šš š š š r/   r|  c                   ó    e Zd Zd ZdS )ŚAutoTimec                 ó8    t          j         ¦   «         | j        z
  S r1   )r  r  r3   s    r-   r]   zAutoTime._fix*  s    åy{{TYŃ&Š&r/   NrÓ   r2   r/   r-   r  r  )  s#        š'š 'š 'š 'š 'r/   r  c                   ó    e Zd Zd ZdS )ŚIntAutoTimec                 óR    t          t          j        ¦   «         | j        z
  ¦  «        S r1   )r   r  r  r3   s    r-   r]   zIntAutoTime._fix0  s    å49;; ¤Ń*Ń+Ō+Š+r/   NrÓ   r2   r/   r-   r  r  /  r  r/   r  c                   ó&     e Zd Zd fd	Zd Z xZS )ŚZuluTimer   c                 óZ    t          t          | ¦  «                             |¬¦  «         d S ©N)r  )r²   r  r.   ©r*   r  rN   s     r-   r.   zZuluTime.__init__6  s*   ų åhŃŌ×&Ņ&ØDŠ&Ń1Ō1Š1Š1Š1r/   c                 ó    t          j        dt          j        t          j         ¦   «         | j        z   ¦  «        ¦  «        S )Nz%y%m%d%H%M%SZ©r  ŚstrftimeŚgmtimer  r3   s    r-   r]   zZuluTime._fix:  ó5    å}_Ż![­¬©¬°t“yŃ)@ŃAŌAńCō Cš 	Cr/   r7   ©rD   rE   rF   r.   r]   rĆ   rÄ   s   @r-   r  r  5  sS   ų     š2š 2š 2š 2š 2š 2šCš Cš Cš Cš Cš Cš Cr/   r  c                   ó&     e Zd Zd fd	Zd Z xZS )ŚGeneralizedTimer   c                 óZ    t          t          | ¦  «                             |¬¦  «         d S r  )r²   r  r.   r  s     r-   r.   zGeneralizedTime.__init__A  s*   ų åotŃ$Ō$×-Ņ-°4Š-Ń8Ō8Š8Š8Š8r/   c                 ó    t          j        dt          j        t          j         ¦   «         | j        z   ¦  «        ¦  «        S )Nz%Y%m%d%H%M%SZr  r3   s    r-   r]   zGeneralizedTime._fixE  r  r/   r7   r  rÄ   s   @r-   r  r  @  sS   ų     š9š 9š 9š 9š 9š 9šCš Cš Cš Cš Cš Cš Cr/   r  c                   ó$    e Zd ZdZd Zd Zd ZdS )ŚDelayedEvalz. Example of usage: DelayedEval("time.time()") c                 ó    || _         d S r1   ©Śexpr)r*   r  s     r-   r.   zDelayedEval.__init__N  s    ą			r/   c                 ó    d| j         z  S )Nzexpr=%rr  r3   s    r-   rS   zDelayedEval._command_argsR  s    ą49Ń$Š$r/   c                 ó*    t          | j        ¦  «        S r1   )Śevalr  r3   s    r-   r]   zDelayedEval._fixV  s    åDIŠr/   NrL  r2   r/   r-   r  r  K  sG        Ų8Š8šš š š%š %š %šš š š š r/   r  c                   ó"    e Zd ZddZd Zd ZdS )	ŚIncrementalValuer   r   r±  c                 ó>    |x| _         | _        || _        || _        d S r1   )Śstartró  ŚstepŚrestart)r*   r£  r¤  r„  s       r-   r.   zIncrementalValue.__init__\  s"    ą %Š%
TXŲ	Ųr/   c                 ó   g }| j         r|                     d| j         z  ¦  «         | j        dk    r|                     d| j        z  ¦  «         | j        dk    r|                     d| j        z  ¦  «         d                     |¦  «        S )Nzstart=%rr   zstep=%rr±  z
restart=%rrT  )r£  r¦  r¤  r„  rU  rš   s     r-   rS   zIncrementalValue._command_argsb  s    ąŲ:š 	0ŲJJz D¤JŃ.Ń/Ō/Š/Ų9>>ŲJJy 4¤9Ń,Ń-Ō-Š-Ų<2ŅŠŲJJ| d¤lŃ2Ń3Ō3Š3Ųyy~~Šr/   c                 óx    | j         }| j         | j        k    r| j        | _         n| xj         | j        z  c_         |S r1   )ró  r„  r£  r¤  )r*   r  s     r-   r]   zIncrementalValue._fixm  s:    ąHŲ8t|Ņ#Š#ŲzDHHąHH	Ń!HHŲr/   N)r   r   r±  rß   r2   r/   r-   r”  r”  [  sF        šš š š š	š 	š 	šš š š š r/   r”  c                   ó"    e Zd ZddZd Zd ZdS )ŚCorruptedBytesrb  Nc                 ó0    || _         || _        || _        d S r1   )rm  rā  r"   )r*   rm  rā  r"   s       r-   r.   zCorruptedBytes.__init__x  s    ąŲŲr/   c                 ó   g }|                      d| j        z  ¦  «         | j        dk    r|                      d| j        z  ¦  «         | j        r|                      d| j        z  ¦  «         d                     |¦  «        S )Nzs=%rrb  zp=%rzn=%rrT  )r¦  rm  rā  r"   rU  rš   s     r-   rS   zCorruptedBytes._command_args~  st    ąŲ

6DF?Ń#Ō#Š#Ų6T>>ŲJJv ¤Ń'Ō'Š'Ų6š 	(ŲJJv ¤Ń'Ō'Š'Ųyy~~Šr/   c                 óB    t          | j        | j        | j        ¦  «        S r1   )r   rm  rā  r"   r3   s    r-   r]   zCorruptedBytes._fix  s    åTV T¤VØT¬VŃ4Ō4Š4r/   )rb  Nrß   r2   r/   r-   r©  r©  w  sF        šš š š šš š š5š 5š 5š 5š 5r/   r©  c                   ó    e Zd Zd ZdS )ŚCorruptedBitsc                 óB    t          | j        | j        | j        ¦  «        S r1   )r   rm  rā  r"   r3   s    r-   r]   zCorruptedBits._fix  s    åDF D¤FØD¬FŃ3Ō3Š3r/   NrÓ   r2   r/   r-   r®  r®    r/  r/   r®  )arG   r{   r   r  r  rx  rq  rĻ   rn  Śscapy.base_classesr   Śscapy.compatr   r   r   Śscapy.utilsr   r   Śtypingr	   r
   r   r   r   r   r   r   r   r   r   rI   rK   r   r   rĪ   r   r   rŖ   rĘ   rĖ   rÕ   rį   rź   rõ   rż   r  r  r  r  r  r   r$  r(  r,  r0  r5  r:  r=  r@  rC  rF  rN  rŃ   rp   rX  rZ  r_  rŅ   r{  r  r  r  rø  rĻ  r  r  r)  r-  r1  r5  r:  r=  r@  rC  rF  rQ  rr  rZ  r|  r  r  r  r  r  r”  r©  r®  r2   r/   r-   ś<module>r“     s  ššš š Ų Ų Ų Ų 				Ų Ų Ų ą "Š "Š "Š "Š "Š "Ų 5Š 5Š 5Š 5Š 5Š 5Š 5Š 5Š 5Š 5Ų 3Š 3Š 3Š 3Š 3Š 3Š 3Š 3šš š š š š š š š š š š š š š š š š š š š š š š š$5š 5š 5š 5š 5ń 5ō 5š 5šp WT]]š8š 8š 8š 8š 8GBKń 8ō 8š 8šv	š 	š 	š 	š 	bŌ! 7Ø2¤;ń 	ō 	š 	š WT3ŃŌš;#š ;#š ;#š ;#š ;#9R=ń ;#ō ;#š ;#š|*#š *#š *#š *#š *#l3Ōń *#ō *#š *#šZ2š 2š 2š 2š 2UŌ#ń 2ō 2š 2š
š 
š 
š 
š 
9ń 
ō 
š 
šFš Fš Fš Fš F7ń Fō Fš Fš=š =š =š =š =7ń =ō =š =šFš Fš Fš Fš F'ń Fō Fš Fš$š š š š wń ō š š*,š ,š ,š ,š ,wń ,ō ,š ,š0š 0š 0š 0š 0ń 0ō 0š 0š-š -š -š -š -ń -ō -š -š2š 2š 2š 2š 2ń 2ō 2š 2š-š -š -š -š -gń -ō -š -š2š 2š 2š 2š 2wń 2ō 2š 2š-š -š -š -š -wń -ō -š -š2š 2š 2š 2š 2ń 2ō 2š 2š-š -š -š -š -8ń -ō -š -š1š 1š 1š 1š 1Hń 1ō 1š 1š.š .š .š .š .Hń .ō .š .š3š 3š 3š 3š 3Xń 3ō 3š 3š.š .š .š .š .(ń .ō .š .š3š 3š 3š 3š 38ń 3ō 3š 3š.š .š .š .š .8ń .ō .š .š3š 3š 3š 3š 3Hń 3ō 3š 3š)š )š )š )š )8ń )ō )š )š*+š +š +š +š +3ń +ō +š +š  WT5#ŃŌšš š š š )B- Ø¤ń ō š šš š š š SŌ!ń ō š š@š š š š k%Ō ń ō š š:.š .š .š .š .Wń .ō .š .š" š  š  š  š  [Ōń  ō  š  š(:š :š :š :š :k#Ōń :ō :š :š<<š <š <š <š <k#Ōń <ō <š <š~8!š 8!š 8!š 8!š 8!k#Ōń 8!ō 8!š 8!švwEš wEš wEš wEš wE3ń wEō wEš wEšt	š 	š 	š 	š 	jń 	ō 	š 	š!8š !8š !8š !8š !8/ń !8ō !8š !8šH0š 0š 0š 0š 0;ń 0ō 0š 0š4š 4š 4š 4š 4Kń 4ō 4š 4š1š 1š 1š 1š 1Kń 1ō 1š 1š6š 6š 6š 6š 6[ń 6ō 6š 6š1š 1š 1š 1š 1+ń 1ō 1š 1š6š 6š 6š 6š 6;ń 6ō 6š 6š1š 1š 1š 1š 1;ń 1ō 1š 1š6š 6š 6š 6š 6Kń 6ō 6š 6šE)š E)š E)š E)š E)_ń E)ō E)š E)šPš š š š y sŌ+Ō,ń ō š š:X2š X2š X2š X2š X2yŌ#ń X2ō X2š X2š|š š š š RŌ Ųńō š š0'š 'š 'š 'š 'yŌń 'ō 'š 'š,š ,š ,š ,š ,)C.ń ,ō ,š ,šCš Cš Cš Cš Cy~ń Cō Cš CšCš Cš Cš Cš Ci nń Cō Cš Cšš š š š - Ō$ń ō š š š š š š } SŌ)ń ō š š85š 5š 5š 5š 5] 5Ō)ń 5ō 5š 5š,4š 4š 4š 4š 4Nń 4ō 4š 4š 4š 4r/   