
    Vh@                     F    d dl mZmZmZ eZd dlmZ d dlm	Z	 d Z
d Zd Zy)    )absolute_importdivisionprint_function)	to_native)convert_int_to_hexc                 Z    t        |       }|dz  }|dz  }|dvr|dk(  ry|dk(  ry|dk(  ry	y
)N
   d   )            st   nd   rdth)abs)number
abs_numbermod_10mod_100s       p/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/crypto/plugins/module_utils/serial.pyr   r      sG    VJ"_F3Gl"Q;Q;Q;    c                 6   t        |       } d}t        | j                  d            D ]0  \  }}	 t        |d      }|dk  s|dkD  rt	        d      	 |d
z  |z  }2 |S # t        $ r2}t	        dj                  |dz   t        |dz         ||            d	}~ww xY w)z_
    Given a colon-separated string of hexadecimal byte values, converts it to an integer.
    r   :      z"the value is not in range [0, 255]zPThe {idx}{th} part {part!r} is not a hexadecimal number in range [0, 255]: {exc}r   )idxr   partexcN   )r   	enumeratesplitint
ValueErrorformatr   )valueresultir!   
part_valuer"   s         r   parse_serialr-       s     eEFU[[-. ,4		T2JA~c!1 !EFF "2 A++, M  	biiA"QU)$C j  	s   !A	B&-BBc           	           t               j                          t               dz  dk7  rd z    dj                   fdt	        dt               d      D              S )zo
    Given an integer, converts its absolute value to a colon-separated string of hexadecimal byte values.
    r   r   0r   c              3   .   K   | ]  }||d z      yw)r   N ).0r+   r)   s     r   	<genexpr>zto_serial.<locals>.<genexpr><   s     FE!a!e$Fs   )r   upperlenjoinrange)r)   s   `r   	to_serialr8   5   sS     u%++-E
5zA~e88FeAs5z1.EFFFr   N)
__future__r   r   r   type__metaclass__+ansible.module_utils.common.text.convertersr   Eansible_collections.community.crypto.plugins.module_utils.crypto.mathr   r   r-   r8   r1   r   r   <module>r>      s-    A @  A
*Gr   