
    Vh                     &   d dl mZmZmZ eZd dlZd dlmZm	Z	  G d de
      Zdddd	d
ddddddddZ eej                         D  cg c]	  \  } }|| f c}}       ZdZej"                  d    dk  reZnd ZddZd Zd Zd Zd ZddZyc c}} w )    )absolute_importdivisionprint_functionN)	to_nativeto_bytesc                       e Zd Zy)
ParseErrorN)__name__
__module____qualname__     s/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/routeros/plugins/module_utils/quoting.pyr	   r	      s    r   r	      "   \   ?   $                
      	   )r   r   r   r      _   a   b   f   n   r   t   vs   0123456789ABCDEF   c                     t        | f      S )N)bytes)values    r   _int_to_byter(   +   s    eYr   c                 x   t        |       } t        |       }|}||k(  rt        d      d}| ||dz    dk(  rd}|dz  }g }||k  r| ||dz    }|dz  }|s|dk(  r|dz  }n|dk(  r&|rd}| ||dz    dvrt        d      nt        d	      |d
k(  r|st        d      ||k(  rt        d      | ||dz    }|dz  }|t        v r|j	                  t        |          nt
        j                  |      }|dk  r#t        dj                  t        |                  ||k(  rt        d      | ||dz    }	t
        j                  |	      }
|dz  }|
dk  r&t        dj                  t        ||	z                     |j	                  t        |dz  |
z                nb|s'|dv r#t        dj                  t        |                  |dk(  r#t        dj                  t        |                  |j	                  |       ||k  r|rt        d      |r||k  rt        d      t        dj                  |            |fS )aK  
    Parse an argument value (quoted or not quoted) from ``line``.

    Will start at offset ``start_index``. Returns pair ``(parsed_value,
    end_index)``, where ``end_index`` is the first character after the
    attribute.

    If ``must_match_everything`` is ``True`` (default), will fail if
    ``end_index < len(line)``.
    z'Expected value, but found end of stringF   r   Tr   )r   r   z5Ending '"' must be followed by space or end of stringz('"' must not appear in an unquoted valuer   z6Escape sequences can only be used inside double quotesz&'\' must not be at the end of the liner   zInvalid escape sequence '\{0}'z*Hex escape sequence cut off at end of linez"Invalid hex escape sequence '\{0}'   )   '   =   (   )r      [   {   `z+"{0}" can only be used inside double quotesr   z&"{0}" can only be used in escaped formz1Unexpected end of string during escaped parameterzUnexpected data at end of valuer   )r   lenr	   ESCAPE_SEQUENCESappendESCAPE_DIGITSfindformatr   r(   join)linestart_indexmust_match_everythinglengthindexquotedcurrentchd1ch2d2s              r   parse_argument_valuerE   /   s    D>DYFEBCCFE%!)$
G
&.%	"
"*QJE4Zeai(;$%^__IJJ5[ !YZZ !LMMeEAI&BQJE%%/34"''+6$%H%O%OPYZ\P]%^__F?$%QRR5+"'',
6$%L%S%ST]^`cf^fTg%hii|BGbL9:b$TT !N!U!UV_`bVc!deeTz !I!P!PQZ[]Q^!_``NN2O &.P LMM:;;SXXg&'..r   c                    t        |       } g }g }d}t        |       }d}||k  r| ||dz    }|dz  }|dk(  r'|rd}|j                  dj                  |             g }n|dk(  rc|ra|j                  |       t	        | |d      \  }}|j                  t        |             d}|j                  dj                  |             g }n:|dv r#t        d	j                  t        |                  |j                  |       d
}||k  r|r"|r |j                  dj                  |             |D cg c]  }t        |       c}S c c}w )Nr   Fr*   r   r   r-   )r;   r<   )r   r   r,   r-   r.   r/   r   r0   r1   r2   r   zFound unexpected "{0}"T)r   r3   r5   r9   rE   r	   r8   r   )	r:   resultr@   r>   r=   parsing_attribute_namerA   r'   parts	            r   split_routeros_commandrJ   s   s?   D>DFGEYF"
&.%	"
:%).&chhw/04Z2NN2/%_deLE5NN8E?+%*"MM#((7+,GVV5<<Yr]KLLNN2%)"' &.( 'chhw'((./IdO///s   -Ec                    t        |       } g }d}t        |       }d}||k  r| ||dz    }|dz  }|t        v r|j                  dt        |   z         d}8t	        |      dk  rBt	        |      }|dz  }|dz  }|j                  dt
        ||dz    t
        ||dz    fz         d}|d	v rd}|j                  |       ||k  rt        d
j                  |            } |s| sd| z  } | S )NFr   r*   s   \%sT    r+   s   \%s%s)r   r-      ;r,   r   z"%s")r   r3   ESCAPE_SEQUENCE_REVERSEDr5   ordr6   r   r9   )	argumentrG   quoter=   r>   lettervv1v2s	            r   quote_routeros_argument_valuerV      s   !HFE]FE
&.%	*
--MM'$<V$DDEE[2FARBbBMM)}RQ'?rRTWXRXAY&ZZ[E//Ef! &." &)*HHH$Or   c                     d }d| vr
 ||        | S | j                  dd      \  }} ||       t        |      }|d|S )Nc                 $    d| v rt        d      | S )N z'Attribute names must not contain spaces)r	   )	attributes    r   check_attributez0quote_routeros_argument.<locals>.check_attribute   s    )FGGr   =r*   )splitrV   )rP   r[   rZ   r'   s       r   quote_routeros_argumentr^      sP    
 (!~~c1-IuI)%0E''r   c                 \    dj                  | D cg c]  }t        |       c}      S c c}w )NrY   )r9   r^   )	argumentsrP   s     r   join_routeros_commandra      s%    88yQ8,X6QRRQs   )c                     i }| D ]A  }d|vr|rt        d|z        d ||<   |j                  dd      }|r|d   s7|d   ||d   <   C |S )Nr\   zmissing '=' after '%s'r*   r   )r	   r]   )string_listrequire_assignmentskip_empty_values
dictionaryps        r   convert_list_to_dictionaryrh      so    J $a<! !9A!=>> JqMGGCO AaD tJqt$ r   )r   T)TF)
__future__r   r   r   type__metaclass__sys+ansible.module_utils.common.text.convertersr   r   	Exceptionr	   r4   dictitemsrN   r6   version_infochrr(   rE   rJ   rV   r^   ra   rh   )krS   s   00r   <module>rt      s    A @  K	 	
 









   4D4J4J4L MDAq!Q MN # AL A/H0@:( SC !Ns   B
