HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //lib/python3.9/site-packages/ansible/plugins/connection/__pycache__/winrm.cpython-39.pyc
a

�)g��
@s�ddlmZmZmZeZdZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZdZzddlZdZWney�Yn0ddlmZdd	lmZmZdd
lmZddlm Z ddl!m"Z"dd
l#m$Z$m%Z%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0zHddl1Z1ddl1m2Z2ddl3m4Z4m5Z5m6Z6ddl7m8Z8ddl9Z:dZ;dZ<Wn.e�y�Z=zdZ;e=Z<WYdZ=[=n
dZ=[=00zddl>Z>dZ?dZ@Wn.e�y�Z=zdZ?e=Z@WYdZ=[=n
dZ=[=00dZAz4ddlBZBeCeBd��r.eeBjDjE�ZFdeFjGv�r.dZAWn&e�yVZ=zWYdZ=[=n
dZ=[=00zddlHZHdZIWne�y�dZIYn0e0�ZJGdd�de*�ZKdS)�)�absolute_import�division�print_functiona;
    author: Ansible Core Team
    name: winrm
    short_description: Run tasks over Microsoft's WinRM
    description:
        - Run commands or put/fetch on a target via WinRM
        - This plugin allows extra arguments to be passed that are supported by the protocol but not explicitly defined here.
          They should take the form of variables declared with the following pattern C(ansible_winrm_<option>).
    version_added: "2.0"
    extends_documentation_fragment:
        - connection_pipelining
    requirements:
        - pywinrm (python library)
    options:
      # figure out more elegant 'delegation'
      remote_addr:
        description:
            - Address of the windows machine
        default: inventory_hostname
        vars:
            - name: inventory_hostname
            - name: ansible_host
            - name: ansible_winrm_host
        type: str
      remote_user:
        description:
            - The user to log in as to the Windows machine
        vars:
            - name: ansible_user
            - name: ansible_winrm_user
        keyword:
            - name: remote_user
        type: str
      remote_password:
        description: Authentication password for the C(remote_user). Can be supplied as CLI option.
        vars:
            - name: ansible_password
            - name: ansible_winrm_pass
            - name: ansible_winrm_password
        type: str
        aliases:
        - password  # Needed for --ask-pass to come through on delegation
      port:
        description:
            - port for winrm to connect on remote target
            - The default is the https (5986) port, if using http it should be 5985
        vars:
          - name: ansible_port
          - name: ansible_winrm_port
        default: 5986
        keyword:
            - name: port
        type: integer
      scheme:
        description:
            - URI scheme to use
            - If not set, then will default to C(https) or C(http) if I(port) is
              C(5985).
        choices: [http, https]
        vars:
          - name: ansible_winrm_scheme
        type: str
      path:
        description: URI path to connect to
        default: '/wsman'
        vars:
          - name: ansible_winrm_path
        type: str
      transport:
        description:
           - List of winrm transports to attempt to use (ssl, plaintext, kerberos, etc)
           - If None (the default) the plugin will try to automatically guess the correct list
           - The choices available depend on your version of pywinrm
        type: list
        elements: string
        vars:
          - name: ansible_winrm_transport
      kerberos_command:
        description: kerberos command to use to request a authentication ticket
        default: kinit
        vars:
          - name: ansible_winrm_kinit_cmd
        type: str
      kinit_args:
        description:
        - Extra arguments to pass to C(kinit) when getting the Kerberos authentication ticket.
        - By default no extra arguments are passed into C(kinit) unless I(ansible_winrm_kerberos_delegation) is also
          set. In that case C(-f) is added to the C(kinit) args so a forwardable ticket is retrieved.
        - If set, the args will overwrite any existing defaults for C(kinit), including C(-f) for a delegated ticket.
        type: str
        vars:
          - name: ansible_winrm_kinit_args
        version_added: '2.11'
      kinit_env_vars:
        description:
        - A list of environment variables to pass through to C(kinit) when getting the Kerberos authentication ticket.
        - By default no environment variables are passed through and C(kinit) is run with a blank slate.
        - The environment variable C(KRB5CCNAME) cannot be specified here as it's used to store the temp Kerberos
          ticket used by WinRM.
        type: list
        elements: str
        default: []
        ini:
        - section: winrm
          key: kinit_env_vars
        vars:
          - name: ansible_winrm_kinit_env_vars
        version_added: '2.12'
      kerberos_mode:
        description:
            - kerberos usage mode.
            - The managed option means Ansible will obtain kerberos ticket.
            - While the manual one means a ticket must already have been obtained by the user.
            - If having issues with Ansible freezing when trying to obtain the
              Kerberos ticket, you can either set this to C(manual) and obtain
              it outside Ansible or install C(pexpect) through pip and try
              again.
        choices: [managed, manual]
        vars:
          - name: ansible_winrm_kinit_mode
        type: str
      connection_timeout:
        description:
            - Sets the operation and read timeout settings for the WinRM
              connection.
            - Corresponds to the C(operation_timeout_sec) and
              C(read_timeout_sec) args in pywinrm so avoid setting these vars
              with this one.
            - The default value is whatever is set in the installed version of
              pywinrm.
        vars:
          - name: ansible_winrm_connection_timeout
        type: int
N)�getfullargspec)�
urlunsplitFT)�	constants)�AnsibleError�AnsibleConnectionFailure)�AnsibleFileNotFound)�_filter_non_json_lines)�boolean)�to_bytes�	to_native�to_text)�binary_type)�ConnectionBase)�
_parse_clixml)�secure_hash)�Display)�Response)�
WinRMError�WinRMOperationTimeoutError�WinRMTransportError)�Protocol�spawn�echocs�eZdZdZdZdZdZdZdZ�fdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
d(dd�Zd)dd�Z�fdd�Zdd�Zd*dd�Zd+�fdd�	Zd,d d!�Z�fd"d#�Z�fd$d%�Zd&d'�Z�ZS)-�
Connectionz"WinRM connections over HTTP/HTTPS.�winrm)z.ps1z.exe�FTcszd|_d|_d|_d|_d|_d|_tt|�j|i|��t	j
svt�d��
tj�t�d��
tj�t�d��
tj�dS)NTZ
powershellZrequests_credsspZrequests_kerberosZurllib3)Zalways_pipeline_modulesZhas_native_async�protocol�shell_idZdelegateZ_shell_type�superr�__init__�CZ
DEFAULT_DEBUG�loggingZ	getLoggerZsetLevel�INFO)�self�args�kwargs��	__class__��D/usr/lib/python3.9/site-packages/ansible/plugins/connection/winrm.pyr"�szConnection.__init__c
Cs@|�d�|_|�d�|_|�d�|_|�d�|_|�d�|_|jdurZ|jdkrTdnd|_|�d	�|_|�d
�|_|�d�|_|�d�|_	t
td
�r�ttj
�|_ntgd��|_|jdus�|jddu�r|jdkr�dgndg}t�r|j�rd|jv�rdg||_n||_t|j��|j�}|�r>tdtt|�dd���|�d�}|du�rxd|jv�or|jdu�or|jdk|_n"|dk�r�d|_n|dk�r�d|_hd�}t|j|jd�|_ttj�}t|j�}|�|�dd �|�d!�D�}|�|�}|D]}	t�d"�|	���q�|�|��|�D]}	|�d!�d#|	|j|	<�qdS)$NZremote_addrZremote_userZremote_password�port�schemeia�http�https�pathZkerberos_command�	transportZconnection_timeout�FEATURE_SUPPORTED_AUTHTYPES)�	plaintext�ssl�kerberosrr5r4�@r6z?The installed version of WinRM does not support transport(s) %sZ
simplerepr)Z	nonstringZ
kerberos_moderZmanagedTZmanualF>	�passwordr2r&Z	kinit_cmd�usernamer1r.�
kinit_mode�endpoint)r9r8cSsh|]}|�dd��qS)Zansible_winrm_r)�replace��.0�vr+r+r,�	<setcomp>3�z1Connection._build_winrm_kwargs.<locals>.<setcomp>�_extraszYansible_winrm_{0} unsupported by pywinrm (is an up-to-date version of pywinrm installed?)zansible_winrm_%s) �
get_option�_winrm_host�_winrm_user�_winrm_pass�_winrm_port�
_winrm_scheme�_winrm_path�
_kinit_cmd�_winrm_transport�_winrm_connection_timeout�hasattrr�setr3Z_winrm_supported_authtypes�
HAVE_KERBEROS�
differencerr�list�
_kerb_managed�dict�
_winrm_kwargsrrr"r'�update�display�warning�format�intersection)
r&Ztransport_selectorZunsupported_transportsr:Zinternal_kwarg_mask�argspecZsupported_winrm_argsZpassed_winrm_argsZunsupported_args�argr+r+r,�_build_winrm_kwargs�sT

�

&





zConnection._build_winrm_kwargsc
Cs�|durd}t��|_t�d|jj�d|jj}|tjd<ttjd|d�}|�	d�}|D]$}||vr^|tjvr^tj|||<q^|j
g}|�	d�}|r�d	d
�t�|�D�}|�
|�n t|�	d��dd
��r�|�d�|�|�t�r�d}	|�d�}
t|ddd�}t�d|�ztj|
|d|d
d�}Wn@tj�yl}z$d|
t|�f}
t|
��WYd}~n
d}~00z|�d�|�|�Wn8t�y�}zt�dt|��WYd}~n
d}~00|��}|��|j}n�d}	t |ddd�}t�d|�zt!j"|t!j#t!j#t!j#|d�}Wn@t�yV}z&d|j
t|�f}
t|
��WYd}~n
d}~00|�$|d�\}}|j%dk}|dk�r�t|�&��}|�'t|�d�}d||	|f}
t|
��t�d |�dS)!Nrzcreating Kerberos CC at %szFILE:%s�
KRB5CCNAME�PATH)r^r]�kinit_env_vars�
kinit_argscSsg|]}|��rt|��qSr+)�stripr)r>�ar+r+r,�
<listcomp>UrAz)Connection._kerb_auth.<locals>.<listcomp>rBZ!ansible_winrm_kerberos_delegationFz-f�pexpectr�utf-8�surrogate_or_strict)�encoding�errorsz+calling kinit with pexpect for principal %s�<)�timeout�envrz5Kerberos auth failure when calling kinit cmd '%s': %sz.*:z%kinit with pexpect raised OSError: %s�
subprocessz.calling kinit with subprocess for principal %s)�stdin�stdout�stderrrk�
z
<redacted>z2Kerberos auth failure for principal %s with %s: %sz kinit succeeded for principal %s)(�tempfileZNamedTemporaryFileZ_kerb_ccacherV�vvvvv�name�os�environrSrCrJ�shlex�split�extendr�get�append�HAS_PEXPECT�poprZvvvvrdrZExceptionPexpectrr	�expectZsendline�OSError�read�waitZ
exitstatusr
rl�Popen�PIPEZcommunicate�
returncoderar<)r&Z	principalr8Z
krb5ccnameZkrb5envr_�varZ
kinit_cmdliner`Zproc_mechanism�command�child�err�err_msgro�rc�prnZexp_msgr+r+r,�
_kerb_auth@s�






��
�

�
���
�
�

�zConnection._kerb_authcCsTtjd|j|j|jf|jd�|j}trdt�d|�zt�|�Wntj	yZYn
0d|}d||jf}t
|j||jddf�}g}|j
D�]�}|dkr�ts�|�d�q�|jr�|�|j|j�tjd	||f|jd�zt|j��}|j�r
|j|d
<|jd|d<t|fd
|i|��}|j�sJ|jdd�|_tjd|j|jd�|WSt�y(}z�t|���}	t�td�|	tj��r�t d��t�td�|	�}
|
�r�t!|
�"�d�}|dk�r�d}	n|dk�r�|WYd}~S|�d||	f�tjd|	tt#�$��f|jd�WYd}~q�d}~00q�|�rHt%d�&t't(|����nt d��dS)z?
        Establish a WinRM connection over HTTP/HTTPS.
        z8ESTABLISH WINRM CONNECTION FOR USER: %s on PORT %s TO %s��hostz,checking if winrm_host %s is an IPv6 addressz[%s]z%s:%drr6z6kerberos: the python kerberos library is not installedz'WINRM CONNECT: transport=%s endpoint=%sZoperation_timeout_sec�Zread_timeout_secr2i�)ZcodepagezWINRM OPEN SHELL: %szOperation\s+?timed\s+?outz the connection attempt timed outzCode\s+?(\d{3})ri�z5the specified credentials were rejected by the serveri�Nz%s: %szWINRM CONNECTION ERROR: %s
%sz, z'No transport found for WinRM connection))rV�vvvrErGrD�
HAS_IPADDRESS�debug�	ipaddress�IPv6Address�AddressValueErrorrrHrIrKrOrzrRr�rFrrrT�copyrLrr Z
open_shell�	Exceptionrra�re�search�Ir�int�groups�	traceback�
format_excr	�join�mapr)r&Z
winrm_host�netlocr;rhr2Zwinrm_kwargsr�er��m�coder+r+r,�_winrm_connect�sd��





8zConnection._winrm_connectcCs�|D]�\}}tdd�D]�}z|j|j|j|||d�Wn�ty`t�d�|s\t�d�Ynbt	y�}zJ|dks�dt
|�vr��t�d|�d	��t�d�WYd}~qWYd}~n
d}~00qqqdS)
Nr��)�eofz�WSMan OperationTimeout during send input, attempting to continue. If this continues to occur, try increasing the connection_timeout value for this host.��z'wsmanfault_code': '170'zWSMan send failed on attempt z2 as the command is busy, trying to send data again)�range�_winrm_send_inputrr rrVrW�time�sleepr�str)r&�
command_id�stdin_iterator�dataZis_lastZattemptr�r+r+r,�_winrm_write_stdin�s"�
"zConnection._winrm_write_stdincCsvd|jdd|d�i}|d�di��di��di�}d|d	<||d
<t�t|��|d<|rbd|d
<|�t�|��dS)Nzenv:Envelopez;http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmdz<http://schemas.microsoft.com/wbem/wsman/1/windows/shell/Send)Zresource_uri�actionr zenv:Bodyzrsp:Sendz
rsp:Streamrmz@Namez
@CommandIdz#text�truez@End)Z_get_soap_header�
setdefault�base64�	b64encoder
Zsend_message�	xmltodictZunparse)r&rr r�rmr�Zrq�streamr+r+r,r�s��zConnection._winrm_send_inputr+NcCsH|js|��|_d|_|r4tjd||f|jd�ntjd||f|jd�d}�z��z�d}|jj|jt	|�t
t	|�|dud�}z|r�|�||�WnRty�}z:t�
dt|�jt|�f�t�t���d}WYd}~n
d}~00|j�|j|�}ttdd�|D���}	|�r.tjd	t|	�|jd�ntjd	t|	�|jd�tjd
t|	j�|jd�tjdt|	j�|jd�|�r�zt|	j�\}
}t�|
�WnPt�y�t	|	jdd
�}|�d��r�t|�}tdt |	j�t |�f��Yn0|	WW|�rNz|j�!|j|�WSt"�yL}
z$|
j#dk�r.�t�
d�WYd}
~
Sd}
~
00St$j%j&�y�}zt'dt |���WYd}~n
d}~00W|�rDz|j�!|j|�Wn>t"�y�}
z$|
j#dk�rƂt�
d�WYd}
~
n
d}
~
00n\|�rBz|j�!|j|�Wn>t"�y@}
z$|
j#dk�r"�t�
d�WYd}
~
n
d}
~
000dS)NTzWINRM EXEC %r %rr�F)Zconsole_mode_stdinz<ERROR DURING WINRM SEND INPUT - attempting to recover: %s %scss$|]}t|t�rt|�n|VqdS�N)�
isinstancerrr=r+r+r,�	<genexpr>*rAz)Connection._winrm_exec.<locals>.<genexpr>zWINRM RESULT %rzWINRM STDOUT %szWINRM STDERR %sre�rg�	#< CLIXMLz.winrm send_input failed; 
stdout: %s
stderr %si�z]Failed to cleanup running WinRM command, resources might still be in use on the target serverzwinrm connection error: %s)(rr��
_connectedrVrrrDZvvvvvvZrun_commandr r
r�r�r�rW�type�__name__rr�r�r�Zget_command_outputr�tuple�std_out�std_errr�json�loads�
ValueError�
startswithrrrZcleanup_commandrr��requests�
exceptionsZTimeoutr	)r&r�r'�	from_execr�r�Zstdin_push_failed�exZ	resptupleZresponseZfiltered_outputZdummyror��excr+r+r,�_winrm_execs|
$�� �("�zConnection._winrm_execcsZtstdtt���nts*tdtt���tt|���|j	sV|�
�|��|_	d|_|S)Nz&winrm or requests is not installed: %szxmltodict is not installed: %sT)
�	HAS_WINRMrr�WINRM_IMPORT_ERR�
HAS_XMLTODICT�XMLTODICT_IMPORT_ERRr!r�_connectrr\r�r��r&r)r+r,r�Ws
zConnection._connectcCs"|js
dSd|_d|_|��dSr�)r�rr r�r�r+r+r,�resetes
zConnection.reset�@
ccsDt|�}t|�}td||�D]"}||||�|||kfVqdS)Nr)r
�lenr�)r&Zpayload�buffer_sizeZ
payload_bytesZ
byte_count�ir+r+r,�_wrapper_payload_streamlsz"Connection._wrapper_payload_streamcs�tt|�j|||d�|jj|dddd�}t�d�d}|rF|�|�}|j|d|dd�d|d�}t	|j
�|_
t	|j�|_|j�d	�r�zt
|j�|_Wnty�Yn0|j|j
|jfS)
N)�in_data�sudoableTF��as_listZstrict_mode�preserve_rczEXEC (via pipeline wrapper)rr�)r�r�r�)r!r�exec_command�_shell�_encode_scriptrVr�r�r�r
r�r�r�rr��status_code)r&�cmdr�r��	cmd_partsr��resultr)r+r,r�rs

zConnection.exec_command��c	#s�tj�t|dd��}d}tt|dd�d����t��fdd�d�D]R}|t|�7}|jjd|||t|�f|j	d	�t
�|�d
}|���|kfVq@|dkr�dVWd�n1s�0YdS)Nrf�rhr�rbcs
����Sr�)rr+�r�Zin_filer+r,�<lambda>�rAz5Connection._put_file_stdin_iterator.<locals>.<lambda>rAz*WINRM PUT "%s" to "%s" (offset=%d size=%d)r�s
)rT)
rtr1�getsizer
�open�iterr�Z_displayrrrDr�r��tell)r&�in_path�out_pathr�Zin_size�offsetZout_dataZb64_datar+r�r,�_put_file_stdin_iterator�s"z#Connection._put_file_stdin_iteratorcshtt|��||�|j�|�}tjd||f|jd�tj	�
t|dd��sZtdt
|���d}|�|j�|��}|jj|dddd	�}|j|d
|dd�|�||�d�}|jd
kr�tt
|j���zt�|j�}WnPt�y t|jd
d�}|�d��rt|�}tdt
|j�t
|�f��Yn0|�d�}	|	�s:td��t|�}
|	|
k�sdtd�t
|	�t
|
����dS)NzPUT "%s" TO "%s"r�rfr�z#file or module does not exist: "%s"a�
            begin {{
                $path = '{0}'

                $DebugPreference = "Continue"
                $ErrorActionPreference = "Stop"
                Set-StrictMode -Version 2

                $fd = [System.IO.File]::Create($path)

                $sha1 = [System.Security.Cryptography.SHA1CryptoServiceProvider]::Create()

                $bytes = @() #initialize for empty file case
            }}
            process {{
               $bytes = [System.Convert]::FromBase64String($input)
               $sha1.TransformBlock($bytes, 0, $bytes.Length, $bytes, 0) | Out-Null
               $fd.Write($bytes, 0, $bytes.Length)
            }}
            end {{
                $sha1.TransformFinalBlock($bytes, 0, 0) | Out-Null

                $hash = [System.BitConverter]::ToString($sha1.Hash).Replace("-", "").ToLowerInvariant()

                $fd.Close()

                Write-Output "{{""sha1"":""$hash""}}"
            }}
        TFr�rr�)r�rer�r�z,winrm put_file failed; 
stdout: %s
stderr %sZsha1zRemote sha1 was not returnedz2Remote sha1 hash {0} does not match local hash {1})r!r�put_filer��_unquoterVr�rDrtr1�existsr
r
rrX�_escaper�r�r�r�rr�r�r�r�r�r�rryr)r&r�r�Zscript_template�scriptr�r�Z
put_outputroZremote_sha1Z
local_sha1r)r+r,r��s0$
 

zConnection.put_filec
s�tt|��||�|j�|�}|�dd�}tjd||f|jd�d}d}�zVd}�zdt	||j�
|�|d�}tjd	|||f|jd�|jj|d
dd�}|�
|d|d
d��}|jdkr�tt|j���|j��dkr�d}	nt�|j���}	|	du�rW�q�n^|�s6tj�t|dd���r$W�q�tt|dd�d�}|�|	�t|	�|k�rTW�q�|t|	�7}WqRt�y�t��t dt|���YqR0qRW|�r�|�!�n|�r�|�!�0dS)N�\�/zFETCH "%s" TO "%s"r�ira.
                        $path = '%(path)s'
                        If (Test-Path -Path $path -PathType Leaf)
                        {
                            $buffer_size = %(buffer_size)d
                            $offset = %(offset)d

                            $stream = New-Object -TypeName IO.FileStream($path, [IO.FileMode]::Open, [IO.FileAccess]::Read, [IO.FileShare]::ReadWrite)
                            $stream.Seek($offset, [System.IO.SeekOrigin]::Begin) > $null
                            $buffer = New-Object -TypeName byte[] $buffer_size
                            $bytes_read = $stream.Read($buffer, 0, $buffer_size)
                            if ($bytes_read -gt 0) {
                                $bytes = $buffer[0..($bytes_read - 1)]
                                [System.Convert]::ToBase64String($bytes)
                            }
                            $stream.Close() > $null
                        }
                        ElseIf (Test-Path -Path $path -PathType Container)
                        {
                            Write-Host "[DIR]";
                        }
                        Else
                        {
                            Write-Error "$path does not exist";
                            Exit 1;
                        }
                    )r�r1r�z$WINRM FETCH "%s" to "%s" (offset=%d)TF)r�r�r�z[DIR]rfr��wbzfailed to transfer file to "%s")"r!r�
fetch_filer�r�r<rVr�rDrSr�rrr�r�r��IOErrorrr�r�rar�Z	b64decodertr1�isdirr
r��writer�r�r��	print_excr�close)
r&r�r�r�Zout_filer�r�r�r�r�r)r+r,r��sJ�



�zConnection.fetch_filecCsF|jr0|jr0tjd|j|jd�|j�|j�d|_d|_d|_dS)NzWINRM CLOSE SHELL: %sr�F)rr rVrrrDZclose_shellr�r�r+r+r,rszConnection.close)F)r+FN)r�)NT)r�)r��
__module__�__qualname__�__doc__r2Z!module_implementation_preferencesZallow_executableZhas_pipeliningZallow_extrasr"r\r�r�r�r�r�r�r�r�r�r�r�r�r�
__classcell__r+r+r)r,r�s*J`;%

I

?Cr)LZ
__future__rrrr�Z
__metaclass__Z
DOCUMENTATIONr�r$rtr�r�r�rqrvrlr��inspectr�urllib.parserrOr6�ImportErrorZansiblerr#Zansible.errorsrr	r
Zansible.module_utils.json_utilsrZ)ansible.module_utils.parsing.convert_boolrZansible.module_utils._textr
rrZansible.module_utils.sixrZansible.plugins.connectionrZ ansible.plugins.shell.powershellrZansible.utils.hashingrZansible.utils.displayrrrZwinrm.exceptionsrrrZwinrm.protocolrZrequests.exceptionsr�r�r�r�r�r�r�r{rdrMrr"rZr'r�r�rVrr+r+r+r,�<module>s�