
    (ph/                   T   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJrJr  S SKJr  S SKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'J(r(  S SK)J*r*J+r+J,r,J-r-  \R\                  " SSSS9r/    SS jr0SS jr1 " S S\25      r3 " S S\25      r4 " S S\Rj                  S9r6 " S S5      r7 " S S\65      r8 " S S \65      r9 " S! S"\65      r: " S# S$\65      r; " S% S&\65      r< " S' S(5      r= " S) S*\65      r> " S+ S,\65      r? " S- S.\65      r@ " S/ S0\65      rA " S1 S25      rB " S3 S4\R                  5      rD\DR                  \DR                  \DR                  \DR                  \DR                  \DR                  \DR                  \DR                  S5.rM\DR                  S6\DR                  S7\DR                  S8\DR                  S9\DR                  S:\DR                  S;\DR                  S<\DR                  S=0rN\DR                  S \DR                  S6\DR                  S7\DR                  S8\DR                  S9\DR                  S:\DR                  S;\DR                  S=\DR                  S>\DR                  S?0
rQ " S@ SA\65      rR " SB SC\65      rS " SD SE5      rT " SF SG5      rU " SH SI5      rV " SJ SK\65      rW " SL SM\65      rX " SN SO\65      rY " SP SQ\65      rZ " SR SS\R                  5      r[\[ V s0 s H  o R                  U _M     sn r] " ST SU\65      r^ " SV SW\65      r_ " SX SY\65      r` " SZ S[\65      ra " S\ S]\R                  \/   5      rc " S^ S_5      rd " S` Sa\65      re " Sb Sc\65      rf " Sd Se\65      rg " Sf Sg\65      rh " Sh Si\65      ri " Sj Sk\65      rj " Sl Sm\65      rk " Sn So\65      rl " Sp Sq\65      rm " Sr Ss\65      rn " St Su\65      ro " Sv Sw5      rp " Sx Sy5      rq " Sz S{5      rr " S| S}\65      rs " S~ S\65      rtgs  sn f )    )annotationsN)IterableIterator)utils)asn1)x509)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp)	DirectoryNameDNSNameGeneralName	IPAddress	OtherNameRegisteredID
RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVarExtensionTypeT)bound	covariantc                Z   [        U [        5      (       aC  U R                  [        R                  R
                  [        R                  R                  5      nO[        U [        5      (       aC  U R                  [        R                  R                  [        R                  R                  5      nOXU R                  [        R                  R
                  [        R                  R                  5      n[        R                  " U5      n[        R                  " U5      R!                  5       $ N)
isinstancer   public_bytesr
   EncodingDERPublicFormatPKCS1r   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)
public_keydata
serializeds      O/var/www/html/venv/lib/python3.13/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr6   3   s     *l++&&""&&&&,,
 
J 6	7	7&&""''&&88
  ,,""&&&&;;

 ''
3<<$$&&    c                4   ^  SU 4S jjnU 4S jnU 4S jnXU4$ )Nc                .   > [        [        U T5      5      $ r$   )lengetattrself
field_names    r5   
len_method*_make_sequence_methods.<locals>.len_methodL   s    74,--r7   c                .   > [        [        U T5      5      $ r$   )iterr;   r<   s    r5   iter_method+_make_sequence_methods.<locals>.iter_methodO   s    GD*-..r7   c                "   > [        U T5      U   $ r$   )r;   )r=   idxr>   s     r5   getitem_method._make_sequence_methods.<locals>.getitem_methodR   s    tZ(--r7   returnint )r>   r?   rC   rG   s   `   r5   _make_sequence_methodsrM   K   s    ./. N22r7   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DuplicateExtensionX   c                0   > [         TU ]  U5        X l        g r$   super__init__oidr=   msgrU   	__class__s      r5   rT   DuplicateExtension.__init__Y       r7   rU   rW   strrU   r   rJ   None__name__
__module____qualname____firstlineno__rT   __static_attributes____classcell__rX   s   @r5   rO   rO   X        r7   rO   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ExtensionNotFound^   c                0   > [         TU ]  U5        X l        g r$   rR   rV   s      r5   rT   ExtensionNotFound.__init___   rZ   r7   r[   r\   r_   rf   s   @r5   ri   ri   ^   rg   r7   ri   c                  *    \ rS rSr% S\S'   SS jrSrg)r    d   z!typing.ClassVar[ObjectIdentifier]rU   c                     [        SU < 35      e)z'
Serializes the extension type to DER.
z3public_bytes is not implemented for extension type )NotImplementedErrorr=   s    r5   r&   ExtensionType.public_bytesg   s     "A$J
 	
r7   rL   NrJ   bytes)r`   ra   rb   rc   __annotations__r&   rd   rL   r7   r5   r    r    d   s    	**
r7   )	metaclassc                  d    \ rS rSrS	S jr    S
S jr    SS jr\" S5      u  rr	r
SS jrSrg)
Extensionsp   c                $    [        U5      U l        g r$   )list_extensions)r=   
extensionss     r5   rT   Extensions.__init__q   s    
+r7   c                \    U  H  nUR                   U:X  d  M  Us  $    [        SU S3U5      e)NNo  extension was found)rU   ri   )r=   rU   exts      r5   get_extension_for_oid Extensions.get_extension_for_oidt   s7     Cww#~
   #cU*> ?EEr7   c                    U[         L a  [        S5      eU  H"  n[        UR                  U5      (       d  M   Us  $    [	        SU S3UR
                  5      e)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.r   r   )UnrecognizedExtension	TypeErrorr%   valueri   rU   )r=   extclassr   s      r5   get_extension_for_class"Extensions.get_extension_for_class}   sc     ,,)  C#))X..
   (/0(,,
 	
r7   r|   c                "    SU R                    S3$ )Nz<Extensions()>r|   rq   s    r5   __repr__Extensions.__repr__   s    d../r22r7   r   N)r}   z"Iterable[Extension[ExtensionType]]rJ   r^   )rU   r   rJ   zExtension[ExtensionType])r   ztype[ExtensionTypeVar]rJ   zExtension[ExtensionTypeVar]rJ   r]   )r`   ra   rb   rc   rT   r   r   rM   __len____iter____getitem__r   rd   rL   r7   r5   rx   rx   p   sL    ,F#F	!F
.
	$
$ &<M%J"GX{3r7   rx   c                  r    \ rS rSr\R
                  rS
S jrSS jrSS jr	SS jr
\SS j5       rSS jrSrg	)	CRLNumber   c                P    [        U[        5      (       d  [        S5      eXl        g Nzcrl_number must be an integerr%   rK   r   _crl_numberr=   
crl_numbers     r5   rT   CRLNumber.__init__   !    *c**;<<%r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r   NotImplementedr   r=   others     r5   __eq__CRLNumber.__eq__   s*    %++!!%"2"222r7   c                ,    [        U R                  5      $ r$   hashr   rq   s    r5   __hash__CRLNumber.__hash__       DOO$$r7   c                "    SU R                    S3$ )Nz<CRLNumber(r   r   rq   s    r5   r   CRLNumber.__repr__   s    T__-R00r7   c                    U R                   $ r$   r   rq   s    r5   r   CRLNumber.crl_number       r7   c                .    [         R                  " U 5      $ r$   	rust_x509encode_extension_valuerq   s    r5   r&   CRLNumber.public_bytes       //55r7   r   Nr   rK   rJ   r^   r   objectrJ   boolrI   r   rs   )r`   ra   rb   rc   r   
CRL_NUMBERrU   rT   r   r   r   propertyr   r&   rd   rL   r7   r5   r   r      s:    

!
!C&3%1    6r7   r   c                      \ rS rSr\R
                  r        SS jr\    SS j5       r	\    SS j5       r
SS jrSS jrSS jr\SS j5       r\  SS	 j5       r\SS
 j5       rSS jrSrg)AuthorityKeyIdentifier   c                    US L US L :w  a  [        S5      eUb-  [        U5      n[        S U 5       5      (       d  [        S5      eUb   [	        U[
        5      (       d  [        S5      eXl        X l        X0l        g )NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonec              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   r   .0xs     r5   	<genexpr>2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s      4Iq
1k**4I   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorr{   allr   r%   rK   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r=   key_identifierauthority_cert_issuerauthority_cert_serial_numbers       r5   rT   AuthorityKeyIdentifier.__init__   s     "T)(D0
 4 
 !,$()>$?! 4I     
 (3J(#=
 =
 MNN-&;#-I*r7   c                (    [        U5      nU " US S S9$ Nr   r   r   r6   )clsr2   r1   s      r5   from_issuer_public_key-AuthorityKeyIdentifier.from_issuer_public_key   s$     1<!"&)-
 	
r7   c                &    U " UR                   S S S9$ r   r1   )r   skis     r5   "from_issuer_subject_key_identifier9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s     ::"&)-
 	
r7   c                X    SU R                   < SU R                   SU R                   S3$ )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=r   r   rq   s    r5   r   AuthorityKeyIdentifier.__repr__   sA    5d6I6I5L M%%)%?%?$@ A,,0,M,M+N	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )r%   r   r   r   r   r   r   s     r5   r   AuthorityKeyIdentifier.__eq__   sf    %!788!! 5#7#77 2**e.I.II211112	
r7   c                    U R                   c  S nO[        U R                   5      n[        U R                  XR                  45      $ r$   )r   tupler   r   r   )r=   acis     r5   r   AuthorityKeyIdentifier.__hash__  sD    %%-C223C  #'H'HI
 	
r7   c                    U R                   $ r$   )r   rq   s    r5   r   %AuthorityKeyIdentifier.key_identifier      ###r7   c                    U R                   $ r$   )r   rq   s    r5   r   ,AuthorityKeyIdentifier.authority_cert_issuer  s     ***r7   c                    U R                   $ r$   )r   rq   s    r5   r   3AuthorityKeyIdentifier.authority_cert_serial_number  s    111r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   #AuthorityKeyIdentifier.public_bytes  r   r7   )r   r   r   N)r   bytes | Noner   Iterable[GeneralName] | Noner   
int | NonerJ   r^   )r2   r   rJ   r   )r   SubjectKeyIdentifierrJ   r   r   r   rI   rJ   r   rJ   zlist[GeneralName] | NonerJ   r   rs   )r`   ra   rb   rc   r   AUTHORITY_KEY_IDENTIFIERrU   rT   classmethodr   r   r   r   r   r   r   r   r   r&   rd   rL   r7   r5   r   r      s    

/
/CJ$J  <J '1	J
 
JL 
8
	
 
 
&
	
 

	

 $ $ +	!+ +
 2 26r7   r   c                      \ rS rSr\R
                  rSS jr\    SS j5       r	\
SS j5       r\
SS j5       rSS jrSS jrSS jrSS	 jrS
rg)r   i  c                    Xl         g r$   _digest)r=   r1   s     r5   rT   SubjectKeyIdentifier.__init__!  s    r7   c                $    U " [        U5      5      $ r$   r   )r   r2   s     r5   from_public_key$SubjectKeyIdentifier.from_public_key$  s     2:>??r7   c                    U R                   $ r$   r   rq   s    r5   r1   SubjectKeyIdentifier.digest*      ||r7   c                    U R                   $ r$   r   rq   s    r5   r   #SubjectKeyIdentifier.key_identifier.  r  r7   c                $    SU R                   < S3$ )Nz<SubjectKeyIdentifier(digest=r   r   rq   s    r5   r   SubjectKeyIdentifier.__repr__2  s    .t{{oR@@r7   c                    [        U[        5      (       d  [        $ [        R                  " U R
                  UR
                  5      $ r$   )r%   r   r   r	   bytes_eqr1   r   s     r5   r   SubjectKeyIdentifier.__eq__5  s1    %!566!!%%dkk5<<@@r7   c                ,    [        U R                  5      $ r$   )r   r1   rq   s    r5   r   SubjectKeyIdentifier.__hash__;      DKK  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   !SubjectKeyIdentifier.public_bytes>  r   r7   r   N)r1   rt   rJ   r^   )r2   r   rJ   r   rs   r   r   rI   )r`   ra   rb   rc   r   SUBJECT_KEY_IDENTIFIERrU   rT   r   r   r   r1   r   r   r   r   r&   rd   rL   r7   r5   r   r     sx    

-
-C @2@	@ @
    AA!6r7   r   c                  v    \ rS rSr\R
                  rS
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)AuthorityInformationAccessiB  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   AccessDescriptionr   s     r5   r   6AuthorityInformationAccess.__init__.<locals>.<genexpr>G       J\:a!233\r   @Every item in the descriptions list must be an AccessDescriptionr{   r   r   _descriptionsr=   descriptionss     r5   rT   #AuthorityInformationAccess.__init__E  7    L)J\JJJ$ 
 *r7   r  c                "    SU R                    S3$ )Nz<AuthorityInformationAccess(r   r  rq   s    r5   r   #AuthorityInformationAccess.__repr__Q  s    -d.@.@-ADDr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   !AuthorityInformationAccess.__eq__T  s-    %!;<<!!!!U%8%888r7   c                >    [        [        U R                  5      5      $ r$   r   r   r  rq   s    r5   r   #AuthorityInformationAccess.__hash__Z      E$,,-..r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   'AuthorityInformationAccess.public_bytes]  r   r7   r"  Nr  zIterable[AccessDescription]rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   AUTHORITY_INFORMATION_ACCESSrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r  B  s:    

3
3C* &<O%L"GX{E9/6r7   r  c                  v    \ rS rSr\R
                  rS
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)SubjectInformationAccessia  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r  r   s     r5   r   4SubjectInformationAccess.__init__.<locals>.<genexpr>f  r  r   r  r  r  s     r5   rT   !SubjectInformationAccess.__init__d  r   r7   r  c                "    SU R                    S3$ )Nz<SubjectInformationAccess(r   r"  rq   s    r5   r   !SubjectInformationAccess.__repr__p  s    +D,>,>+?rBBr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r/  r   r  r   s     r5   r   SubjectInformationAccess.__eq__s  s-    %!9::!!!!U%8%888r7   c                >    [        [        U R                  5      5      $ r$   r'  rq   s    r5   r   !SubjectInformationAccess.__hash__y  r)  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   %SubjectInformationAccess.public_bytes|  r   r7   r"  Nr,  r   r   rI   rs   )r`   ra   rb   rc   r   SUBJECT_INFORMATION_ACCESSrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r/  r/  a  s:    

1
1C* &<O%L"GX{C9/6r7   r/  c                  p    \ rS rSr      S
S jrSS jrSS jrSS jr\SS j5       r	\SS j5       r
Srg	)r  i  c                    [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eXl        X l        g )Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r%   r   r   r   _access_method_access_location)r=   access_methodaccess_locations      r5   rT   AccessDescription.__init__  sC     -)9::GHH/;77CDD+ /r7   c                <    SU R                    SU R                   S3$ )Nz!<AccessDescription(access_method=z, access_location=r   )rA  rB  rq   s    r5   r   AccessDescription.__repr__  s.    /0B0B/C D#334B8	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   rA  rB  r   s     r5   r   AccessDescription.__eq__  sJ    %!233!! %"5"55 >$$(=(==	
r7   c                D    [        U R                  U R                  45      $ r$   )r   rA  rB  rq   s    r5   r   AccessDescription.__hash__  s    T'')=)=>??r7   c                    U R                   $ r$   )r?  rq   s    r5   rA  AccessDescription.access_method      """r7   c                    U R                   $ r$   )r@  rq   s    r5   rB  !AccessDescription.access_location      $$$r7   )r@  r?  N)rA  r   rB  r   rJ   r^   r   r   rI   rJ   r   )rJ   r   )r`   ra   rb   rc   rT   r   r   r   r   rA  rB  rd   rL   r7   r5   r  r    sW    
0-
0@K
0	
0

@ # # % %r7   r  c                      \ rS rSr\R
                  rSS jr\SS j5       r	\SS j5       r
SS jrSS jrSS jrSS jrS	rg
)BasicConstraintsi  c                    [        U[        5      (       d  [        S5      eUb  U(       d  [        S5      eUb&  [        U[        5      (       a  US:  a  [        S5      eXl        X l        g )Nzca must be a boolean valuez)path_length must be None when ca is Falser   z2path_length must be a non-negative integer or None)r%   r   r   r   rK   _ca_path_length)r=   capath_lengths      r5   rT   BasicConstraints.__init__  se    "d##899"2HII";,,aD  'r7   c                    U R                   $ r$   )rT  rq   s    r5   rV  BasicConstraints.ca      xxr7   c                    U R                   $ r$   )rU  rq   s    r5   rW  BasicConstraints.path_length         r7   c                <    SU R                    SU R                   S3$ )Nz<BasicConstraints(ca=z, path_length=r   )rV  rW  rq   s    r5   r   BasicConstraints.__repr__  s$    #DGG9N4;K;K:LBO	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   rR  r   rV  rW  r   s     r5   r   BasicConstraints.__eq__  s?    %!122!!ww%(("Lt'7'75;L;L'LLr7   c                D    [        U R                  U R                  45      $ r$   )r   rV  rW  rq   s    r5   r   BasicConstraints.__hash__  s    TWWd../00r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   BasicConstraints.public_bytes  r   r7   )rT  rU  N)rV  r   rW  r   rJ   r^   rJ   r   r   r   r   rI   rs   )r`   ra   rb   rc   r   BASIC_CONSTRAINTSrU   rT   r   rV  rW  r   r   r   r&   rd   rL   r7   r5   rR  rR    sO    

(
(C("   ! !

M16r7   rR  c                  r    \ rS rSr\R
                  rS
S jr\SS j5       r	SS jr
SS jrSS jrSS jrSrg	)DeltaCRLIndicatori  c                P    [        U[        5      (       d  [        S5      eXl        g r   r   r   s     r5   rT   DeltaCRLIndicator.__init__  r   r7   c                    U R                   $ r$   r   rq   s    r5   r   DeltaCRLIndicator.crl_number  r   r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   rj  r   r   r   s     r5   r   DeltaCRLIndicator.__eq__  s+    %!233!!%"2"222r7   c                ,    [        U R                  5      $ r$   r   rq   s    r5   r   DeltaCRLIndicator.__hash__  r   r7   c                "    SU R                    S3$ )Nz<DeltaCRLIndicator(crl_number=r   r   rq   s    r5   r   DeltaCRLIndicator.__repr__  s    //@CCr7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   DeltaCRLIndicator.public_bytes  r   r7   r   Nr   rI   r   r   rs   )r`   ra   rb   rc   r   DELTA_CRL_INDICATORrU   rT   r   r   r   r   r   r&   rd   rL   r7   r5   rj  rj    s;    

*
*C&    3%D6r7   rj  c                  ~    \ rS rSr\R
                  r    S
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)CRLDistributionPointsi  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   DistributionPointr   s     r5   r   1CRLDistributionPoints.__init__.<locals>.<genexpr>        
6IJq+,,6Ir   ?distribution_points must be a list of DistributionPoint objectsr{   r   r   _distribution_pointsr=   distribution_pointss     r5   rT   CRLDistributionPoints.__init__  F     ##67 
6I
 
 
  
 %8!r7   r  c                "    SU R                    S3$ )Nz<CRLDistributionPoints(r   r  rq   s    r5   r   CRLDistributionPoints.__repr__  s    ()B)B(C2FFr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   ry  r   r  r   s     r5   r   CRLDistributionPoints.__eq__  s-    %!677!!((E,F,FFFr7   c                >    [        [        U R                  5      5      $ r$   r   r   r  rq   s    r5   r   CRLDistributionPoints.__hash__      E$33455r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   "CRLDistributionPoints.public_bytes  r   r7   r  Nr  zIterable[DistributionPoint]rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   CRL_DISTRIBUTION_POINTSrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   ry  ry    sN    

.
.C8#>8	8 &<&"GX{GG66r7   ry  c                  ~    \ rS rSr\R
                  r    S
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)FreshestCRLi  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r|  r   s     r5   r   'FreshestCRL.__init__.<locals>.<genexpr>  r  r   r  r  r  s     r5   rT   FreshestCRL.__init__  r  r7   r  c                "    SU R                    S3$ )Nz<FreshestCRL(r   r  rq   s    r5   r   FreshestCRL.__repr__-  s    t889<<r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   FreshestCRL.__eq__0  s,    %--!!((E,F,FFFr7   c                >    [        [        U R                  5      5      $ r$   r  rq   s    r5   r   FreshestCRL.__hash__6  r  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   FreshestCRL.public_bytes9  r   r7   r  Nr  r   r   rI   rs   )r`   ra   rb   rc   r   FRESHEST_CRLrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r    sM    

#
#C8#>8	8 &<&"GX{=G66r7   r  c                      \ rS rSr          SS jrSS jrSS jrSS jr\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       rS
rg)r}  i=  c                   U(       a  U(       a  [        S5      eU(       d  U(       d  U(       d  [        S5      eUb-  [        U5      n[        S U 5       5      (       d  [        S5      eU(       a   [	        U[
        5      (       d  [        S5      eUb-  [        U5      n[        S U 5       5      (       d  [        S5      eU(       a7  [	        U[        5      (       a  [        S U 5       5      (       d  [        S	5      eU(       a3  [        R                  U;   d  [        R                  U;   a  [        S
5      eXl
        X l        X0l        X@l        g )NzOYou cannot provide both full_name and relative_name, at least one must be None.z?Either full_name, relative_name or crl_issuer must be provided.c              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r   r   s     r5   r   -DistributionPoint.__init__.<locals>.<genexpr>R  s     E9az![119r   z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r   r   s     r5   r   r  _  s     F:az![11:r   z2crl_issuer must be None or a list of general namesc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   ReasonFlagsr   s     r5   r   r  f  s     C7az![117r   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   r{   r   r   r%   r   	frozensetr  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r=   	full_namerelative_namereasons
crl_issuers        r5   rT   DistributionPoint.__init__>  s6    *  z 
  YIE9EEEE  m-FGGG  !j)JF:FFFH  7I..C7CCCNOO##w.**g5$ 
 $+%r7   c                $    SR                  U 5      $ )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>formatrq   s    r5   r   DistributionPoint.__repr__x  s    **0&,	
r7   c                *   [        U[        5      (       d  [        $ U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R
                  UR
                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r}  r   r  r  r  r  r   s     r5   r   DistributionPoint.__eq__  st    %!233!! NNeoo- 4""e&9&994-4 5#3#33		
r7   c                    U R                   b  [        U R                   5      nOS nU R                  b  [        U R                  5      nOS n[        XR                  U R
                  U45      $ r$   )r  r   r  r   r  r  )r=   fnr  s      r5   r   DistributionPoint.__hash__  sX    >>%16t~~1FBB??&9>t9OJJR++T\\:FGGr7   c                    U R                   $ r$   r  rq   s    r5   r  DistributionPoint.full_name      r7   c                    U R                   $ r$   r  rq   s    r5   r  DistributionPoint.relative_name  rL  r7   c                    U R                   $ r$   )r  rq   s    r5   r  DistributionPoint.reasons  s    }}r7   c                    U R                   $ r$   )r  rq   s    r5   r  DistributionPoint.crl_issuer  r   r7   )r  r  r  r  N)
r  r   r   RelativeDistinguishedName | Noner  frozenset[ReasonFlags] | Noner  r   rJ   r^   r   r   rI   r   rJ   r  rJ   r  )r`   ra   rb   rc   rT   r   r   r   r   r  r  r  r  rd   rL   r7   r5   r}  r}  =  s    8&/8& 88& /	8&
 18& 
8&t
	
H   # #      r7   r}  c                  <    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrg)r  i  r  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLrL   N)r`   ra   rb   rc   r  key_compromiseca_compromiseaffiliation_changedr  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiser  rd   rL   r7   r5   r  r    s8    K$N"M.J3(."M%Or7   r  )                        r  r  r  r  r  r  r  r  	   
   c                      \ rS rSr\R
                  r      SS jrSS jrSS jr	SS jr
\SS j5       r\SS j5       rSS jrS	rg
)PolicyConstraintsi  c                    Ub   [        U[        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      eUc  Uc  [        S5      eXl        X l        g )Nz>require_explicit_policy must be a non-negative integer or Nonez=inhibit_policy_mapping must be a non-negative integer or NonezSAt least one of require_explicit_policy and inhibit_policy_mapping must not be None)r%   rK   r   r   _require_explicit_policy_inhibit_policy_mapping)r=   require_explicit_policyinhibit_policy_mappings      r5   rT   PolicyConstraints.__init__  s    
 #.z#S8
 8
  
 "-j"C7
 7
 O  ").E.M: 
 )@%'=$r7   c                $    SR                  U 5      $ )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r  rq   s    r5   r   PolicyConstraints.__repr__  s    	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r   s     r5   r   PolicyConstraints.__eq__  sK    %!233!! ((E,I,II L++u/K/KK	
r7   c                D    [        U R                  U R                  45      $ r$   )r   r  r  rq   s    r5   r   PolicyConstraints.__hash__!  s#    ))4+F+FG
 	
r7   c                    U R                   $ r$   )r  rq   s    r5   r  )PolicyConstraints.require_explicit_policy&  s    ,,,r7   c                    U R                   $ r$   )r  rq   s    r5   r  (PolicyConstraints.inhibit_policy_mapping*      +++r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   PolicyConstraints.public_bytes.  r   r7   )r  r  N)r  r   r  r   rJ   r^   r   r   rI   r   rs   )r`   ra   rb   rc   r   POLICY_CONSTRAINTSrU   rT   r   r   r   r   r  r  r&   rd   rL   r7   r5   r  r    sj    

)
)C>!+> !+> 
	>:



 - - , ,6r7   r  c                  v    \ rS rSr\R
                  rS
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)CertificatePoliciesi2  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   PolicyInformationr   s     r5   r   /CertificatePolicies.__init__.<locals>.<genexpr>7  s     FX:a!233Xr   z;Every item in the policies list must be a PolicyInformation)r{   r   r   	_policies)r=   policiess     r5   rT   CertificatePolicies.__init__5  s3    >FXFFFM  "r7   r  c                "    SU R                    S3$ )Nz<CertificatePolicies(r   r  rq   s    r5   r   CertificatePolicies.__repr__@      &t~~&6b99r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   CertificatePolicies.__eq__C  s)    %!455!!~~00r7   c                >    [        [        U R                  5      5      $ r$   )r   r   r  rq   s    r5   r   CertificatePolicies.__hash__I      E$..)**r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&    CertificatePolicies.public_bytesL  r   r7   r
  N)r  zIterable[PolicyInformation]rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   CERTIFICATE_POLICIESrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r  2  s9    

+
+C" &<K%H"GX{:1+6r7   r  c                  t    \ rS rSr      S
S jrSS jrSS jrSS jr\SS j5       r	\  SS j5       r
Srg	)r  iP  c                    [        U[        5      (       d  [        S5      eXl        Ub-  [	        U5      n[        S U 5       5      (       d  [        S5      eX l        g )Nz-policy_identifier must be an ObjectIdentifierc              3  N   #    U  H  n[        U[        [        45      v   M     g 7fr$   )r%   r]   
UserNoticer   s     r5   r   -PolicyInformation.__init__.<locals>.<genexpr>]  s#      :KQ
1sJ/00:Ks   #%zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r%   r   r   _policy_identifierr{   r   _policy_qualifiers)r=   policy_identifierpolicy_qualifierss      r5   rT   PolicyInformation.__init__Q  sm    
 +-=>>KLL"3( $%6 7 :K    1 
 #4r7   c                <    SU R                    SU R                   S3$ )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r   )r  r  rq   s    r5   r   PolicyInformation.__repr__g  s.    3D4J4J3K L!!%!7!7 8<	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r   s     r5   r   PolicyInformation.__eq__m  sK    %!233!! ""e&=&== B&&%*A*AA	
r7   c                z    U R                   b  [        U R                   5      nOS n[        U R                  U45      $ r$   )r  r   r   r  )r=   pqs     r5   r   PolicyInformation.__hash__v  s9    !!-t--.BBT++R011r7   c                    U R                   $ r$   )r  rq   s    r5   r  #PolicyInformation.policy_identifier~      &&&r7   c                    U R                   $ r$   )r  rq   s    r5   r  #PolicyInformation.policy_qualifiers       &&&r7   )r  r  N)r  r   r  z!Iterable[str | UserNotice] | NonerJ   r^   r   r   rI   rP  )rJ   zlist[str | UserNotice] | None)r`   ra   rb   rc   rT   r   r   r   r   r  r  rd   rL   r7   r5   r  r  P  sb    4+4 =4 
	4,

2 ' ' '	&' 'r7   r  c                  p    \ rS rSr      S
S jrSS jrSS jrSS jr\SS j5       r	\SS j5       r
Srg	)r  i  c                j    U(       a   [        U[        5      (       d  [        S5      eXl        X l        g )Nz2notice_reference must be None or a NoticeReference)r%   NoticeReferencer   _notice_reference_explicit_text)r=   notice_referenceexplicit_texts      r5   rT   UserNotice.__init__  s8    
 Jo%
 %
 D  "2+r7   c                >    SU R                    SU R                  < S3$ )Nz<UserNotice(notice_reference=z, explicit_text=r   )r1  r2  rq   s    r5   r   UserNotice.__repr__  s.    +D,A,A+B C!//2"6	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r1  r2  r   s     r5   r   UserNotice.__eq__  sI    %,,!! !!U%;%;; :""e&9&99	
r7   c                D    [        U R                  U R                  45      $ r$   )r   r1  r2  rq   s    r5   r   UserNotice.__hash__  s    T**D,>,>?@@r7   c                    U R                   $ r$   )r/  rq   s    r5   r1  UserNotice.notice_reference      %%%r7   c                    U R                   $ r$   )r0  rq   s    r5   r2  UserNotice.explicit_text  rL  r7   )r0  r/  N)r1  NoticeReference | Noner2  
str | NonerJ   r^   r   r   rI   )rJ   r?  rJ   r@  )r`   ra   rb   rc   rT   r   r   r   r   r1  r2  rd   rL   r7   r5   r  r    s[    ,0, ", 
	,

A & & # #r7   r  c                  p    \ rS rSr      S
S jrSS jrSS jrSS jr\SS j5       r	\SS j5       r
Srg	)r.  i  c                v    Xl         [        U5      n[        S U 5       5      (       d  [        S5      eX l        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   rK   r   s     r5   r   +NoticeReference.__init__.<locals>.<genexpr>  s     >~!:a%%~r   z)notice_numbers must be a list of integers)_organizationr{   r   r   _notice_numbers)r=   organizationnotice_numberss      r5   rT   NoticeReference.__init__  s7    
 *n->~>>>GHH-r7   c                >    SU R                   < SU R                   S3$ )Nz<NoticeReference(organization=z, notice_numbers=r   )rH  rI  rq   s    r5   r   NoticeReference.__repr__  s.    ,T->->,A B"112"6	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r.  r   rH  rI  r   s     r5   r   NoticeReference.__eq__  sI    %11!! !3!33 <##u';';;	
r7   c                V    [        U R                  [        U R                  5      45      $ r$   )r   rH  r   rI  rq   s    r5   r   NoticeReference.__hash__  s#    T&&d.A.A(BCDDr7   c                    U R                   $ r$   )rF  rq   s    r5   rH  NoticeReference.organization      !!!r7   c                    U R                   $ r$   )rG  rq   s    r5   rI  NoticeReference.notice_numbers  r   r7   )rG  rF  N)rH  r@  rI  zIterable[int]rJ   r^   r   r   rI   rA  )rJ   z	list[int])r`   ra   rb   rc   rT   r   r   r   r   rH  rI  rd   rL   r7   r5   r.  r.    s[    
. 
. &
. 
	
.

E " " $ $r7   r.  c                  v    \ rS rSr\R
                  rS
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)ExtendedKeyUsagei  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   r   r   s     r5   r   ,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s     CFq:a!122Fr   z9Every item in the usages list must be an ObjectIdentifier)r{   r   r   _usages)r=   usagess     r5   rT   ExtendedKeyUsage.__init__  s3    fCFCCCK  r7   r\  c                "    SU R                    S3$ )Nz<ExtendedKeyUsage(r   r\  rq   s    r5   r   ExtendedKeyUsage.__repr__      #DLL>44r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   rW  r   r\  r   s     r5   r   ExtendedKeyUsage.__eq__  s)    %!122!!||u}},,r7   c                >    [        [        U R                  5      5      $ r$   )r   r   r\  rq   s    r5   r   ExtendedKeyUsage.__hash__  s    E$,,'((r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   ExtendedKeyUsage.public_bytes  r   r7   r`  N)r]  Iterable[ObjectIdentifier]rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   EXTENDED_KEY_USAGErU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   rW  rW    s9    

)
)C &<I%F"GX{5-)6r7   rW  c                  T    \ rS rSr\R
                  rSS jrS	S jrS
S jr	SS jr
Srg)OCSPNoChecki  c                :    [        U[        5      (       d  [        $ gNT)r%   rl  r   r   s     r5   r   OCSPNoCheck.__eq__  s    %--!!r7   c                     [        [        5      $ r$   )r   rl  rq   s    r5   r   OCSPNoCheck.__hash__  s    K  r7   c                    g)Nz<OCSPNoCheck()>rL   rq   s    r5   r   OCSPNoCheck.__repr__  s     r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   OCSPNoCheck.public_bytes	  r   r7   rL   Nr   rI   r   rs   )r`   ra   rb   rc   r   OCSP_NO_CHECKrU   r   r   r   r&   rd   rL   r7   r5   rl  rl    s!    

$
$C!!6r7   rl  c                  T    \ rS rSr\R
                  rSS jrS	S jrS
S jr	SS jr
Srg)PrecertPoisoni  c                :    [        U[        5      (       d  [        $ grn  )r%   rx  r   r   s     r5   r   PrecertPoison.__eq__  s    %//!!r7   c                     [        [        5      $ r$   )r   rx  rq   s    r5   r   PrecertPoison.__hash__  s    M""r7   c                    g)Nz<PrecertPoison()>rL   rq   s    r5   r   PrecertPoison.__repr__  s    "r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   PrecertPoison.public_bytes  r   r7   rL   Nr   rI   r   rs   )r`   ra   rb   rc   r   PRECERT_POISONrU   r   r   r   r&   rd   rL   r7   r5   rx  rx    s!    

%
%C##6r7   rx  c                  v    \ rS rSr\R
                  rS
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)
TLSFeaturei   c                    [        U5      n[        S U 5       5      (       a  [        U5      S:X  a  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   TLSFeatureTyper   s     r5   r   &TLSFeature.__init__.<locals>.<genexpr>&  s     D8aJq.118r   r   z@features must be a list of elements from the TLSFeatureType enum)r{   r   r:   r   	_features)r=   featuress     r5   rT   TLSFeature.__init__#  sA    >D8DDD8}! 
 "r7   r  c                "    SU R                    S3$ )Nz<TLSFeature(features=r   r  rq   s    r5   r   TLSFeature.__repr__2  r  r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   TLSFeature.__eq__5  s(    %,,!!~~00r7   c                >    [        [        U R                  5      5      $ r$   )r   r   r  rq   s    r5   r   TLSFeature.__hash__;  r  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   TLSFeature.public_bytes>  r   r7   r  N)r  zIterable[TLSFeatureType]rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   TLS_FEATURErU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r     s9    

"
"C" &<K%H"GX{:1+6r7   r  c                      \ rS rSrSrSrSrg)r  iB  r     rL   N)r`   ra   rb   rc   status_requeststatus_request_v2rd   rL   r7   r5   r  r  B  s     N r7   r  c                  r    \ rS rSr\R
                  rS
S jrSS jrSS jr	SS jr
\SS j5       rSS jrSrg	)InhibitAnyPolicyiP  c                r    [        U[        5      (       d  [        S5      eUS:  a  [        S5      eXl        g )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r%   rK   r   r   _skip_certs)r=   
skip_certss     r5   rT   InhibitAnyPolicy.__init__S  s4    *c**;<<>HII%r7   c                "    SU R                    S3$ )Nz<InhibitAnyPolicy(skip_certs=r   )r  rq   s    r5   r   InhibitAnyPolicy.__repr__\  s    .t.?rBBr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   InhibitAnyPolicy.__eq___  s+    %!122!!%"2"222r7   c                ,    [        U R                  5      $ r$   )r   r  rq   s    r5   r   InhibitAnyPolicy.__hash__e  r   r7   c                    U R                   $ r$   r  rq   s    r5   r  InhibitAnyPolicy.skip_certsh  r   r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   InhibitAnyPolicy.public_bytesl  r   r7   r  N)r  rK   rJ   r^   r   r   rI   rs   )r`   ra   rb   rc   r   INHIBIT_ANY_POLICYrU   rT   r   r   r   r   r  r&   rd   rL   r7   r5   r  r  P  s;    

)
)C&C3%    6r7   r  c                  :   \ rS rSr\R
                  r                    SS jr\SS j5       r	\SS j5       r
\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       rSS jrSS jrSS jrSS jrSrg)KeyUsageip  c
                    U(       d  U(       d  U	(       a  [        S5      eXl        X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl	        g )NzKencipher_only and decipher_only can only be true when key_agreement is true)
r   _digital_signature_content_commitment_key_encipherment_data_encipherment_key_agreement_key_cert_sign	_crl_sign_encipher_only_decipher_only)
r=   digital_signaturecontent_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlys
             r5   rT   KeyUsage.__init__s  sT     -=( 
 #4#5 !1"3++!++r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.digital_signature  r(  r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.content_commitment  s    '''r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.key_encipherment  r<  r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.data_encipherment  r(  r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.key_agreement  rL  r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.key_cert_sign  rL  r7   c                    U R                   $ r$   )r  rq   s    r5   r  KeyUsage.crl_sign      ~~r7   c                R    U R                   (       d  [        S5      eU R                  $ )Nz7encipher_only is undefined unless key_agreement is true)r  r   r  rq   s    r5   r  KeyUsage.encipher_only  )    !!I  &&&r7   c                R    U R                   (       d  [        S5      eU R                  $ )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  rq   s    r5   r  KeyUsage.decipher_only  r  r7   c                $    U R                   nU R                  nSU R                   SU R                   SU R
                   SU R                   SU R                   SU R                   SU R                   S	U S
U S3$ ! [         a    SnSn Ntf = f)NFz<KeyUsage(digital_signature=z, content_commitment=z, key_encipherment=z, data_encipherment=z, key_agreement=z, key_cert_sign=z, crl_sign=z, encipher_only=z, decipher_only=r   )
r  r  r   r  r  r  r  r  r  r  )r=   r  r  s      r5   r   KeyUsage.__repr__  s    	" ..M ..M +4+A+A*B C""&"9"9!: ;  $ 5 56 7!!%!7!7 8 9!//0 1!//0DMM? K*O+;M?"N	
  	" "M!M	"s   A> >BBc                j   [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r  r  r  r  r  r  r  r   s     r5   r   KeyUsage.__eq__  s    %**!! ""e&=&== <''5+C+CC<%%)?)??< &&%*A*AA< ""e&9&99	<
 ""e&9&99< /< ##u';';;< ##u';';;
	
r7   c                    [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  4	5      $ r$   )
r   r  r  r  r  r  r  r  r  r  rq   s    r5   r   KeyUsage.__hash__  sc    &&''%%&&""""####

 	
r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   KeyUsage.public_bytes  r   r7   )	r  r  r  r  r  r  r  r  r  N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   rJ   r^   rg  r   r   rI   rs   )r`   ra   rb   rc   r   	KEY_USAGErU   rT   r   r  r  r  r  r  r  r  r  r  r   r   r   r&   rd   rL   r7   r5   r  r  p  s<   

 
 C,, !, 	,
  , , , , , , 
,8 ' ' ( ( & & ' ' # # # #   ' ' ' '
*
 
6r7   r  c                      \ rS rSr\R
                  r      SS jr\SS j5       r	\SS j5       r
SS jrSS jrSS jrSS jrS	rg
)PrivateKeyUsagePeriodi  c                   [        U[        R                  5      (       d  Ub  [        S5      e[        U[        R                  5      (       d  Ub  [        S5      eUc  Uc  [        S5      eUb  Ub  X:  a  [        S5      eXl        X l        g )Nz.not_before must be a datetime.datetime or Nonez-not_after must be a datetime.datetime or Nonez9At least one of not_before and not_after must not be Nonez#not_before must be before not_after)r%   datetimer   r   _not_before
_not_after)r=   
not_before	not_afters      r5   rT   PrivateKeyUsagePeriod.__init__  s     :x'8'899&LMM 9h&7&788%KLL)"3K 
 "%&BCC%#r7   c                    U R                   $ r$   )r  rq   s    r5   r   PrivateKeyUsagePeriod.not_before  r   r7   c                    U R                   $ r$   )r  rq   s    r5   r  PrivateKeyUsagePeriod.not_after  r  r7   c                <    SU R                    SU R                   S3$ )Nz"<PrivateKeyUsagePeriod(not_before=z, not_after=r   )r  r  rq   s    r5   r   PrivateKeyUsagePeriod.__repr__   s*    00A B(,	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r   s     r5   r   PrivateKeyUsagePeriod.__eq__&  sD    %!677!! OOu/// 2%//1	
r7   c                D    [        U R                  U R                  45      $ r$   )r   r  r  rq   s    r5   r   PrivateKeyUsagePeriod.__hash__/  s    T__dnn566r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   "PrivateKeyUsagePeriod.public_bytes2  r   r7   )r  r  N)r  datetime.datetime | Noner  r  rJ   r^   )rJ   r  r   r   rI   rs   )r`   ra   rb   rc   r   PRIVATE_KEY_USAGE_PERIODrU   rT   r   r  r  r   r   r   r&   rd   rL   r7   r5   r  r    sk    

/
/C$,$ ,$ 
	$@      

76r7   r  c                      \ rS rSr\R
                  r      SS jrSS jrSS jr	SS jr
SS jrSS jrSS jr\  SS	 j5       r\  SS
 j5       rSS jrSrg)NameConstraintsi6  c                   UbP  [        U5      nU(       d  [        S5      e[        S U 5       5      (       d  [        S5      eU R	                  U5        UbP  [        U5      nU(       d  [        S5      e[        S U 5       5      (       d  [        S5      eU R	                  U5        Uc  Uc  [        S5      eXl        X l        g )Nz3permitted_subtrees must be a non-empty list or Nonec              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r   r   s     r5   r   +NameConstraints.__init__.<locals>.<genexpr>D  s     N;Maz![11;Mr   z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonec              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r   r   s     r5   r   r  R       M;Laz![11;Lr   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)r{   r   r   r   _validate_tree_permitted_subtrees_excluded_subtrees)r=   permitted_subtreesexcluded_subtreess      r5   rT   NameConstraints.__init__9  s    
 )!%&8!9% I  N;MNNN 
  23( $%6 7$ H  M;LMMM 
  12%*;*C# 
 $6 "3r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r   r  r   s     r5   r   NameConstraints.__eq__c  sJ    %11!! ""e&=&== D''5+C+CC	
r7   c                H    U R                  U5        U R                  U5        g r$   )_validate_ip_name_validate_dns_namer=   trees     r5   r  NameConstraints._validate_treel  s    t$%r7   c                H    [        S U 5       5      (       a  [        S5      eg )Nc              3     #    U  HU  n[        U[        5      =(       a9    [        UR                  [        R                  [        R
                  45      (       + v   MW     g 7fr$   )r%   r   r   	ipaddressIPv4NetworkIPv6Networkr   names     r5   r   4NameConstraints._validate_ip_name.<locals>.<genexpr>q  sS      

 	 tY' 

Y22I4I4IJ  s   AAzGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyr   r  s     r5   r  !NameConstraints._validate_ip_namep  s7     

 
 
 
 & 
r7   c                H    [        S U 5       5      (       a  [        S5      eg )Nc              3  n   #    U  H+  n[        U[        5      =(       a    S UR                  ;   v   M-     g7f)*N)r%   r   r   r  s     r5   r   5NameConstraints._validate_dns_name.<locals>.<genexpr>~  s+      
HLJtW%;#*;;s   35zDDNSName name constraints must not contain the '*' wildcard character)r  r   r  s     r5   r  "NameConstraints._validate_dns_name}  s5     
HL
 
 
  
r7   c                <    SU R                    SU R                   S3$ )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r   )r  r   rq   s    r5   r   NameConstraints.__repr__  s.    243J3J2K L!!%!7!7 8<	
r7   c                    U R                   b  [        U R                   5      nOS nU R                  b  [        U R                  5      nOS n[        X45      $ r$   )r  r   r   r   )r=   psess      r5   r   NameConstraints.__hash__  sP    "".16t7N7N1OBB!!-16t7M7M1NBBRH~r7   c                    U R                   $ r$   )r  rq   s    r5   r  "NameConstraints.permitted_subtrees  s     '''r7   c                    U R                   $ r$   )r  rq   s    r5   r   !NameConstraints.excluded_subtrees  r+  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   NameConstraints.public_bytes  r   r7   )r  r  N)r  r   r   r   rJ   r^   r   )r  Iterable[GeneralName]rJ   r^   r   rI   r   rs   )r`   ra   rb   rc   r   NAME_CONSTRAINTSrU   rT   r   r  r  r  r   r   r   r  r   r&   rd   rL   r7   r5   r  r  6  s    

'
'C(48(4 8(4 
	(4T
&
 (	!( (
 '	!' '
6r7   r  c                      \ rS rSr        SS jr\SS j5       r\SS j5       r\SS j5       rSS jr	SS jr
SS jrS	rg
)	Extensioni  c                    [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eXl        X l        X0l        g )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r%   r   r   r   _oid	_critical_value)r=   rU   criticalr   s       r5   rT   Extension.__init__  sL     #/00D  (D))>??	!r7   c                    U R                   $ r$   r*  rq   s    r5   rU   Extension.oid      yyr7   c                    U R                   $ r$   )r+  rq   s    r5   r-  Extension.critical  r  r7   c                    U R                   $ r$   r,  rq   s    r5   r   Extension.value      {{r7   c                V    SU R                    SU R                   SU R                   S3$ )Nz<Extension(oid=z, critical=, value=r   )rU   r-  r   rq   s    r5   r   Extension.__repr__  s2    dhhZ{4==/ BZZL$	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )r%   r(  r   rU   r-  r   r   s     r5   r   Extension.__eq__  sV    %++!! HH		! */*

ekk)	
r7   c                Z    [        U R                  U R                  U R                  45      $ r$   )r   rU   r-  r   rq   s    r5   r   Extension.__hash__  s     TXXt}}djj9::r7   )r+  r*  r,  N)rU   r   r-  r   r   r   rJ   r^   rP  rg  )rJ   r   r   r   rI   )r`   ra   rb   rc   rT   r   rU   r-  r   r   r   r   rd   rL   r7   r5   r(  r(    sr    #/3<L	      

;r7   r(  c                  V   \ rS rSrSS jr\" S5      u  rrr\	R                      SS j5       r\	R                      SS j5       r\	R                      SS j5       r\	R                      SS j5       r\	R                      SS j5       r    SS	 jrSS
 jrSS jrSS jrSrg)GeneralNamesi  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r   r   s     r5   r   (GeneralNames.__init__.<locals>.<genexpr>  s     E}!:a--}r   z^Every item in the general_names list must be an object conforming to the GeneralName interface)r{   r   r   _general_namesr=   general_namess     r5   rT   GeneralNames.__init__  s8    ]+E}EEEA 
 ,r7   rE  c                    g r$   rL   r=   types     r5   get_values_for_type GeneralNames.get_values_for_type       r7   c                    g r$   rL   rJ  s     r5   rL  rM         r7   c                    g r$   rL   rJ  s     r5   rL  rM         "%r7   c                    g r$   rL   rJ  s     r5   rL  rM         !$r7   c                    g r$   rL   rJ  s     r5   rL  rM         r7   c                   ^ U4S jU  5       nT[         :w  a  U Vs/ s H  o3R                  PM     sn$ [        U5      $ s  snf )Nc              3  N   >#    U  H  n[        UT5      (       d  M  Uv   M     g 7fr$   )r%   )r   irK  s     r5   r   3GeneralNames.get_values_for_type.<locals>.<genexpr>  s     74a:a#64s   %	%)r   r   r{   )r=   rK  objsrY  s    `  r5   rL  rM    s=    & 8479%)*TGGT**Dz +s   ?c                "    SU R                    S3$ )Nz<GeneralNames(r   rE  rq   s    r5   r   GeneralNames.__repr__  s     3 34B77r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   rA  r   rE  r   s     r5   r   GeneralNames.__eq__  s,    %..!!""e&:&:::r7   c                >    [        [        U R                  5      5      $ r$   )r   r   rE  rq   s    r5   r   GeneralNames.__hash__%  s    E$--.//r7   r]  NrG  r%  rJ   r^   rK  zBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]rJ   	list[str]rK  ztype[DirectoryName]rJ   z
list[Name]rK  ztype[RegisteredID]rJ   zlist[ObjectIdentifier]rK  ztype[IPAddress]rJ   zlist[_IPAddressTypes]rK  ztype[OtherName]rJ   zlist[OtherName]rK  ztype[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]rJ   zYlist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]r   r   rI   )r`   ra   rb   rc   rT   rM   r   r   r   typingoverloadrL  r   r   r   rd   rL   r7   r5   rA  rA    s   , &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 *	!08;0r7   rA  c                  x   \ rS rSr\R
                  rSS jr\" S5      u  r	r
r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r    SS	 jrSS
 jrSS jrSS jrSS jrSrg)SubjectAlternativeNamei)  c                $    [        U5      U l        g r$   rA  rE  rF  s     r5   rT   SubjectAlternativeName.__init__,      *=9r7   rE  c                    g r$   rL   rJ  s     r5   rL  *SubjectAlternativeName.get_values_for_type1  rN  r7   c                    g r$   rL   rJ  s     r5   rL  rt  9  rP  r7   c                    g r$   rL   rJ  s     r5   rL  rt  ?  rR  r7   c                    g r$   rL   rJ  s     r5   rL  rt  E  rT  r7   c                    g r$   rL   rJ  s     r5   rL  rt  J  rV  r7   c                8    U R                   R                  U5      $ r$   rE  rL  rJ  s     r5   rL  rt  O        ""66t<<r7   c                "    SU R                    S3$ )Nz<SubjectAlternativeName(r   r]  rq   s    r5   r   SubjectAlternativeName.__repr__a  s    )$*=*=)>bAAr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   rn  r   rE  r   s     r5   r   SubjectAlternativeName.__eq__d  s-    %!788!!""e&:&:::r7   c                ,    [        U R                  5      $ r$   r   rE  rq   s    r5   r   SubjectAlternativeName.__hash__j      D''((r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   #SubjectAlternativeName.public_bytesm  r   r7   r]  Nrc  rd  rf  rg  rh  ri  rj  r   r   rI   rs   )r`   ra   rb   rc   r   SUBJECT_ALTERNATIVE_NAMErU   rT   rM   r   r   r   rk  rl  rL  r   r   r   r&   rd   rL   r7   r5   rn  rn  )  s"   

/
/C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$B;)6r7   rn  c                  x   \ rS rSr\R
                  rSS jr\" S5      u  r	r
r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r    SS	 jrSS
 jrSS jrSS jrSS jrSrg)IssuerAlternativeNameiq  c                $    [        U5      U l        g r$   rp  rF  s     r5   rT   IssuerAlternativeName.__init__t  rr  r7   rE  c                    g r$   rL   rJ  s     r5   rL  )IssuerAlternativeName.get_values_for_typey  rN  r7   c                    g r$   rL   rJ  s     r5   rL  r    rP  r7   c                    g r$   rL   rJ  s     r5   rL  r    rR  r7   c                    g r$   rL   rJ  s     r5   rL  r    rT  r7   c                    g r$   rL   rJ  s     r5   rL  r    rV  r7   c                8    U R                   R                  U5      $ r$   rz  rJ  s     r5   rL  r    r{  r7   c                "    SU R                    S3$ )Nz<IssuerAlternativeName(r   r]  rq   s    r5   r   IssuerAlternativeName.__repr__  s    ()<)<(=R@@r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   rE  r   s     r5   r   IssuerAlternativeName.__eq__  s-    %!677!!""e&:&:::r7   c                ,    [        U R                  5      $ r$   r  rq   s    r5   r   IssuerAlternativeName.__hash__  r  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   "IssuerAlternativeName.public_bytes  r   r7   r]  Nrc  rd  rf  rg  rh  ri  rj  r   r   rI   rs   )r`   ra   rb   rc   r   ISSUER_ALTERNATIVE_NAMErU   rT   rM   r   r   r   rk  rl  rL  r   r   r   r&   rd   rL   r7   r5   r  r  q  s"   

.
.C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$A;)6r7   r  c                  x   \ rS rSr\R
                  rSS jr\" S5      u  r	r
r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r\R                      SS j5       r    SS	 jrSS
 jrSS jrSS jrSS jrSrg)CertificateIssueri  c                $    [        U5      U l        g r$   rp  rF  s     r5   rT   CertificateIssuer.__init__  rr  r7   rE  c                    g r$   rL   rJ  s     r5   rL  %CertificateIssuer.get_values_for_type  rN  r7   c                    g r$   rL   rJ  s     r5   rL  r    rP  r7   c                    g r$   rL   rJ  s     r5   rL  r    rR  r7   c                    g r$   rL   rJ  s     r5   rL  r    rT  r7   c                    g r$   rL   rJ  s     r5   rL  r    rV  r7   c                8    U R                   R                  U5      $ r$   rz  rJ  s     r5   rL  r    r{  r7   c                "    SU R                    S3$ )Nz<CertificateIssuer(r   r]  rq   s    r5   r   CertificateIssuer.__repr__  s    $T%8%8$9<<r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   rE  r   s     r5   r   CertificateIssuer.__eq__  s-    %!233!!""e&:&:::r7   c                ,    [        U R                  5      $ r$   r  rq   s    r5   r   CertificateIssuer.__hash__  r  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   CertificateIssuer.public_bytes  r   r7   r]  Nrc  rd  rf  rg  rh  ri  rj  r   r   rI   rs   )r`   ra   rb   rc   r   CERTIFICATE_ISSUERrU   rT   rM   r   r   r   rk  rl  rL  r   r   r   r&   rd   rL   r7   r5   r  r    s!   

1
1C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$=;)6r7   r  c                  r    \ rS rSr\R
                  rS
S jrSS jrSS jr	SS jr
\SS j5       rSS jrSrg	)	CRLReasoni  c                P    [        U[        5      (       d  [        S5      eXl        g )Nz*reason must be an element from ReasonFlags)r%   r  r   _reason)r=   reasons     r5   rT   CRLReason.__init__  s     &+..HIIr7   c                "    SU R                    S3$ )Nz<CRLReason(reason=r   r  rq   s    r5   r   CRLReason.__repr__
  rb  r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   CRLReason.__eq__  s(    %++!!{{ell**r7   c                ,    [        U R                  5      $ r$   )r   r  rq   s    r5   r   CRLReason.__hash__  r  r7   c                    U R                   $ r$   r  rq   s    r5   r  CRLReason.reason  r  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   CRLReason.public_bytes  r   r7   r  N)r  r  rJ   r^   r   r   rI   )rJ   r  rs   )r`   ra   rb   rc   r   
CRL_REASONrU   rT   r   r   r   r   r  r&   rd   rL   r7   r5   r  r    s:    

)
)C5+!  6r7   r  c                      \ rS rSr\R
                  rSS jrSS jrSS jr	SS jr
\SS j5       r\SS j5       rSS jrS	rg
)InvalidityDatei  c                d    [        U[        R                  5      (       d  [        S5      eXl        g )Nz+invalidity_date must be a datetime.datetime)r%   r  r   _invalidity_date)r=   invalidity_dates     r5   rT   InvalidityDate.__init__!  s'    /8+<+<==IJJ /r7   c                "    SU R                    S3$ )Nz <InvalidityDate(invalidity_date=r   r  rq   s    r5   r   InvalidityDate.__repr__'  s    1$2G2G1HKKr7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   InvalidityDate.__eq__*  s,    %00!!##u'<'<<<r7   c                ,    [        U R                  5      $ r$   )r   r  rq   s    r5   r   InvalidityDate.__hash__0  s    D(())r7   c                    U R                   $ r$   r  rq   s    r5   r  InvalidityDate.invalidity_date3  rO  r7   c                    U R                   R                  c1  U R                   R                  [        R                  R
                  S9$ U R                   R                  [        R                  R
                  S9$ )N)tzinfo)tz)r  r  replacer  timezoneutc
astimezonerq   s    r5   invalidity_date_utc"InvalidityDate.invalidity_date_utc7  s`      ''/((008I8I8M8M0NN((33x7H7H7L7L3MMr7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   InvalidityDate.public_bytes>  r   r7   r  N)r  datetime.datetimerJ   r^   r   r   rI   )rJ   r  rs   )r`   ra   rb   rc   r   INVALIDITY_DATErU   rT   r   r   r   r   r  r  r&   rd   rL   r7   r5   r  r    sQ    

.
.C0L=* % % N N6r7   r  c                  ~    \ rS rSr\R
                  r    S
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	))PrecertificateSignedCertificateTimestampsiB  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r%   r   r   scts     r5   r   EPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>J  "      
4 s6774r   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestampr{   r   r   _signed_certificate_timestampsr=   signed_certificate_timestampss     r5   rT   2PrecertificateSignedCertificateTimestamps.__init__E  G     )--J(K% 
4
 
 
 /  /L+r7   r  c                     S[        U 5       S3$ )Nz+<PrecertificateSignedCertificateTimestamps(r   r{   rq   s    r5   r   2PrecertificateSignedCertificateTimestamps.__repr__X  s    <T$ZLKKr7   c                >    [        [        U R                  5      5      $ r$   r   r   r  rq   s    r5   r   2PrecertificateSignedCertificateTimestamps.__hash__[      E$==>??r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   0PrecertificateSignedCertificateTimestamps.__eq__^  s4    %!JKK!! //334	
r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   6PrecertificateSignedCertificateTimestamps.public_bytesg  r   r7   r  Nr  z$Iterable[SignedCertificateTimestamp]rJ   r^   r   rI   r   rs   )r`   ra   rb   rc   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r  B  sS    

<
<CL'KL 
L &<(&"GX{L@
6r7   r  c                  ~    \ rS rSr\R
                  r    S
S jr\" S5      u  r	r
rSS jrSS jrSS jrSS jrSrg	)SignedCertificateTimestampsik  c                j    [        U5      n[        S U 5       5      (       d  [        S5      eXl        g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r  r  s     r5   r   7SignedCertificateTimestamps.__init__.<locals>.<genexpr>s  r  r   r  r  r  s     r5   rT   $SignedCertificateTimestamps.__init__n  r  r7   r  c                     S[        U 5       S3$ )Nz<SignedCertificateTimestamps(r   r  rq   s    r5   r   $SignedCertificateTimestamps.__repr__  s    .tDzl"==r7   c                >    [        [        U R                  5      5      $ r$   r  rq   s    r5   r   $SignedCertificateTimestamps.__hash__  r  r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   "SignedCertificateTimestamps.__eq__  s4    %!<==!! //334	
r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   (SignedCertificateTimestamps.public_bytes  r   r7   r  Nr  r   rI   r   rs   )r`   ra   rb   rc   r   SIGNED_CERTIFICATE_TIMESTAMPSrU   rT   rM   r   r   r   r   r   r   r&   rd   rL   r7   r5   r  r  k  sR    

4
4CL'KL 
L &<(&"GX{>@
6r7   r  c                  r    \ rS rSr\R
                  rS
S jrSS jrSS jr	SS jr
\SS j5       rSS jrSrg	)	OCSPNoncei  c                P    [        U[        5      (       d  [        S5      eXl        g )Nznonce must be bytes)r%   rt   r   _nonce)r=   nonces     r5   rT   OCSPNonce.__init__  s     %''122r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r  r   s     r5   r   OCSPNonce.__eq__  s(    %++!!zzU[[((r7   c                ,    [        U R                  5      $ r$   )r   r  rq   s    r5   r   OCSPNonce.__hash__  s    DJJr7   c                $    SU R                   < S3$ )Nz<OCSPNonce(nonce=r   )r  rq   s    r5   r   OCSPNonce.__repr__  s    "4::.33r7   c                    U R                   $ r$   r  rq   s    r5   r  OCSPNonce.nonce  r8  r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   OCSPNonce.public_bytes  r   r7   r  N)r  rt   rJ   r^   r   rI   r   rs   )r`   ra   rb   rc   r   NONCErU   rT   r   r   r   r   r  r&   rd   rL   r7   r5   r  r    s:    

 
 C) 4  6r7   r  c                  h    \ rS rSr\R
                  rS
S jrSS jrSS jr	SS jr
SS jrSS jrSrg	)OCSPAcceptableResponsesi  c                j    [        U5      n[        S U 5       5      (       a  [        S5      eXl        g )Nc              3  L   #    U  H  n[        U[        5      (       + v   M     g 7fr$   rZ  )r   rs     r5   r   3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s     FIq:a!1222Is   "$z'All responses must be ObjectIdentifiers)r{   r  r   
_responses)r=   	responsess     r5   rT    OCSPAcceptableResponses.__init__  s-    O	FIFFFEFF#r7   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r$   )r%   r  r   r"  r   s     r5   r   OCSPAcceptableResponses.__eq__  s+    %!899!!%"2"222r7   c                >    [        [        U R                  5      5      $ r$   )r   r   r"  rq   s    r5   r    OCSPAcceptableResponses.__hash__  s    E$//*++r7   c                "    SU R                    S3$ )Nz#<OCSPAcceptableResponses(responses=r   r"  rq   s    r5   r    OCSPAcceptableResponses.__repr__  s    4T__4ERHHr7   c                ,    [        U R                  5      $ r$   )rB   r"  rq   s    r5   r    OCSPAcceptableResponses.__iter__  r   r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   $OCSPAcceptableResponses.public_bytes  r   r7   r*  N)r#  ri  rJ   r^   r   rI   r   )rJ   zIterator[ObjectIdentifier]rs   )r`   ra   rb   rc   r   ACCEPTABLE_RESPONSESrU   rT   r   r   r   r   r&   rd   rL   r7   r5   r  r    s,    

/
/C$3,I%6r7   r  c                     \ rS rSr\R
                  r                SS jrSS jrSS jr	SS jr
\SS j5       r\SS j5       r\SS j5       r\SS	 j5       r\  SS
 j5       r\SS j5       r\SS j5       rSS jrSrg)IssuingDistributionPointi  c           	        Ub  [        U5      nU(       a7  [        U[        5      (       a  [        S U 5       5      (       d  [	        S5      eU(       a3  [
        R                  U;   d  [
        R                  U;   a  [        S5      e[        U[        5      (       a?  [        U[        5      (       a*  [        U[        5      (       a  [        U[        5      (       d  [	        S5      eUUU/n[        U V	s/ s H  o(       d  M  U	PM     sn	5      S:  a  [        S5      e[        UUUUUUU/5      (       d  [        S5      eX0l        X@l        X`l        Xpl        XPl        Xl        X l        g s  sn	f )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   r  r   s     r5   r   4IssuingDistributionPoint.__init__.<locals>.<genexpr>  r  r   z:only_some_reasons must be None or frozenset of ReasonFlagszTunspecified and remove_from_crl are not valid reasons in an IssuingDistributionPointzuonly_contains_user_certs, only_contains_ca_certs, indirect_crl and only_contains_attribute_certs must all be boolean.r  z}Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)r{   r%   r  r   r   r  r  r  r   r   r:   r  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsr  r  )
r=   r  r  only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certscrl_constraintsr   s
             r5   rT   !IssuingDistributionPoint.__init__  sy     YI,i88M;LMMML  ##'88**.??+  /661488<..8$??'  %")
 ?0?aa?01A50  (&-!

 

 %  *B&'=$).K+"3#+A 1s   4
E+E+c                    SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   SU R                   S3$ )	Nz$<IssuingDistributionPoint(full_name=z, relative_name=z, only_contains_user_certs=z, only_contains_ca_certs=z, only_some_reasons=z, indirect_crl=z , only_contains_attribute_certs=r   )r  r  r;  r<  r=  r>  r?  rq   s    r5   r   !IssuingDistributionPoint.__repr__&  s    24>>2B C!//0 1((,(E(E'F G&&*&A&A%B C!!%!7!7 8 9 --. /-112"6		
r7   c                   [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )
r%   r2  r   r  r  r;  r<  r=  r>  r?  r   s     r5   r   IssuingDistributionPoint.__eq__2  s    %!9::!! NNeoo- 3""e&9&993--1O1OO3 ++u/K/KK3 &&%*A*AA	3
 !!U%7%773 22223		
r7   c           	         [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  45      $ r$   )r   r  r  r;  r<  r=  r>  r?  rq   s    r5   r   !IssuingDistributionPoint.__hash__A  sQ    ""--++&&!!22

 
	
r7   c                    U R                   $ r$   r  rq   s    r5   r  "IssuingDistributionPoint.full_nameN  r  r7   c                    U R                   $ r$   r  rq   s    r5   r  &IssuingDistributionPoint.relative_nameR  rL  r7   c                    U R                   $ r$   )r6  rq   s    r5   r;  1IssuingDistributionPoint.only_contains_user_certsV  s    ---r7   c                    U R                   $ r$   )r7  rq   s    r5   r<  /IssuingDistributionPoint.only_contains_ca_certsZ  r  r7   c                    U R                   $ r$   )r:  rq   s    r5   r=  *IssuingDistributionPoint.only_some_reasons^  r+  r7   c                    U R                   $ r$   )r8  rq   s    r5   r>  %IssuingDistributionPoint.indirect_crld  rS  r7   c                    U R                   $ r$   )r9  rq   s    r5   r?  6IssuingDistributionPoint.only_contains_attribute_certsh  s    222r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   %IssuingDistributionPoint.public_bytesl  r   r7   )r  r8  r9  r7  r6  r:  r  N)r  r   r  r  r;  r   r<  r   r=  r  r>  r   r?  r   rJ   r^   r   r   rI   r   r  rg  r  rs   )r`   ra   rb   rc   r   ISSUING_DISTRIBUTION_POINTrU   rT   r   r   r   r   r  r  r;  r<  r=  r>  r?  r&   rd   rL   r7   r5   r2  r2    s   

1
1CS,/S, 8S, #'	S,
 !%S, 9S, S, (,S, 
S,j



   # # . . , , '	&' '
 " " 3 36r7   r2  c                      \ rS rSr\R
                  r        SS jr\SS j5       r	\SS j5       r
\SS j5       rSS jrSS jrSS jrSS	 jrS
rg)MSCertificateTemplateip  c                    [        U[        5      (       d  [        S5      eXl        Ub  [        U[        5      (       a  Ub   [        U[        5      (       d  [        S5      eX l        X0l        g )Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r%   r   r   _template_idrK   _major_version_minor_version)r=   template_idmajor_versionminor_versions       r5   rT   MSCertificateTemplate.__init__s  sf     +'788=>>'%j.L.L%j.L.LJ  ,+r7   c                    U R                   $ r$   )r]  rq   s    r5   r`  !MSCertificateTemplate.template_id  r^  r7   c                    U R                   $ r$   )r^  rq   s    r5   ra  #MSCertificateTemplate.major_version  rL  r7   c                    U R                   $ r$   )r_  rq   s    r5   rb  #MSCertificateTemplate.minor_version  rL  r7   c                V    SU R                    SU R                   SU R                   S3$ )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r   )r`  ra  rb  rq   s    r5   r   MSCertificateTemplate.__repr__  s?    1$2B2B1C D!//0 1!//04	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )r%   rZ  r   r`  ra  rb  r   s     r5   r   MSCertificateTemplate.__eq__  sc    %!677!!  1 11 :""e&9&99:""e&9&99	
r7   c                Z    [        U R                  U R                  U R                  45      $ r$   )r   r`  ra  rb  rq   s    r5   r   MSCertificateTemplate.__hash__  s&    T%%t'9'94;M;MNOOr7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   "MSCertificateTemplate.public_bytes  r   r7   )r^  r_  r]  N)r`  r   ra  r   rb  r   rJ   r^   rP  r   r   r   rI   rs   )r`   ra   rb   rc   r   MS_CERTIFICATE_TEMPLATErU   rT   r   r`  ra  rb  r   r   r   r&   rd   rL   r7   r5   rZ  rZ  p  s    

.
.C,%, ", "	,
 
,( ! ! # # # #

P6r7   rZ  c                      \ rS rSr        SS jr\SS j5       r\SS j5       r\SS j5       rSS jr	SS jr
SS jrS	rg
)NamingAuthorityi  c                    Ub   [        U[        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      eXl        X l        X0l        g )Nzid must be an ObjectIdentifierzurl must be a strztext must be a str)r%   r   r   r]   _id_url_text)r=   idurltexts       r5   rT   NamingAuthority.__init__  sl     >*R1A"B"B<==?:c3#7#7/00JtS$9$9011	
r7   c                    U R                   $ r$   )rv  rq   s    r5   ry  NamingAuthority.id  r[  r7   c                    U R                   $ r$   )rw  rq   s    r5   rz  NamingAuthority.url  r2  r7   c                    U R                   $ r$   )rx  rq   s    r5   r{  NamingAuthority.text  s    zzr7   c                V    SU R                    SU R                   SU R                   S3$ )Nz<NamingAuthority(id=z, url=z, text=r   )ry  rz  r{  rq   s    r5   r   NamingAuthority.__repr__  s1    ''&
'$))B@	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )r%   rt  r   ry  rz  r{  r   s     r5   r   NamingAuthority.__eq__  sV    %11!! GGuxx (EII%(		UZZ'	
r7   c                Z    [        U R                  U R                  U R                  45      $ r$   )r   ry  rz  r{  rq   s    r5   r   NamingAuthority.__hash__  s)    		
 	
r7   )rv  rx  rw  N)ry  ObjectIdentifier | Nonerz  r@  r{  r@  rJ   r^   )rJ   r  rA  r   r   rI   )r`   ra   rb   rc   rT   r   ry  rz  r{  r   r   r   rd   rL   r7   r5   rt  rt    sx    #  	
 
&      


r7   rt  c                      \ rS rSr            SS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
SS jrSS	 jrSS
 jrSrg)ProfessionInfoi  c                   Ub   [        U[        5      (       d  [        S5      e[        U5      n[	        S U 5       5      (       d  [        S5      eUb-  [        U5      n[	        S U 5       5      (       d  [        S5      eUb   [        U[
        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      eXl        X l        X0l	        X@l
        XPl        g )N*naming_authority must be a NamingAuthorityc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   r]   )r   items     r5   r   *ProfessionInfo.__init__.<locals>.<genexpr>  s     F5ET:dC((5Er   z5Every item in the profession_items list must be a strc              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   rZ  )r   rU   s     r5   r   r    s      =Lc
3 011_r   zBEvery item in the profession_oids list must be an ObjectIdentifierz!registration_number must be a strz!add_profession_info must be bytes)r%   rt  r   r{   r   r]   rt   _naming_authority_profession_items_profession_oids_registration_number_add_profession_info)r=   naming_authorityprofession_itemsprofession_oidsregistration_numberadd_profession_infos         r5   rT   ProfessionInfo.__init__  s    '
o1
 1
 HII 01F5EFFFG  &"?3O =L    ' 
 *:4
 4
 ?@@*:4
 4
 ?@@!1!1 /$7!$7!r7   c                    U R                   $ r$   r  rq   s    r5   r  ProfessionInfo.naming_authority	  r<  r7   c                    U R                   $ r$   )r  rq   s    r5   r  ProfessionInfo.profession_items	  r<  r7   c                    U R                   $ r$   )r  rq   s    r5   r  ProfessionInfo.profession_oids	  rO  r7   c                    U R                   $ r$   )r  rq   s    r5   r  "ProfessionInfo.registration_number	      (((r7   c                    U R                   $ r$   )r  rq   s    r5   r  "ProfessionInfo.add_profession_info#	  r  r7   c                    SU R                    SU R                   SU R                   SU R                   SU R                  < S3$ )Nz!<ProfessionInfo(naming_authority=z, profession_items=z, profession_oids=z, registration_number=z, add_profession_info=r   )r  r  r  r  r  rq   s    r5   r   ProfessionInfo.__repr__'	  sb    /0E0E/F G  $ 5 56 7#334 5##'#;#;"< =##'#;#;">b	B	
r7   c                j   [        U[        5      (       d  [        $ U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r  r  r  r   s     r5   r   ProfessionInfo.__eq__0	  s    %00!! !!U%;%;; F%%)?)??F$$(=(==F ((E,E,EEF ((E,E,EE	
r7   c                    U R                   b  [        U R                   5      nOS n[        U R                  [        U R                  5      UU R
                  U R                  45      $ r$   )r  r   r   r  r  r  r  )r=   r  s     r5   r   ProfessionInfo.__hash__<	  sa    +#D$8$89O"O%%d++,((((
 	
r7   )r  r  r  r  r  N)r  NamingAuthority | Noner  zIterable[str]r  z!Iterable[ObjectIdentifier] | Noner  r@  r  r   rJ   r^   rJ   r  )rJ   re  )rJ   zlist[ObjectIdentifier] | NonerA  r   r   r   rI   )r`   ra   rb   rc   rT   r   r  r  r  r  r  r   r   r   rd   rL   r7   r5   r  r    s    +80+8 (+8 ;	+8
 (+8 *+8 
+8Z & & & & % % ) ) ) )



r7   r  c                      \ rS rSr        SS jr\SS j5       r\SS j5       r\SS j5       rSS jr	SS jr
SS jrS	rg
)	AdmissioniL	  c                   Ub   [        U[        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      e[	        U5      n[        S U 5       5      (       d  [        S5      eXl        X l        X0l        g )Nz)admission_authority must be a GeneralNamer  c              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   r  )r   infos     r5   r   %Admission.__init__.<locals>.<genexpr>^	  s      
9IJt^,,9Ir   z@Every item in the profession_infos list must be a ProfessionInfo)	r%   r   r   rt  r{   r   _admission_authorityr  _profession_infos)r=   admission_authorityr  profession_infoss       r5   rT   Admission.__init__M	  s     *:4
 4
 GHH'
o1
 1
 HII 01 
9I
 
 
 ! 
 %8!!1!1r7   c                    U R                   $ r$   )r  rq   s    r5   r  Admission.admission_authorityj	  r  r7   c                    U R                   $ r$   r  rq   s    r5   r  Admission.naming_authorityn	  r<  r7   c                    U R                   $ r$   )r  rq   s    r5   r  Admission.profession_infosr	  r<  r7   c                V    SU R                    SU R                   SU R                   S3$ )Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=r   )r  r  r  rq   s    r5   r   Admission.__repr__v	  s?    -d.F.F-G H  $ 5 56 7  $ 5 56b:	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )r%   r  r   r  r  r  r   s     r5   r   Admission.__eq__}	  sd    %++!! $$(A(AA @%%)?)??@%%)?)??	
r7   c                l    [        U R                  U R                  [        U R                  5      45      $ r$   )r   r  r  r   r  rq   s    r5   r   Admission.__hash__	  s4    ((%%d++,
 	
r7   )r  r  r  N)r  GeneralName | Noner  r  r  zIterable[ProfessionInfo]rJ   r^   rJ   r  r  )rJ   zlist[ProfessionInfo]r   r   rI   )r`   ra   rb   rc   rT   r   r  r  r  r   r   r   rd   rL   r7   r5   r  r  L	  sx    2/2 12 3	2
 
2: ) ) & & & &


r7   r  c                      \ rS rSr\R
                  r      SS jr\" S5      u  r	r
r\SS j5       rSS jrSS jrSS jrSS jrS	rg
)
Admissionsi	  c                    Ub   [        U[        5      (       d  [        S5      e[        U5      n[	        S U 5       5      (       d  [        S5      eXl        X l        g )Nzauthority must be a GeneralNamec              3  B   #    U  H  n[        U[        5      v   M     g 7fr$   )r%   r  )r   	admissions     r5   r   &Admissions.__init__.<locals>.<genexpr>	  s      
>HJy),,jr   zBEvery item in the contents_of_admissions list must be an Admission)r%   r   r   r{   r   
_authority_admissions)r=   	authority
admissionss      r5   rT   Admissions.__init__	  sg    
  I{)K)K=>>*%
 
>H
 
 
  
 $%r7   r  c                    U R                   $ r$   )r  rq   s    r5   r  Admissions.authority	  r  r7   c                <    SU R                    SU R                   S3$ )Nz<Admissions(authority=z, admissions=r   )r  r  rq   s    r5   r   Admissions.__repr__	  s+    $T__$5 6**+2/	
r7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r  r   r  r  r   s     r5   r   Admissions.__eq__	  sE    %,,!! NNeoo- 6  E$5$55	
r7   c                V    [        U R                  [        U R                  5      45      $ r$   )r   r  r   r  rq   s    r5   r   Admissions.__hash__	  s!    T^^U4+;+;%<=>>r7   c                .    [         R                  " U 5      $ r$   r   rq   s    r5   r&   Admissions.public_bytes	  r   r7   )r  r  N)r  r  r  zIterable[Admission]rJ   r^   r  r   r   rI   rs   )r`   ra   rb   rc   r   
ADMISSIONSrU   rT   rM   r   r   r   r   r  r   r   r   r&   rd   rL   r7   r5   r  r  	  sg    

!
!C&%& (& 
	&( &<M%J"GX{ 

?6r7   r  c                  n    \ rS rSrSS jr\SS j5       r\SS j5       rSS jrSS jr	SS jr
SS jrS	rg
)r   i	  c                \    [        U[        5      (       d  [        S5      eXl        X l        g )Nr\  )r%   r   r   r*  r,  )r=   rU   r   s      r5   rT   UnrecognizedExtension.__init__	  s&    #/00=>>	r7   c                    U R                   $ r$   r0  rq   s    r5   rU   UnrecognizedExtension.oid	  r2  r7   c                    U R                   $ r$   r6  rq   s    r5   r   UnrecognizedExtension.value	  r8  r7   c                >    SU R                    SU R                  < S3$ )Nz<UnrecognizedExtension(oid=r:  r   )rU   r   rq   s    r5   r   UnrecognizedExtension.__repr__	  s    ,TXXJhtzznBOOr7   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r$   )r%   r   r   rU   r   r   s     r5   r   UnrecognizedExtension.__eq__	  s;    %!677!!xx599$Bu{{)BBr7   c                D    [        U R                  U R                  45      $ r$   )r   rU   r   rq   s    r5   r   UnrecognizedExtension.__hash__	  s    TXXtzz*++r7   c                    U R                   $ r$   )r   rq   s    r5   r&   "UnrecognizedExtension.public_bytes	  s    zzr7   )r*  r,  N)rU   r   r   rt   rJ   r^   rP  rs   r   r   rI   )r`   ra   rb   rc   rT   r   rU   r   r   r   r   r&   rd   rL   r7   r5   r   r   	  sE        PC,r7   r   )r2   r   rJ   rt   )r>   r]   )u
__future__r   abcr  r/   r  rk  collections.abcr   r   cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr	   r
   ,cryptography.hazmat.primitives.asymmetric.ecr   -cryptography.hazmat.primitives.asymmetric.rsar   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r6   rM   	ExceptionrO   ri   ABCMetar    rx   r   r   r   r  r/  r  rR  rj  ry  r  r}  Enumr  r  r  r  r  r  r  r  r  _REASON_BIT_MAPPING_CRLREASONFLAGSr  r  _CRL_ENTRY_REASON_ENUM_TO_CODEr  r  r  r  r.  rW  rl  rx  r  r  r   _TLS_FEATURE_TYPE_TO_ENUMr  r  r  r  Genericr(  rA  rn  r  r  r  r  r  r  r  r  r2  rZ  rt  r  r  r  r   )r   s   0r5   <module>r     sP  
 # 
     .  3 @ G O F
 
 
 C  >>o 
')'
'0
3 	 	
ckk 	
"3 "3J6 6:i6] i6X!6= !6H6 6>6} 6>%% %%P+6} +6\6 6:"6M "6J"6- "6Jh  h V
&%** 
&4 !!  &&))##&&  	  q##QA&&  !##Qq	0 Qq##QA&&  !##Qr" >6 >6B6- 6<6' 6'r(# (#V%$ %$P6} 6<6- 6&6M 6&6 6DUZZ  2@@AWWaZ@ 6} 6@B6} B6J>6M >6Bp6m p6f-;/0 -;`M0 M0`E6] E6PE6M E6PE6 E6P6 6:!6] !6H&6 &6R&6- &6R6 6:6m 6:_6} _6D86M 86v7
 7
td
 d
NB
 B
J06 06fM o+ As   P%