
    fi                        d dl mZ d dl mZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dgZ ej(                  eej,                        Zej0                  Z G d de      ZdZdZ G d de      Z G d de      Z e       Z G d de      Z  G d de       Z! G d de      Z" G d de      Z# G d de      Z$ G d  d!e      Z% G d" d#e      Z& G d$ d%e      Z' G d& d'e'      Z( G d( d)e(      Z) G d* d+e)      Z* G d, d-e)      Z+ G d. d/e(      Z, G d0 d1e,      Z- G d2 d3e,      Z. G d4 d5e'      Z/ G d6 d7e      Z0 G d8 d9e#      Z1 G d: d;e#      Z2 G d< d=e#      Z3 G d> d?e#      Z4 G d@ dAe#      Z5 G dB dCe#      Z6 G dD dEe#      Z7 G dF dGe#      Z8 G dH dIe#      Z9 G dJ dKe#      Z: G dL dMe#      Z; G dN dOe#      Z< G dP dQe#      Z= G dR dSe#      Z>i ej~                  j                   e        ej                  j                   e!       ej                  j                   e"       ej                  j                   e#       ej                  j                   e$       ej                  j                   e%       ej                  j                   e        ej                  j                   e&       ej                  j                   e)       ej                  j                   e,       ej                  j                   e/       ej                  j                   e1       ej                  j                   e2       ej                  j                   e3       ej                  j                   e4       ej                  j                   e5       ej                  j                   e6       ej                  j                   e7       ej                  j                   e8       ej                  j                   e9       ej                  j                   e:       ej                  j                   e;       ej                  j                   e<       ej                  j                   e=       ej                  j                   e>       iZYej                  j                   e-       ej                  j                   e.       ej                  j                   e*       ej                  j                   e+       ej                  j                   e/       ej                  j                   e0       iZ^eYj                         D ]<  Z`e`j                  e`j                  j                  j                  ZZeZ3eZe^vs8e`e^eZ<   >  ecdU      D  cg c]  } |  c} \
  ZdZeZfZgZhZiZjZkZlZm G dV dWe      Zn eneYe^      ZoyTc c} w )X    )debug)error)eoo)
from_bytes)oct2int	octs2ints	ints2octsnull)base)char)tag)tagmap)univ)usefuldecode)flagsc                   (    e Zd ZdZ	 	 ddZ	 	 ddZy)AbstractDecoderNc                 2    t        j                  d|      )NzDecoder not implemented for r   PyAsn1Error	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptionss	            :/usr/lib/python3/dist-packages/pyasn1/codec/ber/decoder.pyvalueDecoderzAbstractDecoder.valueDecoder   s     F LMM    c                 2    t        j                  d|      )Nz3Indefinite length mode decoder not implemented for r   r   s	            r"   indefLenValueDecoderz$AbstractDecoder.indefLenValueDecoder#   s     [a cddr$   NNNNN)__name__
__module____qualname__protoComponentr#   r&    r$   r"   r   r      s$    N 6:26N >B:>er$   r      d   c                   "    e Zd Zed        Zd Zy)AbstractSimpleDecoderc                     |d | ||d  fS Nr,   )
asn1Objectr   r   s      r"   substrateCollectorz(AbstractSimpleDecoder.substrateCollector0   s    &!9VW#555r$   c                     |j                  d      r|S || j                  j                  ||      S |t        u r|S |j                  |      S )Nnativer   )getr+   clonenoValuer   r   r   valuer!   s        r"   _createComponentz&AbstractSimpleDecoder._createComponent4   sQ    ;;x L&&,,U6,BBgO>>%((r$   N)r(   r)   r*   staticmethodr4   r=   r,   r$   r"   r0   r0   /   s    6 6)r$   r0   c                   H    e Zd Z ej                  d      Z	 	 ddZ	 	 ddZy)ExplicitTagDecoder Nc                     |r | | j                   ||dfi |||      S |d | ||d  }
}	 ||	|||fi |\  }}t        r,t        dt        |      t        j                  |      fz         ||
fS )NrA   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r=   LOGlenr   hexdump)r   r   r   r   r   r   r   r    r!   headtailr<   _s                r"   r#   zExplicitTagDecoder.valueDecoderB   s     %%%hFgF6 
 w'67);dT8VVGwGq &),Qq1A(BC D d{r$   c                     |r | | j                   ||dfi |||      S  |||||fi |\  }	} ||fddi|\  }
}|
t        j                  u r|	|fS t        j                  d      )NrA   allowEooTz Missing end-of-octets terminator)r=   r   endOfOctetsr   r   )r   r   r   r   r   r   r   r    r!   r<   	eooMarkers              r"   r&   z'ExplicitTagDecoder.indefLenValueDecoderV   s     %%%hFgF6 
 %Y&&TGTy(MTMWM	9')####$FGGr$   r'   r(   r)   r*   r   Anyr+   r#   r&   r,   r$   r"   r@   r@   ?   s-    TXXb\N 6:26* >B:>Hr$   r@   c                   <    e Zd Z ej                  d      Z	 	 ddZy)IntegerDecoderr   Nc                     |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	s | j
                  ||dfi ||
fS t        |	d      } | j
                  |||fi ||
fS )Nr   Simple tag format expectedT)signed)	tagFormatr   tagFormatSimpler   r   r=   r   )r   r   r   r   r   r   r   r    r!   rF   rG   r<   s               r"   r#   zIntegerDecoder.valueDecoderp   s    
 !9#"5"55##$@AAw'67);d(4((61HH$NN4-$t$$XvuHH$NNr$   r'   )r(   r)   r*   r   Integerr+   r#   r,   r$   r"   rP   rP   m   s    !T\\!_N 6:26Or$   rP   c                   6    e Zd Z ej                  d      Zd Zy)BooleanDecoderr   c                 D    t        j                  | |||xr dxs dfi |S )N   r   )rP   r=   r;   s        r"   r=   zBooleanDecoder._createComponent   s2    ..(FEKa$41A8?A 	Ar$   N)r(   r)   r*   r   Booleanr+   r=   r,   r$   r"   rX   rX      s    !T\\!_NAr$   rX   c                   L    e Zd Z ej                  d      ZdZ	 	 ddZ	 	 ddZy)BitStringDecoderr,   TNc                    |d | ||d  }
}	|r! | | j                   ||t        fi |||      S |	st        j                  d      |d   j                  t
        j                  k(  rct        |	d         }|dkD  rt        j                  d|z        | j                  j                  |	dd  d|      } | j                   |||fi ||
fS | j                  s,t        j                  d| j                  j                  z        t        rt        d	       | j                  }| j                  j                  t        d
      }|	ri ||	| j                  fd|i|\  }}	t        |d         }|dkD  rt        j                  d|z        | j                  j                  |dd  d||      }|	ri | j                   |||fi ||
fS )NzEmpty BIT STRING substrater      Trailing bits overflow %srZ   T)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationra   r    ra   prependrb   )r=   r:   r   r   rT   r   rU   r   r+   fromOctetStringsupportConstructedForm	__class__r(   rC   r4   r
   )r   r   r   r   r   r   r   r    r!   rF   rG   trailingBitsr<   	bitString	components                  r"   r#   zBitStringDecoder.valueDecoder   s!    w'67);d 5 5 5&'!6-4!67@&J J ##$@AA!9#"5"55"47+La''/,>  ''77QR| 8 EE )4((65LGLdRR**## %,.2nn.E.E%F G G 67 ..''77T7R	'd.A.A N5ANELNOIt #9Q<0La''/,>  ++;;!"d!< < I  %t$$XvyLGLdRRr$   c                    |r! | | j                   ||t        fi |||      S | j                  }| j                  j	                  t
        d      }	|r} ||| j                  f|dd|\  }
}|
t        j                  u rnet        |
d         }|dkD  rt        j                  d|z        | j                  j	                  |
dd  d|	|      }	|r}t        j                  d	       | j                   |||	fi ||fS )
NTre   r    rJ   r   r_   r`   rZ   rf   !No EOO seen before substrate ends)r=   r:   r4   r+   rh   r
   r   rK   r   r   r   SubstrateUnderrunError)r   r   r   r   r   r   r   r    r!   rl   rm   rk   s               r"   r&   z%BitStringDecoder.indefLenValueDecoder   s3   
  5 5 5h [SZ []fhnoo ..''77T7R	#,Y8K8K $G:F6:$G>E$G Iy COO+"9Q<0La''/,>  ++;;!"d!< < I & ../RSS$t$$XvyLGLiWWr$   r'   )	r(   r)   r*   r   	BitStringr+   ri   r#   r&   r,   r$   r"   r]   r]      s6    #T^^B'N! 6:265Sp >B:>"Xr$   r]   c                   L    e Zd Z ej                  d      ZdZ	 	 ddZ	 	 ddZy)OctetStringDecoderrA   TNc                    |d | ||d  }
}	|r! | | j                   ||t        fi |||      S |d   j                  t        j                  k(  r | j                   |||	fi ||
fS | j
                  s,t        j                  d| j                  j                  z        t        rt        d       | j                  }t        }|	r! ||	| j                  fd|i|\  }}	||z  }|	r! | j                   |||fi ||
fS )Nr   rc   rd   r    )r=   r:   rT   r   rU   ri   r   r   rj   r(   rC   r4   r
   r+   )r   r   r   r   r   r   r   r    r!   rF   rG   headerrm   s                r"   r#   zOctetStringDecoder.valueDecoder   s/    w'67);d 5 5 5h [SZ [ )63 3 !9#"5"55(4((64K7KTQQ**##$PSWSaSaSjSj$jkk67 ..'d.A.A 35A3*13OIt iF	  %t$$XvvII4OOr$   c                 R   |r1|| j                   ur# | j                  ||t        fi |}	 ||	||      S | j                   }t        }
|r5 ||| j                  f|dd|\  }}|t
        j                  u rn|
|z  }
|r5t        j                  d       | j                  |||
fi ||fS )NTro   rp   )	r4   r=   r:   r
   r+   r   rK   r   rq   )r   r   r   r   r   r   r   r    r!   r3   rv   rm   s               r"   r&   z'OctetStringDecoder.indefLenValueDecoder  s     L0G0GG...xTGTJ
Iv>> ..#,Y-1-@-@$G:F6:$G ?F$G Iy COO+iF  ..3  %t$$XvvII9TTr$   r'   )	r(   r)   r*   r   OctetStringr+   ri   r#   r&   r,   r$   r"   rt   rt      s8    %T%%b)N! 6:26PB >B:>Ur$   rt   c                   <    e Zd Z ej                  d      Z	 	 ddZy)NullDecoderrA   Nc                     |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	 | j
                  ||dfi |}|	rt        j                  d|z        ||
fS )Nr   rR   rA   z&Unexpected %d-octet substrate for Null)rT   r   rU   r   r   r=   )r   r   r   r   r   r   r   r    r!   rF   rG   rm   s               r"   r#   zNullDecoder.valueDecoder0  s    
 !9#"5"55##$@AAw'67);d)D))(FBJ'J	##$Lv$UVV$r$   r'   )r(   r)   r*   r   Nullr+   r#   r,   r$   r"   rz   rz   -  s    TYYr]N 6:26r$   rz   c                   <    e Zd Z ej                  d      Z	 	 ddZy)ObjectIdentifierDecoderr,   Nc                 b   |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	st        j                  d      t        |	      }	d}d}t        |	      }||k  r|	|   }|dz  }|dk  r||fz  }n|dkD  r||}d}d}|dk\  rd|dz  }|t        kD  rt        j                  dt        |fz        |dz  |d	z  z   }||k\  rt        j                  d
|      |	|   }|dz  }|dk\  rd||dz  |z   fz  }n|dk(  rt        j                  d      ||k  rd|d   cxk  rdk  r	n nd|z   }nVd|d   cxk  rdk  rn nd|d   dz
  f|dd  z   }n4|d   dk\  rd|d   dz
  f|dd  z   }nt        j                  d|	d   z         | j                  |||fi ||
fS )Nr   rR   zEmpty substrater,   rZ      zEOID arc exceeds maximum continuation octets limit (%d) at position %dr_      z!Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %s)
rT   r   rU   r   r   r   rD   MAX_OID_ARC_CONTINUATION_OCTETSrq   r=   )r   r   r   r   r   r   r   r    r!   rF   rG   oidindexsubstrateLensubId	nextSubIdcontinuationOctetCounts                    r"   r#   z$ObjectIdentifierDecoder.valueDecoderE  s<    !9#"5"55##$@AAw'67);d##$5664yl"KEQJEs{x!	)*&3&*a/*-0OO#//-0OQV/WX  #aZI,<=E,#::EHJ  !%UIQJE  3& !y022#
 ''(LMM= l"B A"*C3q6Rc!frk"SW,CVr\c!frk"SW,C##$Cd1g$MNN$t$$XvsFgFLLr$   r'   )r(   r)   r*   r   ObjectIdentifierr+   r#   r,   r$   r"   r~   r~   B  s"    *T**2.N 6:26:Mr$   r~   c                   :    e Zd Z ej                         Z	 	 ddZy)RealDecoderNc                    |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	s | j
                  ||dfi ||
fS t        |	d         }|	dd  }	|dz  r|	st        j                  d      t        rt        d       |dz  dz   }|d	k(  rt        |	d         }|	dd  }	|	d | |	|d  }	}|r|	st        j                  d
      t        |d         dz  xr dxs d}|r|dz  }|t        |d         z  }|dd  }|r|d	z	  dz  }|dkD  rt        j                  d      |dk(  r|dz  }n
|dk(  r|d	z  }d}|	r|dz  }|t        |	d         z  }|	dd  }	|	r|dz  r| }|dz	  dz  }|d|z  z  }|d|f}n|dz  rt        rt        d       |dz  xr dxs d}n|dz  dk(  r|	st        j                  d      t        rt        d       	 |dz  dk(  rt        |	      ddf}n@|dz  dk(  rt        |	      }n,|dz  dk(  rt        |	      }nt        j                  d|z        nt        j                  d|z         | j
                  |||fi ||
fS # t        $ r t        j                  d      w xY w)Nr   rR   g        rZ   r   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwed   r   zIllegal Real base@   zdecoding infinite REALz-infinf   zdecoding character encoded REAL
   zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rT   r   rU   r   r   r=   r   rC   intfloatrq   
ValueError)r   r   r   r   r   r   r   r    r!   rF   rG   foneoebpsfr<   s                      r"   r#   zRealDecoder.valueDecoder  s    !9#"5"55##$@AAw'67);d(4((63J'JDPPT!WABx9''(IJJ23daAAvDG$ABxBQxabBT''(?@@1%,"1AaWRU^#V 
 a$A1u''(;<<AvQaQAaWT!W%%ABx 
 DyBq4BbLA1IE$Y,-I(&1EE$Y!^''(IJJ568s? YA.E#X_!$KE#X_!$KE  66-2  ..+b0  %t$$XvuHH$NN  22/ s   "AI) )Jr'   )r(   r)   r*   r   Realr+   r#   r,   r$   r"   r   r     s    TYY[N 6:26eOr$   r   c                       e Zd ZdZy)AbstractConstructedDecoderN)r(   r)   r*   r+   r,   r$   r"   r   r     s    Nr$   r   c                   @    e Zd ZdZdZd Zd ZddZ	 	 ddZ	 	 ddZ	y)	UniversalConstructedTypeDecoderNc                     t               r2   NotImplementedError)r   r3   idxs      r"   _getComponentTagMapz3UniversalConstructedTypeDecoder._getComponentTagMap      !##r$   c                     t               r2   r   )r   r3   r   r   s       r"   _getComponentPositionByTypez;UniversalConstructedTypeDecoder._getComponentPositionByType  r   r$   c                    g }t               }|rN ||fi |\  }}|t        j                  u rn/|j                  |       |j	                  |j
                         |rNt        |      dkD  r| j                  }n| j                  }|j                  t        j                  |j
                  j                  g|j                         }	t        rt        d|	z         t        |      D ]  \  }
}|	j!                  |
|ddd        |	|fS )NrZ   r7   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   rK   appendaddr   rD   protoRecordComponentprotoSequenceComponentr9   r   TagSetbaseTag	superTagsrC   	enumeratesetComponentByPosition)r   r   r   r   r!   
componentscomponentTypesrm   r+   r3   r   s              r"   _decodeComponentsz1UniversalConstructedTypeDecoder._decodeComponents  s   
#,Y#B'#B IyCOO+i(y//0  ~"!66N "88N#)) ::n33;;Of>N>NO * 

  '( ) (
3 	NC--Y"'% . 	 9$$r$   c                 
   |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|^||j                         }nA| j                  | j                  j                  |      }n| j                  | j                  f} ||||      S |Q | j                  |	f||d|\  }}|r2t        r,t        dt        |      t        j                  |      fz         ||
fS |j                         }|j                          |j                  t         j"                  j                  t         j$                  j                  fv r|j&                  }|j                  t         j$                  j                  k(  }| xr |j(                   }t        r&t        d| xr dxs dd	|xr d
xs dd|d       t+               }d}|	r|sd }na|r|j,                  }nR	 |r||   j.                  }n?||   j0                  s||   j2                  r|j5                  |      }n||   j.                  } ||	|fi |\  }}	|sZ|rX|r|j9                  |j:                        }n:||   j0                  s||   j2                  r|j=                  |j:                  |      }|j?                  ||ddd       |jA                  |       |dz  }|	rt        rt        d|z         |r|jB                  jE                  |      s,t        j                  d|jF                  jH                  z        |jJ                  r|jM                  di       }t        r3t        d       |jO                         D ]  \  }}t        |d|        |s|jM                  dd      rqtQ        |jR                        D ]D  \  }}|jT                  s|j0                  r|jW                  |      jX                  s<|j[                  |jT                  j\                        }	 ||   }t        rt        d|d|       |jW                  |      }|j                  t         j`                  j                  t         jb                  j                  fv r9tQ        |      D ])  \  }} |||   je                         fd|i|\  }}|||<   +  ||jW                  |      je                         fd|i|\  }}|j?                  ||       G ||
fS |jf                  }|r|||
fS |j                         }|j                          |j&                  }t        rt        d|z         d}|	r+ ||	|fi |\  }}	|j?                  ||ddd       |dz  }|	r+||
fS # t6        $ r t        j                  d|      w xY w# t^        $ r t        rt        d|jF                  jH                  d|j\                  d|jF                  jH                  d|jT                  j\                  d	       |jT                  jO                         D ]  \  }}t        |d|        	 |jT                  |   }n%# t^        $ r t        rt        d|       Y Y w xY wY iw xY w) Nr   Constructed tag format expectedr7   r   r   z)Unused trailing %d octets encountered: %s	decoding non-rA   deterministic SET type  chosen by type ID Excessive components decoded at Fr   rZ   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map: -> decodeOpenTypes%default open types map of component "." governed by component "":/failed to resolve open type by governing value resolved open type  by governing value r   +decoding type %r chosen by given `asn1Spec`)4rT   r   tagFormatConstructedr   r   r9   r+   r   r   r   rC   rD   r   rE   cleartypeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer3   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrj   r(   hasOpenTypesr8   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfasOctetsisInconsistent)r   r   r   r   r   r   r   r    r!   rF   rG   r3   trailingr   	isSetTypeisDeterministicseenIndicesr   r   rm   r   kv	namedTypegoverningValuer   containerValueposcontainerElementrestinconsistencys                                  r"   r#   z,UniversalConstructedTypeDecoder.valueDecoder$  s    !9#":"::##$EFFw'67);d##%^^-
$$0!0066f6E
 "668S8SS

Iv>>#94#9#9$#y$<C$ J CHu}}X'>G@ @ A t##^^%
??t}}33TXX__EE!//J 488??:I"+mSJ4S4S0SO''2F8b8):M:SQS:S  %KC!$(M$.$;$;M*,6sO,F,FM'_77:c?;V;V,6,L,LS,QM -7sO,F,FM #,D-"K7"K	4&: (::9;T;TU#C33z#7R7R(<<Y=V=VX[\11&+#e 2  $qO R /+=>!44==kJ++%'1';';'D'DEF F ++ 'K <I<=$-OO$5 5DAqa 345 !GKK0A5$I.7
8M8M.N =RNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  # #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8 !D$9C)9 7@(6s(;(D(D(F7&197&=D7&OIt
 ;DN3$7!D 3<$.$E$Ec$J$S$S$U3"-53"9@3"	4
 !+ A A#y Q{=Rr 43 !+ 9 9 ''. 4) ")J$22MAMQRC"+D-"K7"K	411&+#e 2  q  4K & #//DLN t $, -#&$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J %A1(+!Q,?(@%A!-/8/A/A./QH'/ !-'*(+:H-K )L$,	!- %--sD   (AV V)"V&)BZ	YZY;6Z:Y;;ZZc                    |d   j                   t        j                  k7  rt        j                  d      |^||j                         }	nA| j                  | j                  j                  |      }	n| j                  | j                  f}	 ||	||      S |! | j                  |f||dt        |d      S |j                         }	|	j                          |j                  t        j                  j                  t        j                  j                  fv r|	j                   }
|	j                  t        j                  j                  k(  }| xr |
j"                   }t$        r&t%        d| xr dxs d	d
|xr dxs d	d|d       t'               }d}|r t)        |
      |k  rd }na|r|
j*                  }nR	 |r|
|   j,                  }n?|
|   j.                  s|
|   j0                  r|
j3                  |      }n|
|   j,                  } |||fddi|\  }}|t6        j8                  u rn|sZ|
rX|r|
j;                  |j<                        }n:|
|   j.                  s|
|   j0                  r|
j?                  |j<                  |      }|	jA                  ||ddd       |jC                  |       |dz  }|r t        jD                  d      t$        rt%        d|z         |
rO|
jF                  jI                  |      s,t        j                  d|	jJ                  jL                  z        |
jN                  r|jQ                  di       }t$        r3t%        d       |jS                         D ]  \  }}t%        |d|        |s|jQ                  dd      rtU        |
jV                        D ]n  \  }}|jX                  s|j.                  r|	j[                  |      j\                  s<|	j_                  |jX                  j`                        }	 ||   }t$        rt%        d|d |       |	j[                  |      }|j                  t        jd                  j                  t        jf                  j                  fv rDtU        |      D ]4  \  }} |||   ji                         fd!|it        |d      \  }}|||<   6  ||	j[                  |      ji                         fd!|it        |d      \  }}|t6        j8                  us]|	jA                  ||       q |	|fS |	jj                  }|r||	|fS |j                         }	|	j                          |j                   }t$        rt%        d"|z         d}|rD |||fddi|\  }}|t6        j8                  u r	 |	|fS |	jA                  ||ddd       |dz  }|rDt        jD                  d      # t4        $ r t        j                  d|	      w xY w# tb        $ r t$        rt%        d|	jJ                  jL                  d|j`                  d|	jJ                  jL                  d|jX                  j`                  d	       |jX                  jS                         D ]  \  }}t%        |d|        	 |jX                  |   }n%# tb        $ r t$        rt%        d|       Y Y w xY wY w xY w)#Nr   r   r7   r   T)rJ   r   r   rA   r   r   r   r   r   rJ   Fr   rZ   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )6rT   r   r   r   r   r9   r+   r   r   r   dictr   r   r   r   r   r   r   rC   r   rD   r   r3   r   r   r   r   r   rK   r   r   r   r   r   rq   r   r   rj   r(   r   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r3   r   r   r   r   r   rm   r   r   r   r   r   r   r  r  r  r  r  r   s                               r"   r&   z4UniversalConstructedTypeDecoder.indefLenValueDecoder  s    !9#":"::##$EFF##%^^-
$$0!0066f6E
 "668S8SS

Iv>>)4))"(Iw. 
 ^^%
??t}}33TXX__EE#11J"))TXX__<I"+mSJ4S4S0SO''2F8b8):M:SQS:S  %KCz?c)#H)66H*'1#'A'AH'_77:c?;V;V'1'G'G'LH (2#'A'AH (1H'_t'_W^'_$	9/&: (::9;T;TU#C33z#7R7R(<<Y=V=VX[\11&+#e 2  $qQ V 227  /+=>!44==kJ++,Z]g]q]q]z]z,z{{** 'K <I<=$-OO$5 5DAqa 345 !GKK0A5$I.7
8M8M.N >VNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  # #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8 !D$9C)9 7@(6s(;(D(D(F7&197&=A'TX=Y7&OIt
 ;DN3$7!D 3<$.$E$Ec$J$S$S$U3"-53"9=gPT9U3"	4
 $-COO#C$.$E$Ec9$U}>VF 9$$E %/$=$=M$++@ 9$$; ")J$22MAMQRC'0M'dTX'd\c'd$	9/ 9$$ 11&+#e 2  q  227 _ & #//DNP | $, -#&$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J %A1(+!Q,?(@%A!-/8/A/A./QH'/ !-'*(+:H-K )L$,	!- %--sD   ;AW W;"W8;B[Z+*[+[[[[[)NNr'   )
r(   r)   r*   r   r   r   r   r   r#   r&   r,   r$   r"   r   r     s<    !$$'%T 6:26I X >B:>O%r$   r   c                   P    e Zd Z ej                         Z ej                         Zy)SequenceOrSequenceOfDecoderN)r(   r)   r*   r   r   r   r   r   r,   r$   r"   r	  r	    s    (4==?,T__.r$   r	  c                   .    e Zd Z ej                         Zy)SequenceDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    "T]]_Nr$   r  c                   .    e Zd Z ej                         Zy)SequenceOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r        $T__&Nr$   r  c                   P    e Zd Z ej                         Z ej                         Zy)SetOrSetOfDecoderN)r(   r)   r*   r   r   r   r   r   r,   r$   r"   r  r    s    #488:'TZZ\r$   r  c                   .    e Zd Z ej                         Zy)
SetDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    TXXZNr$   r  c                   .    e Zd Z ej                         Zy)SetOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    TZZ\Nr$   r  c                   F    e Zd Z ej                         Z	 	 ddZ	 	 ddZy)ChoiceDecoderNc                    |d | ||d  }
}	|| j                   j                  |      }n|j                         }|r
 ||||      S |j                  |k(  r-t        rt        d|d        ||	|j                  fi |\  }}	n/t        rt        d|d        ||	|j                  |||fi |\  }}	|j
                  }t        rt        d|d|       |j                  ||dddd       ||
fS )	Nr7   r    as explicitly tagged CHOICE as untagged CHOICEdecoded component , effective tag set Fr   r   r   	innerFlag)r+   r9   r   rC   componentTagMapr   setComponentByType)r   r   r   r   r   r   r   r    r!   rF   rG   r3   rm   r   s                 r"   r#   zChoiceDecoder.valueDecoder  s    w'67);d,,22&2AJ ")J
Iv>>&IJ'j004;OIt
 @A'j00)0OIt
 $33	?[\%%Y#e	 	& 	
 4r$   c                 Z   || j                   j                  |      }	n|j                         }	|r
 ||	||      S |	j                  |k(  rkt        rt        d|d        |||	j                  j
                  fi |\  }
} ||fddi|\  }}|t        j                  urNt        j                  d      t        rt        d|d        |||	j                  j
                  |||fi |\  }
}|
j                  }t        rt        d|
d	|       |	j                  ||
d
d
d
d
       |	|fS )Nr7   r   r  rJ   Trp   r  r  r  Fr  )r+   r9   r   rC   r   r   r   rK   r   r   r   r  )r   r   r   r   r   r   r   r    r!   r3   rm   rL   r   s                r"   r&   z"ChoiceDecoder.indefLenValueDecoder  sU    ,,22&2AJ!)J
Iv>>&IJ#,:33@@$DK$ Iy
 $-$$($,3$ Iy /''(KLL @A#,:33@@$)0$ Iy
 $33	?[\%%Y#e	 	& 	
 9$$r$   r'   )r(   r)   r*   r   Choicer+   r#   r&   r,   r$   r"   r  r    s+     T[[]N 6:26, ^ >B:>1%r$   r  c                   F    e Zd Z ej                         Z	 	 ddZ	 	 ddZy)
AnyDecoderNc                    |d}	n:|j                   t        j                  u r||j                  v}	n||j                  k7  }	|	rH|d   }
|t        |
      t        |      z
  z  }|
}t        r!t        dt        j                  |      z         |r! | | j                  ||t        fi |||      S |d | ||d  }} | j                  |||fi ||fS )NTfullSubstratez&decoding as untagged ANY, substrate %s)rj   r   TagMaptagMapr   rD   rC   r   rE   r=   r:   )r   r   r   r   r   r   r   r    r!   
isUntaggedr%  rF   rG   s                r"   r#   zAnyDecoder.valueDecoderD  s     J6==0x6J  8??2J#O4M c-(3y>99F%I<u}}Y?WWX 5 5 5h [SZ [ )63 3 w'67);d$t$$XvtGwGMMr$   c                    |d}	n:|j                   t        j                  u r||j                  v }	n||j                  k(  }	|	rt
        }
t        rGt        d       n;|d   }|d t        |        }
t        r!t        dt        j                  |
      z         | j                  }|r@|| j                  ur2 | j                  ||t        fi |} |||
|z   |t        |
      z         S t        rt        d       | j                  }|r+ |||f|dd|\  }}|t        j                  u rn|
|z  }
|r+t!        j"                  d      |r|
|fS  | j                  |||
fi ||fS )	NFzdecoding as tagged ANYr%  z-decoding as untagged ANY, header substrate %srd   Tro   rp   )rj   r   r&  r'  r   r
   rC   rD   r   rE   r+   r4   r=   r:   r   rK   r   rq   )r   r   r   r   r   r   r   r    r!   isTaggedrv   r%  r3   rm   s                 r"   r&   zAnyDecoder.indefLenValueDecoderc  s    H6==00H 0HF,- $O4M ##3S^O4FCemmTZF[[\ &&L0G0GG...xTGTJ
FY,>V@TUU67 ..#,Y $G:F6:$G>E$G Iy COO+iF  ..3  9$$ )4((66MWMyXXr$   r'   rM   r,   r$   r"   r#  r#  A  s-    TXXZN 6:26N@ >B:><Yr$   r#  c                   .    e Zd Z ej                         Zy)UTF8StringDecoderN)r(   r)   r*   r   
UTF8Stringr+   r,   r$   r"   r,  r,    r  r$   r,  c                   .    e Zd Z ej                         Zy)NumericStringDecoderN)r(   r)   r*   r   NumericStringr+   r,   r$   r"   r/  r/        'T'')Nr$   r/  c                   .    e Zd Z ej                         Zy)PrintableStringDecoderN)r(   r)   r*   r   PrintableStringr+   r,   r$   r"   r3  r3        )T))+Nr$   r3  c                   .    e Zd Z ej                         Zy)TeletexStringDecoderN)r(   r)   r*   r   TeletexStringr+   r,   r$   r"   r7  r7    r1  r$   r7  c                   .    e Zd Z ej                         Zy)VideotexStringDecoderN)r(   r)   r*   r   VideotexStringr+   r,   r$   r"   r:  r:    s    (T((*Nr$   r:  c                   .    e Zd Z ej                         Zy)IA5StringDecoderN)r(   r)   r*   r   	IA5Stringr+   r,   r$   r"   r=  r=        #T^^%Nr$   r=  c                   .    e Zd Z ej                         Zy)GraphicStringDecoderN)r(   r)   r*   r   GraphicStringr+   r,   r$   r"   rA  rA    r1  r$   rA  c                   .    e Zd Z ej                         Zy)VisibleStringDecoderN)r(   r)   r*   r   VisibleStringr+   r,   r$   r"   rD  rD    r1  r$   rD  c                   .    e Zd Z ej                         Zy)GeneralStringDecoderN)r(   r)   r*   r   GeneralStringr+   r,   r$   r"   rG  rG    r1  r$   rG  c                   .    e Zd Z ej                         Zy)UniversalStringDecoderN)r(   r)   r*   r   UniversalStringr+   r,   r$   r"   rJ  rJ    r5  r$   rJ  c                   .    e Zd Z ej                         Zy)BMPStringDecoderN)r(   r)   r*   r   	BMPStringr+   r,   r$   r"   rM  rM    r?  r$   rM  c                   .    e Zd Z ej                         Zy)ObjectDescriptorDecoderN)r(   r)   r*   r   ObjectDescriptorr+   r,   r$   r"   rP  rP    s    ,V,,.Nr$   rP  c                   .    e Zd Z ej                         Zy)GeneralizedTimeDecoderN)r(   r)   r*   r   GeneralizedTimer+   r,   r$   r"   rS  rS    s    +V++-Nr$   rS  c                   .    e Zd Z ej                         Zy)UTCTimeDecoderN)r(   r)   r*   r   UTCTimer+   r,   r$   r"   rV  rV    s    #V^^%Nr$   rV  Nr   c                   @    e Zd ZeZ e       ZdZi fdZddde	ddfdZ
y)DecoderTc                 \    || _         || _        i | _        i | _        t	        d      | _        y )N)r   r   )_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher	   _Decoder__eooSentinel)r   r'  typeMaps      r"   __init__zDecoder.__init__  s,     &v.r$   Nc                 F   t         r<t        dt        j                  |t        |      t        j                  |      fz         |j                  dd      }	|	t        kD  rt        j                  dt        z        |	dz   |d<   |j                  dd      }
|
rD| j                  r8|d d | j                  k(  r&t         rt        d	       t        j                  |dd  fS t        }| j                  }| j                   }| j"                  }| j$                  }|}|t&        ur|t(        u rj|st        j*                  d
      d}|d   }|dd  }	 ||   }| |r	 ||   }nt3        j6                  d|      }n||z   }t8        }t         rt        d|z         |t8        u r5|st        j*                  d      t/        |d         }|dk  rd}|}nl|dkD  rc|dz  }t;        |d|dz          }t        |      |k7  r&t        j*                  |dt        |      d|      d}|D ]  }|dz  }||z  } |dz  }nd}d}||d  }|dk(  r!| j                  sGt        j                  d      t        |      |k  r$t        j*                  d|t        |      z
  z        t<        }t         r1t        d|t        j                  |dk(  xr |xs |d |       fz         |t<        u r|t>        }nt@        }|t>        u r	 ||   }|rtB        }n	 ||d d    }|rtB        }ntD        }t         rt        d|xr |jF                  jH                  xs dd |tB        u xr d!xs d"       t        j                  jK                  |d u xr d#xs  |jL                  jF                  jH                         |t@        u r|jF                  tN        jP                  u r	 ||   }t         r$t        d$       |jR                  jU                         D ]*  \  }}t        d%|d&|jF                  jH                         , |jV                  rRt        d'       |jV                  jU                         D ]*  \  }}t        d%|d&|jF                  jH                         , t        d(|d u xr dxs |jY                         d)|       nJ||jZ                  k(  s||j\                  v r+|}t         r%t        d*|jF                  jH                  z         nd }|@	 ||j^                     }t         rt        d+|j^                         |r	|}tB        }ntD        }nd }tD        }t         r~t        d|tB        u xr |jF                  jH                  xs dd-|tB        u xr d!xs d"       t        j                  jK                  |d u xr d#xs |jF                  jH                         |tB        u r|j                  d.d      s|sd/ }|jc                  |0       |dk(  r! jd                  ||||t<        | |fi |\  }}n  jf                  ||||t<        | |fi |\  }}t         rt        d|jF                  jH                  d1|jF                  jH                  d2ti        |tj        jl                        xr |jo                         xs |d3|xr t        j                  |      xs d       t&        }n|tD        u r|rM|d   jp                  t2        jr                  k(  r-|d   jt                  t2        jv                  k7  rtx        }tB        }nd }| jz                  }t         r;t        d|xr |jF                  jH                  xs dd4|tB        u xr d!xs d5       |t|        u r:| j~                  }t         r"t        d6|jF                  jH                  z         tB        }|t        u rt        j                  |d7|      |t&        urt         r:t        j                  j                          t        d8t        j                  z         ||fS # t,        $ r t/        |      }|dz  }|dz  }|dz  }|dk(  rWd}d}d}	 	 t/        ||         }|dz  }|dz  }||dz  z  }|dz  sn'||d  }n"# t0        $ r t        j*                  d      w xY wt3        j4                  |||      }|r|||<   Y xw xY w# t,        $ r t3        j6                  d|      }|||<   Y |w xY w# t,        $ r d }Y w xY w# t,        $ r d }Y w xY w# t,        $ r d }Y aw xY w# t,        $ rn t3        j6                  |jZ                  j`                  |jZ                  j`                        }	 ||   }t         rt        d,|       n# t,        $ r d }Y nw xY wY w xY w)9NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %s_nestingLevelr   z0ASN.1 structure nesting depth exceeds limit (%d)rZ   rJ   Fr   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr          r_   r   r   z'Short octet stream on long tag decoding)tagClassrT   tagIdr,   z$tag decoded into %s, decoding lengthz%Short octet stream on length decoding<z at r   r   z6Indefinite length encoding not supported by this codecz%d-octet shortz6value length decoded into %d, payload substrate is: %szcodec z<none>z% chosen by a built-in type, decoding r<   zas explicit tag?z!candidate ASN.1 spec is a map of:z  r   zbut neither of: znew candidate ASN.1 spec is z, chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z  chosen by ASN.1 spec, decoding recursiveFlagc                     | |d | fS r2   r,   )ar   cs      r"   <lambda>z"Decoder.__call__.<locals>.<lambda>5  s    Aq!u: r$   )r%  z yields type z	, value:
z
...remaining substrate is: z chosen, decoding z
as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)ArC   r   scoperD   rE   r8   MAX_NESTING_DEPTHr   r   popsupportIndefLengthr_  r   rK   r:   r[  r\  r]  r^  stStopstDecodeTagrq   r   r   r   r   Tagr   stDecodeLengthr   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrj   r(   pushr+   r   r&  presentTypesr   	skipTypesprettyPrintTyper   r'  r   r   updater&   r#   
isinstancer   Asn1ItemprettyPrintrT   r   rf  tagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition) r   r   r   r   r   r   r   r    r!   rc  rJ   r<   r'  r`  tagCachetagSetCacher%  
isShortTag
firstOctetlastTag
integerTagrf  rT   rg  lengthOctetIdxsizeencodedLengthlengthOctetconcreteDecoder
chosenSpecr   
baseTagSets                                    r"   __call__zDecoder.__call__'  s   
 imrmxmxz  BE  FO  BP  RW  R_  R_  `i  Rj  mk  k  lOQ7,,##BEVV  $11#4 ;;z51 //!} 2 2267	!"55..??((!6!# 66< 
 "
&q\
%abM	$7&z2GJ >!=%0%<F "%B!8 %v-F&>GH& 66?  %Yq\2
#D'F#%%,D$-i$(.C$DM =)T1#::-13}3EvN  F'4 .1+-. AID DF%de,	R<22#//0hii 9~.#::;KvX[\eXfOf;ghh)PTZ\a\i\ijptvjv  kE  |E  k[  IR  SZ  TZ  I[  ]\  T]  ]  ^))#2E 8E" ..+&,VnO
 #)E/*0*<
 ' - 2_  NDapazaz  bD  bD  NP  HP  NP  RW  [h  Rh  Rt  mt  RI  xI  RI  J  KKK$$_%<%D%yHfHfHpHpHyHyz33%%6*%-f%5

 ?@-5-B-B-H-H-J SMJ
AKK<P<P QRS $-- 23191C1C1I1I1K W
A #J@T@T$U VWj\`N`Nmem  ONq{  rL  rL  rN  ON  PV  W  Xx.&HOO2K!)J88;M;M;V;VVW "&J)3*1*2C2C*D^h^o^o qr '#- - !3 '+O.EQ^H^  IFcrc|c|  dF  dF  IR  JR  IR  TY  ]j  Tj  Tv  ov  TK  zK  TK  L  MKK$$Z4%7%?C%`:CWCWC`C`a%{{?D9,#=L];R<'K'K'K!8(9l( "	($E9 (D'C'C!8(9l( "	($E9 `o`y`y  aC  aC  EJ  ET  ET  E]  E]  _i  jo  qu  q~  q~  _  _W  DI  DU  DU  DW  _`  [`  _`  bk  bH  pu  p}  p}  ~G  pH  bT  LT  bT  U  V**q	++s/G/GGq	**c.C.CC&8O)E '+O 22E/:poNgNgNpNp:|t|:|  D  HU  U  a  Za  q  eq  q  r  s&"&"8"89O<U<U<^<^^_%((''06A { 6!B	 KKOO7%++EFik   !7!(!4J)D0H *T 1I&-E}%*
)* !"&-4Y~5N-O
 .! 3 %! %*t*; <'1D'8$) #' )2./(BI) "'">"> I# 
 "gg!)YeG "/6,C!7P  ( =%(ZZG%<F6<K
3=t   +&*O+ $ /*./$ $ *%)
*> $ 3%(ZZ
0A0A0I0IJL]L]LeLe%f
3.4Z.@O" #$U V' 3.2O33s   `# c +c3 :d ?d 2-d) #.c-b ?c b"cc$c0/c03ddddd&%d&)Af 1f
f ff ff f )r(   r)   r*   r  r  r#  r  rr  ra  rt  r  r,   r$   r"   rY  rY    s7    (" (* / ,0TdH r$   rY  )ppyasn1r   r   pyasn1.codec.berr   pyasn1.compat.integerr   pyasn1.compat.octetsr   r   r	   r
   pyasn1.typer   r   r   r   r   r   __all__registerLoggeer(   DEBUG_DECODERrC   r:   objectr   r   rp  r0   r@   r  rP   rX   r]   rt   rz   r~   r   r   r   r	  r  r  r  r  r  r  r#  r,  r/  r3  r7  r:  r=  rA  rD  rG  rJ  rM  rP  rS  rV  rV   r   r[   rr   rx   r|   r   
Enumeratedr   r   r   r!  r-  r0  r4  r8  r;  r>  rB  rE  rH  rK  rN  rQ  rT  rW  r'  r   r   r   rN   r`  valuestypeDecoderr+   rj   rangert  rv  rw  ry  rx  r{  rz  r  r  rs  rY  r   )xs   0r"   <module>r     s       , D D      *e85+>+>?
,,ef e" #%  )O ) (H. (HV () O* O*A^ A]X, ]X@@U. @UF' *=M3 =M@hO' hOV M%&@ M%`/"A /
%1 %'3 '*7 *
 "  
"$ "b%. b%J^Y& ^YD'* '*- *,/ ,*- *+. +&) &*- **- **- *,/ ,&) &
/0 /./ .&' &
LL)
LL)
 	NN+-
 	/1	

 	IIkm
 	  "9";
 	OON,
 	IIkm
 	MM57
 	HHOO&(
 	KK
 	OO-/
 	35
 	!7!9
  	35!
" 	 5 7#
$ 	NN+-%
& 	353535!7!9NN+-
""$;$=
!!#9#;
NN>+7
@ 	HHOOZ\JJ|~MM/+OO-/KKHHOOZ\ ==? *K!!-++55<<&"7)GFO	*  Ry!!A!		W f W X 
	!_ "s   ,	W