HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/root/proc/self/root/usr/local/CyberCP/serverStatus/__pycache__/views.cpython-310.pyc
o

��h���@s�ddlmZmZddlmZddlmZddlm	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlZddlmZddlZddlmZdd	lmZdd
lmZddlmZdZdZd
ZdZdZ dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%dd�Z&dd�Z'dd�Z(d d!�Z)d"d#�Z*d$d%�Z+d&d'�Z,d(d)�Z-d*d+�Z.d,d-�Z/d.d/�Z0d0d1�Z1d2d3�Z2d4d5�Z3d6d7�Z4d8d9�Z5d:d;�Z6d<d=�Z7d>d?�Z8d@dA�Z9dS)B�)�render�redirect)�HttpResponseN)�
loadLoginPage)�
ACLManager)�virtualHostUtilities�)�serverStatusUtil)�ProcessUtilities)�httpProc)�installUtilities��z2.4�cC�t|ddd�}|��S)NzserverStatus/index.html�admin�rr��request�proc�r�(/usr/local/CyberCP/serverStatus/views.py�serverStatusHome ��rcCr)Nz#serverStatus/Switchoffsecurity.htmlrrrrrr�Switchoffsecurity&rrcCs�z�|jd}t��}d}t��tjkrd}d}|jddkr#d}t}n|jddkr/d}t}nt}z/t�	d	d
g��
d�}|d}|d}d}g}	|D]}
|dksT|dkrY|d}qJ|	�|
�qJWn-ty�}z!t
j�t|�d�t|d
|d||d�d�}|��WYd}~WSd}~ww|dkr�||||	||d�}
t|d
|
d�}|��WS|||	||d�}
t|d
|
d�}|��WSty�}zt
j�t|�d�tt�WYd}~Sd}~ww)N�userIDrr�QUERY_STRING�bundle��expirezBIt looks like your license has expired. Kindly renew your license.z/usr/local/lsws/bin/lshttpdz-v�
z[litespeedStatus]z!serverStatus/litespeedStatus.htmlzLFor some reaons not able to load version details, see CyberCP main log file.)�processList�liteSpeedVersionStatus�OLS�messager)r!�	lsversion�modules�
loadedModulesr#r$)r%r&r'r#r$)�sessionr
�getLitespeedProcessNumber�decideServerr#�META�BUNDLE�EXPIRE�NOTHING�outputExecutioner�split�append�
BaseException�logging�CyberCPLogFileWriter�writeToFile�strrr�KeyErrorrr)rrr!r#r$�versionInformationr%r&�counterr'�items�msgr�dataForHtmlrrr�litespeedStatus,sl
������
�
��r=c
Cs�zU|jd}t�|�}|ddkrnt�dd�WSt�|j�}|d}|dkr:t��dkr3ddd�}ndddd�}nt�	�dkrFddd�}ndddd�}t�
|�}t|�WStyu}zt
j�t|�d	�td
�WYd}~Sd}~ww)Nrrr�rebootr)r>�shutdownz!Please see CyberCP main log file.)r>r?�
error_messagez[stopOrRestartLitespeed]�Not Logged in as admin)r(r�	loadedACL�
loadErrorJson�json�loads�bodyr�reStartLiteSpeedSocket�stopLiteSpeedSocket�dumpsrr7r3r4r5r6)rr�
currentACL�datar>�status�
final_jsonr;rrr�stopOrRestartLitespeedgs,



��rNcCr)Nz$serverStatus/cybercpmainlogfile.htmlrrrrrr�cyberCPMainLogFile��rOc
Cs�z4|jd}t�|�}|ddkrnt�dd�WStj�dtjj�}t|�}d|d�}t	�
|�}t|�WStyY}zddd	�}tj�
t|�d
�td�WYd}~Sd}~ww)Nrrr�	logstatusr�2)rQ�logsdatazZCould not fetch data from log file, please see CyberCP main log file through command line.)rQ�errorzetFurtherDataFromLogFile]rA)r(rrBrCr3r4�readLastNFiles�fileNamer6rDrIrr7r5)rrrJ�fewLinesOfLogFilerLrMr;rrr�getFurtherDataFromLogFile�s&




���rXcCs\i}t��tjkrd|d<nd|d<d}tj�|�sd|d<nd|d<t|d|d	�}|��S)
N�
OpenLiteSpeed�
serverNamez
LiteSpeed Entz/usr/bin/dockerF�isDockerTzserverStatus/services.htmlr)r
r*r#�os�path�existsrr)rrK�dockerInstallPathrrrr�services�s

r`csl�z&|jd}t�|�}|ddkrnt�dd�WSg}g}g}g}g}g}t�d���fdd�}	d	d
�}
|�|	d��|	d�rH|�|
d��n|�d�|�|	d��t��tjkrt�d
�}|�	d�dkrt|�d�|�|
d��n<|�d�|�d�n1t
�
t
jt
j�}|�
d�}
|
dkr�|�d�n|�d�|��|	d�r�|�|
d��n|�d�|�|	d��|	d�r�|�|
d��n|�d�|�|	d��|	d�r�|�|
d��n|�d�|�|	d��|	d�r�|�|
d��n|�d�|d|d|d|d|d|dd�|d|d|d|d|dd�d�}tt�|��WSt�y5tt�YSw)Nrrr�
serviceActionrzps -Acs|�vrdSdS)Nrrr)�service��processlistrr�getServiceStats�sz'servicesStatus.<locals>.getServiceStatscSs<d}t��D]}||��vrt�|j�}||��j7}q|S)Nr)�psutil�process_iter�name�Process�pid�memory_info�rss)rb�memCountr�processrrr�getMemStats�s�z#servicesStatus.<locals>.getMemStats�	litespeed�dockerzsystemctl status mysqlzactive (running)����mariadbd)z	127.0.0.1i��mysql�pdns�	pure-ftpd�postfix)rprt�powerdns�pureftprwrq)rprtrxryrw)rL�memUsage)r(rrBrCr
r/r1�decideDistro�centos�find�socket�AF_INET�SOCK_STREAM�
connect_ex�closerrDrIr7rr)rrrJ�lsStatus�	sqlStatus�	dnsStatus�	ftpStatus�
mailStatus�dockerStatusrero�mysqlResult�s�result�	json_datarrcr�servicesStatus�s�


	









����r�c

Cs�z�|jd}t�|�}|ddkrnt�dd�WSzj|jdkr�t�|j�}|d}|d}|d	vrAdd
d�}t�|�}t	|�WWS	|dvrVdd
d�}t�|�}t	|�WWS|dkret
j�d�rcd}nd}d||f}t
�|�ddd�}t�|�}t	|�WWSWWdSty�}	zdt|	�d�}t�|�}t	|�WYd}	~	WSd}	~	wwty�}	zdt|	�d�}t�|�}t	|�WYd}	~	Sd}	~	ww)Nrrrrar�POSTrb�action)�stop�start�restartzInvalid Action)rar@)�lswsrtrurvrqzInvalid Servicervz/etc/lsb-releasezpure-ftpd-mysqlzsudo systemctl %s %s)r(rrBrC�methodrDrErFrIrr\r]r^r
�executionerr2r6r7)
rrrJrKrbr��	final_dicrM�commandr;rrr�servicesAction%sT









� 
��
��r�c	
Cs�zQ|jd}t�|�}|ddkrnt�dd�WSt�|j�}z|d}Wnd}Ydtjd	}|d
|}t	�
|�t�d�ddd
�}t�
|�}t|�WStys}zdt|�d
�}t�
|�}t|�WYd}~Sd}~ww)NrrrrLr�
licenseKey�trialz#sudo /usr/local/CyberCP/bin/python z!/serverStatus/serverStatusUtil.pyz switchTOLSWS --licenseKey r
�None�rLr@)r(rrBrCrDrErFr�
cyberPanelr
�popenExecutioner�time�sleeprIrr2r6)	rrrJrKr��execPath�data_retr�r;rrr�switchTOLSWSZs0







��r�c
Cs�z=|jd}t�|�}|ddkrnt�dd�WSt�|j�}|d}|d}|d}|d	}dd
d�}t�|�}	t|	�WSt	y_}
zdt
|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)NrrrrLr�ActivateTags�DeactivatedTags�RuleID�Regular_expressionsr�r�)r(rrBrCrDrErFrIrr2r6)rrrJrKr�r�r�r�r�r�r;rrr�securityruleUpdate|s(





��r�c
Cs$zbdtjj}t�|�}|�d�dkr/dtjj}t�|�dd|dd�}t�|�}t	|�WS|�d�dkrRdtjj}t�|�dd|dd�}t�|�}t	|�WSdd|dd�}t�|�}t	|�WSt
y�}z#dtjj}t�|�ddt|�dd�}t�|�}t	|�WYd}~Sd}~ww)	Nz	sudo cat z[404]rrzsudo rm -f rr)rL�abort�
requestStatus�	installedz[200])r	�ServerStatusUtil�lswsInstallStatusPathr
r/r}r�rDrIrr2r6)rr��outputr�r�r;rrr�switchTOLSWSStatus�s4










��r�c	
Cs2zv|jd}zMt�|�}|ddkrnt�dd�WWSd}t�|�}|�d�dkr;ddd	d
d�}t�|�}t	|�WWSd}t�|�}dd||d�}t�|�}t	|�WWSt
yv}zdt|�d
�}t�|�}t	|�WYd}~WSd}~wwty�}zdt|�d
�}t�|�}t	|�WYd}~Sd}~ww)NrrrrLrz'sudo cat /usr/local/lsws/conf/serial.nozNo such file or directoryrrzTrial License in use.z/Trial license expires 15 days after activation.)rL�erroMessage�lsSerial�lsexpiration�#sudo /usr/local/lsws/bin/lshttpd -V�rLr�)
r(rrBrCr
r/r}rDrIrr2r6r7)	rrrJr��serialr�rM�
expirationr;rrr�
licenseStatus�s@


�



��
��r�c
Csz^|jd}z5t�|�}|ddkrnt�dd�WWSd}t�|�d}t�|�t��ddi}t�	|�}t
|�WWSty^}zdt|�d�}t�	|�}t
|�WYd}~WSd}~wwt
y�}zdt|�d�}t�	|�}t
|�WYd}~Sd}~ww)	NrrrrLrr��#sudo /usr/local/lsws/bin/lshttpd -rr�)r(rrBrCr
r/r�reStartLiteSpeedrDrIrr2r6r7)rrrJr�r�rMr;rrr�refreshLicense�s6





��
��r�c
CsLz�|jd}zZt�|�}|ddkrnt�dd�WWSt�|j�}|d}d}t�|�d}t	|d	�}|�
|�|��d
}t�|�d}t�|�d}t�|�dd
d�}t�|�}	t
|	�WWSty�}
zdt|
�d�}t�|�}	t
|	�WYd}
~
WSd}
~
wwty�}
zdt|
�d�}t�|�}	t
|	�WYd}
~
Sd}
~
ww)NrrrrLr�newKeyz8sudo chown -R cyberpanel:cyberpanel /usr/local/lsws/confz/usr/local/lsws/conf/serial.no�wz.sudo chown -R lsadm:lsadm /usr/local/lsws/confr�z)sudo /usr/local/lsws/bin/lswsctrl restartr�r�)r(rrBrCrDrErFr
r��open�writer�rIrr2r6r7)rrrJrKr�r��
serialPath�
serialFiler�rMr;rrr�
changeLicense�sH










��
��r�cCr)NzserverStatus/topProcesses.htmlrrrrrr�topProcesses-rPr�cCs*�z�|jd}t�|�}|ddkrnt��WStdd��}tjdd|d�Wd�n1s0wYtdd	���}d
}d}d}|d�d�}d
d�|D�}|d�d�}	dd�|	D�}	|d�d�}
dd�|
D�}
|D]L}|d}|dkryqn|�d�}dd�|D�}|d|d|d|d|d|d|d|d|dd�	}
|dkr�|t	�
|
�}d}qn|dt	�
|
�}qn|d}i}d|d<d|d<||d <|	d|d!<|d"�d�|d#<|d$�d�|d%<|d&|d'<|	dd(|d)<|	dd(|d*<|	dd(|d+<|	d,d(|d-<t�
d.���}ttd|d�d���|d<ttd|d�d���|d<zd/|dd|d0<Wn
d/d1|d0<Yzd/|dd|d2<Wn
d/d1|d2<Yzd/|dd3|d4<Wn
d/d1|d4<Yzd/|dd|d5<Wn
d/d1|d5<Yzd/|dd|d6<Wn
d/d1|d6<Yzd/|dd|d7<Wn
d/d1|d7<Yzd/|dd3|d8<Wn
d/d1|d8<Yzd/|dd|d9<Wn
d/d1|d9<Y|
d|d:<|
d3|d;<|
d|d<<|
d|d=<|
d|d><d?}t�
|���}ddl}|��|d@<|D]P}|�dA�d&k�r<|�dB�d�d�}|�dC�}|d|�|dD<�q|�dE�d&k�rR|�dB�d�d�|dF<�q|�dG�d&k�rh|�dB�d�d�|dH<n�qdI}t|�}|��}|�dJd�d}||dK<dLttt�f|dM<t��tjk�r�dN|dO<n&t��tjk�r�dP|dO<nt��tjk�r�dQ|dO<nt��tjk�r�dR|dO<t�
dS�|dT<ddl}|�dU�\}}}dV|dW|dX<dV|dW|dY<dZ|dW|d[<t	�
|�}t |�WSt!�y}zdt|�d\�}t	�
|�}t |�WYd}~Sd}~ww)]Nrrrz/home/cyberpanel/topr�z
top -n1 -bT)�shell�stdout�r�[r� cS�g|]}|dkr|�qS�rr��.0�arrr�
<listcomp>F�z&topProcessesStatus.<locals>.<listcomp>r
cSr�r�rr�rrrr�Ir�cSr�r�rr�rrrr�Lr��cSr�r�rr�rrrr�Tr�r���	�
�)	�PID�User�VIRT�RES�S�CPU�MEM�Time�Command�,�]rLr�r@rK�cpuNow����cpuOne����cpuFiverr�
cpuFifteen�%�ioWait�idleTime�hwInterrupts�
�Softirqszfree -mz%sMB�totalMemory�0�
usedMemoryr�
freeMemory�	buffCache�swapTotalMemory�swapUsedMemory�swapFreeMemory�
swapBuffCache�totalProcesses�runningProcesses�sleepingProcesses�stoppedProcesses�zombieProcesseszsudo cat /proc/cpuinfo�coresz
model name�:r��	modelNamezcpu MHz�cpuMHZz
cache size�	cacheSizez/etc/cyberpanel/machineIPr �	ipAddresszv%s.%s�CyberPanelVersionzCentos 8�OSzUbuntu 20.04zCentos 7zUbuntu 18.04zuname -r�Kernel�/z%s GBi@�	TotalDisk�
TotalDiskUsedz %s GB�
TotalDiskFreer�)"r(rrB�	loadErrorr��
subprocess�call�	readlinesr0rDrI�rstripr
r/�
splitlines�list�filterrf�	cpu_countr}�strip�read�VERSIONr6�BUILDr{�cent8�ubuntu20r|�ubuntu�shutil�
disk_usagerr2)rrrJ�outfilerKr��checkerr9�loadAVG�loadNow�	processesr:�points�dic�
memoryInf0r�r�rfr��index�ipFile�f�ipDatar�r�total�used�freerMr;r�rrr�topProcessesStatus2s


�
�
�





��r(c	
Cs�z[|jd}z2t�|�}|ddkrnt�dd�WWSt�|j�}|d}t�d|�t	|d�}|�
dd�WWSty[}zdt|�d�}t�
|�}t|�WYd}~WSd}~wwty}}zdt|�d�}t�
|�}t|�WYd}~Sd}~ww)	NrrrrLrrjz
sudo kill r�)r(rrBrCrDrErFr
r�r�ajaxr2r6rIrr7)	rrrJrKrjrr;r�rMrrr�killProcess�s0



��
��r*cCr)Nz serverStatus/packageManager.htmlrrrrrr�packageManagerrPr+c%CsJ�z�|jd}t�|�}|ddkrnt��WSt�|j�}tt|d��	d��}t|d�}|d}t
��t
jksAt
��t
j
kr�d}t
�|��d�}|d	kr[d
}t�t
�|��}	�nd}t
�|��d�}	|	dd�}	g}
|d
kr�|	D]}|�d�dkr�|
�|�qs|
}	n�t
��t
jks�t
��t
jk�rntj�d�r�d}ntj�d�r�d}t|d���}
g}|
�d�dkr�t|d���}|D]}|�d�dkr�|�d�d�	d��d�}nq�|dk�r6d}d}t
�|��d�}|D]}|dkr�||d�}n|d}q�g}|D]
}|�|�d�d��qd}t
�|��d�}	d}|	D]}|�d�dk�r/|	|d�}	n|d}�qn8|d
k�r_d}d}t
�|��d�}	|	D]}|dk�rX|	|d�}	n|d}�qIn|d	k�rnd}t�t
�|��}	ddlm}|�t|	�|�}|�||�\}}|	||�}d}d}d}tj�t
j��r�t j!�"dt|��ddl#}|D�]�}t
��t
jk�s�t
��t
j
k�r�z�|d	k�r�|d �d!�d}||v�r�d}nd}||d"|d#�}|d}|dk�r�|t�$|�}d}n�|d$t�$|�}nw|�d%�}d&} |d�d�d'�d�dk�r#|d�d�}!d(|!d'|!d|!d)f} |d�d!�d|v�r2d}nd}|d�d!�dd*|d�d�d|d�d�d+f| |d,�}|d}|dk�rg|t�$|�}d}n	|d$t�$|�}W�q�t%�y�}"zt j!�"d-t|"��WYd}"~"�q�d}"~"wwt
��t
jk�s�t
��t
jk�rhz�|dk�s�|d
k�r|�d�}#d.d/�|#D�}#|dk�r�|#d|v�r�d0} nd1} nd0} |#d�d2�d|v�r�d}nd}|#d|#d| |d,�}|d}|dk�r�|t�$|�}d}nF|d$t�$|�}n<|d	k�rA|d }|�d2�d|v�rd}nd}||d"|d#�}|d}|dk�r8|t�$|�}d}n	|d$t�$|�}W�q�t%�yg}"zt&t|"��t j!�"d3t|"��WYd}"~"�q�d}"~"ww�q�|d4}d|||t|	�d5�}$t�$|$�}t'|�WSt%�y�}"zdt|"�d6�}$t�$|$�}t'|�WYd}"~"Sd}"~"ww)7Nrrr�pager �
recordsToShow�typezapt-mark showhold�
CyberPanelz'cat /usr/local/CyberCP/AllCPUbuntu.jsonzapt list --installedr�upgrade�
upgradablerr�
/etc/yum.conf�/etc/yum/yum.confr��exclude�=r�r�zyum check-updaterrzyum list installedzInstalled Packagesz'cat /usr/local/CyberCP/CPCent7repo.json)�	S3Backupsr�zFinal packages: %s�Packager�Version)�package�version�lockr��nowz
Not Neededrz%s %s %sr�z%s %sr
)r9r:r0r;z[ERROR] %s. [fetchPackages:773]cSr�r�rr�rrrr��r�z!fetchPackages.<locals>.<listcomp>zUpgrade availablezNot needed.�.z[ERROR] %s. [fetchPackages:839]r�)rL�packages�
pagination�fetchedPackages�
totalPackagesr�)(r(rrBrrDrErF�intr6rr
r{rrr/r0r}r1r|rr\r]r^r�rr
�s3Backups.s3Backupsr6�
getPagination�len�recordsPointer�	debugPathr3r4r5�rerIr2�printr)%rrrJrKr,r-r.r��lockedr>�upgradePackages�pack�yumConf�yumConfDatar:�startForUpdate�updates�updateNeeded�	startFromr6r?�
endPageNumber�finalPageNumber�
finalPackagesr�rr9rH�packageNamer;r�nowSplittedr0�currentr;�detailsr�rrr�
fetchPackagessb



���

�

�

 

�

&�
�"�� 

�

�
�"���8�


��rZc

Csz^|jd}t�|�}|ddkrnt��WSt�|j�}|d}t��tj	ks/t��tj
kr9d|}t�|�}nt��tjksGt��tj
krPd|}t�|�}d|d�}t�|�}t|�WSty�}	zdt|	�d	�}t�|�}t|�WYd}	~	Sd}	~	ww)
Nrrrr9zapt-cache show %szyum info %s)rL�packageDetailsrr�)r(rrBrrDrErFr
r{rrr/r|rrIrr2r6)
rrrJrKr9r�r[r�r�r;rrr�fetchPackageDetailss.







��r\c
Cs�zW|jd}t�|�}|ddkrnt��WSt�|j�}|d}ddlm}t	j
�|jdd�i}||d<ddl
m}|d	|�}|��t�d
�ddi}	t�|	�}
t|
�WStyy}zdt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)
Nrrrr9r)r�zStarting package(s) upgrade..)�ApplicationInstaller�
updatePackager
rLr�)r(rrBrrDrErF�serverStatus.serverStatusUtilr�r3r4�statusWriterr��plogical.applicationInstallerr]r�r�r�rIrr2r6)rrrJrKr9r��	extraArgsr]�
backgroundr�r�r;rrrr^"s8



�




��r^c
CsJ�z|jd}t�|�}|ddkrnt��WSt�|j�}|d}|d}t��tj	ks4t��tj
krL|dkrBd|}t�|�n�d|}t�|�n�t��tjksZt��tj
kr�|�d	�d}tj�d
�rjd
}ntj�d�rrd}t�d|�}|��}d
}	|dkr�t|	d�}
|D]}|�d�dkr�|
�|�|d��q�|
�|�q�|
��nA|�d�dkr�t|	d�}
|
�d|�|
��n)t|	d�}
|D]}|�d�dkr�|�d�}|
�d||f�q�|
�|�q�|
��d|	|f}t�|�ddi}
t�|
�}t|�WSt�y$}zdt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrrrr9r.rzapt-mark unhold %szapt-mark hold %sr=r2r3zcat %sz/home/cyberpanel/yumTempr�r4rrrr�zexclude=%s
r z%s %s
zmv %s %srLr�)r(rrBrrDrErFr
r{rrr�r|rr0r\r]r^r/rr�r}�
writelines�replacer�rrIrr2r6)rrrJrKr9r.r�rMrN�
yumConfTmpr5r:�excludeLiner�r�r;rrr�
lockStatusJsj












��rhcCs"t��}t|dd|id�}|��S)Nz&serverStatus/changeCyberPanelPort.html�portr)r
�fetchCurrentPortrr)rrirrrr�CyberPanelPort�srkc
Cs�z�|jd}t�|�}|ddkrnt��WSt�|j�}|d}ddlm}ddl	m
}ddlm}d	}t
j�|�rT||�}	d
|d�}
|	�|
�d|d�}
|	�|
�nZz|jjd
d�}|�d|jd�||_|��|�d|d�Wn:z|d|dd�}|��|�d|d�d}
t�|
�Wnty�}ztj�t|��WYd}~nd}~wwYd|}
t�|
�t�d�ddi}t�|�}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrrrrir)�FirewallUtilities)�FirewallManager)�
FirewallRulesz/etc/csf�TCP_IN)�protocol�ports�TCP_OUT�CPCustomPort)rh�tcpz	0.0.0.0/0�	SSHCustom)rhri�protoz-firewall-cmd --permanent --remove-service=sshz,echo '*:%s' > /usr/local/lscp/conf/bind.confzsystemctl restart lscpdrLr�) r(rrBrrDrErF�plogical.firewallUtilitiesrl�firewall.firewallManagerrm�firewall.modelsrnr\r]r^�modifyPorts�objects�get�
deleteRuleri�save�addRuler
r�r2r3r4r5r6rIr)rrrJrKrirlrmrn�csfPath�fm�dataIn�updateFW�newFireWallRuler�r;r�r�rrr�submitPortChange�s`





���




��r�):�django.shortcutsrr�django.httpr�plogical.CyberCPLogFileWriterr4r3�loginSystem.viewsrrDrrfr~�plogical.aclrr\�plogical.virtualHostUtilitiesrr�rr	�plogical.processUtilitiesr
�plogical.httpProcr�plogical.installUtilitiesrr.r,r-rrrrr=rNrOrXr`r�r�r�r�r�r�r�r�r�r(r*r+rZr\r^rhrkr�rrrr�<module>s`;"m5"&".4|(Q