403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib64/python3.9/site-packages/mercurial/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib64/python3.9/site-packages/mercurial/__pycache__/phases.cpython-39.opt-1.pyc
a

�+�b,��@sZdZddlmZddlZddlZddlmZddlmZm	Z	m
Z
mZmZddl
mZmZddlmZm
Z
mZmZmZmZe
jr�dd	lmZmZmZmZmZmZmZmZdd
lm Z m!Z"ee#ee$fZ%eee j&e%ge%fZ'e�(d�Z)e*d�\Z+Z,Z-d
Z.dZ/e+e,e-e.e/fZ0e,e-e.e/fZ1gd�Z2e3e4e2��Z5de5e.<de5e/<dd�e5�6�D�Z7e7�8�Z9e9�:dd�e5D��e9�:dd�e5D��e,e-e.e/fZ;e-e.e/fZ<e/e.fZ=dd�Z>d@dd�Z?dd�Z@dd�ZAdd�ZBd d!�ZCd"d#�ZDGd$d%�d%eE�ZFdAd&d'�ZGd(d)�ZHd*d+�ZId,d-�ZJd.d/�ZKd0d1�ZLd2d3�ZMd4d5�ZNGd6d7�d7eE�ZOd8d9�ZPd:d;�ZQd<d=�ZRd>d?�ZSdS)Ba� Mercurial phases support code

    ---

    Copyright 2011 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
                   Logilab SA        <contact@logilab.fr>
                   Augie Fackler     <durin42@gmail.com>

    This software may be used and distributed according to the terms
    of the GNU General Public License version 2 or any later version.

    ---

This module implements most phase logic in mercurial.


Basic Concept
=============

A 'changeset phase' is an indicator that tells us how a changeset is
manipulated and communicated. The details of each phase is described
below, here we describe the properties they have in common.

Like bookmarks, phases are not stored in history and thus are not
permanent and leave no audit trail.

First, no changeset can be in two phases at once. Phases are ordered,
so they can be considered from lowest to highest. The default, lowest
phase is 'public' - this is the normal phase of existing changesets. A
child changeset can not be in a lower phase than its parents.

These phases share a hierarchy of traits:

            immutable shared
    public:     X        X
    draft:               X
    secret:

Local commits are draft by default.

Phase Movement and Exchange
===========================

Phase data is exchanged by pushkey on pull and push. Some servers have
a publish option set, we call such a server a "publishing server".
Pushing a draft changeset to a publishing server changes the phase to
public.

A small list of fact/rules define the exchange of phase:

* old client never changes server states
* pull never changes server states
* publish and old server changesets are seen as public by client
* any secret changeset seen in another repository is lowered to at
  least draft

Here is the final table summing up the 49 possible use cases of phase
exchange:

                           server
                  old     publish      non-publish
                 N   X    N   D   P    N   D   P
    old client
    pull
     N           -   X/X  -   X/D X/P  -   X/D X/P
     X           -   X/X  -   X/D X/P  -   X/D X/P
    push
     X           X/X X/X  X/P X/P X/P  X/D X/D X/P
    new client
    pull
     N           -   P/X  -   P/D P/P  -   D/D P/P
     D           -   P/X  -   P/D P/P  -   D/D P/P
     P           -   P/X  -   P/D P/P  -   P/D P/P
    push
     D           P/X P/X  P/P P/P P/P  D/D D/D P/P
     P           P/X P/X  P/P P/P P/P  P/P P/P P/P

Legend:

    A/B = final state on client / state on server

    * N = new/not present,
    * P = public,
    * D = draft,
    * X = not tracked (i.e., the old client or server has no internal
          way of recording the phase.)

    passive = only pushes


    A cell here can be read like this:

    "When a new client pushes a draft changeset (D) to a publishing
    server where it's not present (N), it's marked public on both
    sides (P/P)."

Note: old client behave as a publishing server with draft only content
- other people see it as public
- content is pushed as draft

�)�absolute_importN�)�_)�bin�hex�nullrev�short�wdirrev)�getattr�setattr)�error�pycompat�requirements�smartset�txnutil�util)�Any�Callable�Dict�Iterable�List�Optional�Set�Tuple)�	localrepo�uis>i20s�� �`)spublicsdraftssecretsarchivedsinternalcCsi|]\}}||�qS�r)�.0�phase�namerr�6/usr/lib64/python3.9/site-packages/mercurial/phases.py�
<dictcomp>��r$cCsi|]
}||�qSrr�r r!rrr#r$�r%cCsi|]}d||�qS)�%irr&rrr#r$�r%cCstj|jvS)z6True if the internal phase can be used on a repository)rZINTERNAL_PHASE_REQUIREMENT��reporrr#�supportinternal�sr*c

Cs�|��}d}dd�tD�}z^t�|j|jd�\}}z8|D]&}|��\}}|t|��t	|��q8W|�
�n
|�
�0WnNty�}	z6|	jtj
kr��|r�|D]}|||�}q�d}WYd}	~	n
d}	~	00||fS)a�Read phase roots from disk

    phasedefaults is a list of fn(repo, roots) callable, which are
    executed if the phase roots file does not exist. When phases are
    being initialized on an existing repository, this could be used to
    set selected changesets phase to something else than public.

    Return (roots, dirty) where dirty is true if roots differ from
    what is being stored.
    FcSsi|]}|t��qSr��set�r �irrr#r$�r%z_readroots.<locals>.<dictcomp>�
phaserootsTN)�
unfiltered�	allphasesrZ
trypending�root�svfs�split�int�addr�close�IOError�errno�ENOENT)
r)�
phasedefaults�dirty�roots�f�pending�liner!Znh�instrrr#�
_readroots�s$rBcCs>g}t�|�D]$\}}|D]}|�t�||��qqd�|�S)zwencode a 'phase -> nodes' mapping into a binary stream

    The revision lists are encoded as (phase, root) pairs.
    r%)r
�	iteritems�append�
_fphasesentry�pack�join)ZphasemappingZ
binarydatar!�nodes�headrrr#�binaryencode�s
rJcCs`dd�tD�}tj}|�|�}t|�|kr>|r\t�td���q\t�|�\}}||�	|�q|S)z�decode a binary stream into a 'phase -> nodes' mapping

    The (phase, root) pairs are turned back into a dictionary with
    the phase as index and the aggregated roots of that phase as value.cSsi|]
}|g�qSrrr-rrr#r$�r%z binarydecode.<locals>.<dictcomp>sbad phase-heads stream)
r1rE�size�read�lenr�Abortr�unpackrD)�stream�headsbyphaseZ	entrysize�entryr!�noderrr#�binarydecode�s
rTc
Csd}|r0||d\}}|dd|ko.||k}d}|t|�krd||\}}	|d|dkob|	|k}|r�|r�t�|d|dd�|f||d<|�|�nd|r�t�|d|d�|f||d<n>|r�t�||dd�|f||<n|�|t�||d�|f�dS)NFr���r)rMr
�xrange�pop�insert)
�data�idx�rev�tZmerge_before�r1�t1Zmerge_afterZr2�t2rrr#�_sortedrange_insert�s $"r`cCs||\}}||krdS|d|df}t|�dkrN|�|�t||||�n�|d|kr�t�|d|dd�|f||<t||||�n�|d|kr�t�|d|�|f||<t||d||�nNt�|d|�|ft�||d�|ft�|d|dd�|fg|||d�<dS)NrrrU)rMrWr`r
rV)rYrZr[r\r]r^rrr#�_sortedrange_split
s"
 �rac
Cs�|durdS|s4|�dt�||d�||ff�dSd}t|�}||f}||k�rh||d}||d}|d}	|d}
||	kr�||
kr�t||||�dS|	|dkr�|r�||ddd|kr�t||d||�nt||||�dS|
|dk�rN|dt|�k�r8||ddd|k�r8t||d||�nt||d||�dS|	|k�r^|}qH|d}qH|t|�k�r�|�t�||d�|f�dS||\}}|d|k�r�|�|t�||d�|f�n |�|dt�||d�|f�dS)zYadd a phase move to the <data> list of ranges

    If data is None, nothing happens.
    Nrr�rU)rXr
rVrMrar`rD)
rYr[�old�newZlowZhighr\Zmid�revsZrevs_lowZ	revs_highr]r^rrr#�_trackphasechange#sH 
,

rfc@s�eZdZd)dd�Zdd�Zdd�Zd*d	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd+d!d"�Zd#d$�Zd,d%d&�Zd'd(�ZdS)-�
phasecacheTcCs8|r4t||�\|_|_d|_d|_|�|�|j|_dS�Nr)rB�
phaserootsr<�_loadedrevslen�
_phasesets�
filterunknownr3�opener)�selfr)r;�_loadrrr#�__init__\s
zphasecache.__init__cCsH|��}|j}t|�|jkr.|��|�|�tdd�t�|j	�D��S)z3detect if there are revisions with non-public phasecss|]\}}|tkr|VqdS�N��public�r r!rerrr#�	<genexpr>ns�z0phasecache.hasnonpublicphases.<locals>.<genexpr>)
r0�	changelogrMrj�
invalidate�
loadphaserevs�anyr
rCri�rnr)�clrrr#�hasnonpublicphasesfs

�zphasecache.hasnonpublicphasescCsL|��}|j}t|�|jkr.|��|�|�t�jdd�t�	|j
�D��S)z�returns the roots of all non-public phases

        The roots are not minimized, so if the secret revisions are
        descendants of draft revisions, their roots will still be present.
        cSsg|]\}}|tkr|�qSrrrrtrrr#�
<listcomp>�s�z2phasecache.nonpublicphaseroots.<locals>.<listcomp>)r0rvrMrjrwrxr,�unionr
rCrirzrrr#�nonpublicphaserootsts

��zphasecache.nonpublicphaserootsNcs����t���t�v}|r:tt������s:t���Sd�t��dkr`�\}�j|�d�ntj	�fdd��D������fdd�}|s̈j
jr���j
j�|dur�t���S||���|t���@Sn6|dur�t���}||����s�|S|�
�fd	d
��SdS)z&return a smartset for the given phasesFrTcsg|]}�j|�qSr)rk)r �p�rnrr#r}�r%z(phasecache.getrevset.<locals>.<listcomp>cs2t|vr.�d���vr.�r$|��}|�t�|Srq)r	r!�copyr6)Z
wdirsubsetZwdirrevs)�phasesr)�
revsneedscopyrr#�_addwdir�s

z&phasecache.getrevset.<locals>._addwdirNcs|�vSrqr)�r�rerr#�<lambda>�r%z&phasecache.getrevset.<locals>.<lambda>)rxr,rsr1�
differencerZfullreposetrMrkr~rvZfilteredrevsZbaseset�filter)rnr)r��subsetZpublicphaser�r�r)r�r)rer�rnr#�	getrevset�s6






zphasecache.getrevsetcCs@|jdddd�}|j��|_|j|_|j|_|j|_|j|_|S)NF)ro)�	__class__rir�r<rmrjrk)rn�phrrr#r��szphasecache.copycCs dD]}t||t||��qdS)z4replace all values in 'self' with content of phcache)r/sdirtysopeners_loadedrevslens
_phasesetsN)rr
)rn�phcache�arrr#�replace�szphasecache.replacecCs|��}|j�|j�Srq)r0rvZ
computephasesri)rnr)rrr#�_getphaserevsnative�szphasecache._getphaserevsnativecCs�|��}|j}dd�tD�|_t�}tt�D]\}t�|j	|j
|�}|r,t|�|��}|D]}|�|�qZ|�
|�|�|�||j|<q,t|�|_dS)NcSsi|]}|t��qSrr+r&rrr#r$�r%z4phasecache._computephaserevspure.<locals>.<dictcomp>)r0rvr1rkr,�reversed�
trackedphasesr
�maplistr[riZdescendantsr6�difference_update�updaterMrj)rnr)r{Z
lowerrootsr!r=Zpsr2rrr#�_computephaserevspure�s

z phasecache._computephaserevspurecCsF|jdurBz|�|�}|\|_|_Wnty@|�|�Yn0dS)z0ensure phase information is loaded in the objectN)rkr�rj�AttributeErrorr�)rnr)�resrrr#rx�s

zphasecache.loadphaserevscCsd|_d|_dSrh)rjrkr�rrr#rw�szphasecache.invalidatecCs`|tkrtS|tkr ttd���||jkr<|��|�|�tD]}||j|vr@|Sq@tS)Nscannot lookup negative revision)	rrs�
ValueErrorrrjrwrxr�rk)rnr)r[r!rrr#r!�s


zphasecache.phasecCsB|js
dS|jddddd�}z|�|�W|��n
|��0dS)Nr/�wT)Z
atomictempZ
checkambig)r<rm�_writer7)rnr>rrr#�write
szphasecache.writecCsDt�|j�D],\}}t|�D]}|�d|t|�f�qqd|_dS)Ns%i %s
F)r
rCri�sortedr�rr<)rn�fpr!r=�hrrr#r�szphasecache._writecCs6||j|<|��d|_|�dd|j�d|jd<dS)NT�phase)r/�1sphases_moved)rirwr<Zaddfilegeneratorr�Zhookargs)rnr!�newroots�trrrr#�_updaterootss

zphasecache._updaterootsc	Csp|��}|j|||g|d�|durdd|jvrd|jd}|j}t|�D]}|||�}t||d|�qF|��dS)Nr��phases)r0�_retractboundary�changesr!r�rf�invalidatevolatilesets)	rnr)r��targetphasere�
phasetrackingr!r[Zrevphaserrr#�registernew!s

zphasecache.registernewc	s@|durg}|durd}n|j�d�}�����fdd�|D�dd�|D�}t�}g}	�fdd�tD�D]�����fdd�|D�}|s��q�j�}
��d	|
|�}|�|�|r�qj|D]}t||��	�|���q�d
d���d|
|�D�}
|
|
krj��
�|
|�|	�|
|
�qj|�s<�d
k�r4���|�|	���
�|S)z�Set all 'nodes' to phase 'targetphase'

        Nodes with a phase lower than 'targetphase' are not affected.

        If dryrun is True, no actions will be performed

        Returns a set of revs whose phase is changed or should be changed
        Nr�csg|]}�|���qSr�r[�r �nr(rr#r}Ar%z.phasecache.advanceboundary.<locals>.<listcomp>cSsg|]}|�qSrr�r r�rrr#r}Ar%c3s|]}|�kr|VqdSrqrr&�r�rr#ruEr%z-phasecache.advanceboundary.<locals>.<genexpr>cs g|]}���|��kr|�qSr�r!�r r[)r!r)rnrr#r}Gr%�%ln::%ldcSsh|]}|���qSr�rS)r �ctxrrr#�	<setcomp>Vs�z-phasecache.advanceboundary.<locals>.<setcomp>sroots((%ln::) - %ld)r)r��getr0r,r1rirer�rfr!r��extendr�r�)rnr)r�r�rHre�dryrunr�r�ZdelrootsZolds�affectedr�r=r)r!r)rnr�r#�advanceboundary,sB
 

��
zphasecache.advanceboundarycs��fdd�t�|j�D�}|dur(d}n|j�d�}|��}|�||�|�r�|dur�|j�}|�}t|�d||��}	t�	�dd�D]P}
|
r�|�|
g�}t|�d||	��}|	|8}	n|	}t
|�D]}
t||
|
��q�q�|��dS)Ncsi|]\}}|�kr||�qSrrrtr�rr#r$fs�z.phasecache.retractboundary.<locals>.<dictcomp>r�s(%ln::) - (%ln::)rUr�)
r
rCrir�r�r0r�r,rerVr�rfr�)rnr)r�r�rH�oldrootsr�rdrcr�r!r=rer�rr�r#�retractboundaryes.

���

zphasecache.retractboundarycsB|durg}�ttfvr:t��s:t�}d|}t�|�������jj��jj	��fdd��j
�D�}t|�}	}
�fdd�|D�dd�|D�}���fdd�|D�}|�rt|vr�t�
td���|�|�t|���fd	d�|D�}��d
|�}
�fdd�|D�}	|	�|
�|	|
k�r>����fdd�|	D�|�d
SdS)Ns-this repository does not support the %s phasecsh|]}�|��qSrr�r rS��torevrr#r��r%z.phasecache._retractboundary.<locals>.<setcomp>csg|]}�|��qSrrr�r�rr#r}�r%z/phasecache._retractboundary.<locals>.<listcomp>cSsg|]}|�qSrrr�rrr#r}�r%cs g|]}���|��kr|�qSrr�r�)r)rnr�rr#r}�ss!cannot change null revision phasecsg|]}|�kr|�qSrrr���
minnewrootrr#r}�r%sroots(%ld::)csh|]}|�kr|�qSrrr�r�rr#r��r%csh|]}�|��qSrrr�)�tonoderr#r��r%TF)�archived�internalr*�
phasenamesrZProgrammingErrorr0rvr[rSrir,rrNrr��minrer�)rnr)r�r�rHrer"�msgZcurrentrootsZ
finalrootsr�r�Z
aboverootsZupdatedrootsr)r�r)rnr�r�r�r#r��s<
 �


�zphasecache._retractboundarycs�d}|jjj�t�|j�D]R\}}t�fdd�|D��}|r|D]}|j�dt	|�|f�q@|�
|�d}q|rxd|_|��dS)z�remove unknown nodes from the phase boundary

        Nothing is lost as unknown nodes only hold data for their descendants.
        Fc3s|]}�|�s|VqdSrqrr���has_noderr#ru�r%z+phasecache.filterunknown.<locals>.<genexpr>s0removing unknown node %s from %i-phase boundary
TN)
rv�indexr�r
rCrir�r�debugr�symmetric_difference_updater<rw)rnr)Zfilteredr!rH�missingZmnoderr�r#rl�s 

��
	zphasecache.filterunknown)T)N)NN)N)�__name__�
__module__�__qualname__rpr|rr�r�r�r�r�rxrwr!r�r�r�r�r�r�r�rlrrrr#rg[s(


7
	�
9!
(rgcCs@|durg}|j��}|j||||||d�}|s<|j�|�|S)auAdd nodes to a phase changing other nodes phases if necessary.

    This function move boundary *forward* this means that all nodes
    are set in the target phase or kept in a *lower* phase.

    Simplify boundary to contains phase roots only.

    If dryrun is True, no actions will be performed

    Returns a set of revs whose phase is changed or should be changed
    N)rer�)�_phasecacher�r�r�)r)r�r�rHrer�r�r�rrr#r��s
�r�cCs*|j��}|�||||�|j�|�dS)z�Set nodes back to a phase changing other nodes phases if
    necessary.

    This function move boundary *backward* this means that all nodes
    are set in the target phase or kept in a *higher* phase.

    Simplify boundary to contains phase roots only.N)r�r�r�r�)r)r�r�rHr�rrr#r��s
r�cCs*|j��}|�||||�|j�|�dS)z�register a new revision and its phase

    Code adding revisions to the repository should use this function to
    set new changeset in their target phase (or higher).
    N)r�r�r�r�)r)r�r�rer�rrr#r��s
r�cCsdt��}dt}|��j}|jjtD](}|j�||�|��tkr&||t	|�<q&|�
�r`d|d<|S)�/List phases root for serialization over pushkeyr'sTrue�
publishing)rZsortdict�draftr0rvr�rir!r[r�
publishing)r)�keys�valuer{r2rrr#�
listphases�s
r�c	Cs�|��}|����||��}tt|��}tt|��}||kr�||kr�|�d��$}t|||t|�g�Wd�n1sz0YWd�dS||kr�Wd�dSWd�dSWd�n1s�0YdS)r�s
pushkey-phaseNTF)r0�lockr!�absr5Ztransactionr�r)r)�nhexZoldphasestrZnewphasestrZcurrentphaseZnewphaseZoldphaser�rrr#�	pushphases
2r�csT|j�dd�tD�}tdt�D].}dt|}�fdd�|�||�D�||<q |S)z�Finds the phase heads for a subset of a history

    Returns a list indexed by phase number where each item is a list of phase
    head nodes.
    cSsi|]
}|g�qSrrr-rrr#r$7r%z$subsetphaseheads.<locals>.<dictcomp>Nsheads(%%ln & %s())csg|]}��|��qSrr�r��r{rr#r}<r%z$subsetphaseheads.<locals>.<listcomp>)rvr1�secretr�re)r)r�rQr!�revsetrr�r#�subsetphaseheads/s r�cCsBtD]8}d}dd�|�||||�D�}|rt||�||�qdS)z+Updates the repo with the given phase headss%ln - _phase(%s)cSsg|]}|���qSrr��r �crrr#r}Ir%z updatephases.<locals>.<listcomp>N)r1r,r�)r)ZtrgetterrQr!r��headsrrr#�updatephases@s
r�c	Cs�|��}g}|jjj}t�|�D]~\}}|dkr2q t|�}t|�}|tkrj||j	kr�|j
�td�|�q |t
kr�||�r�|�|�q |j
�td�||f�q t|||�}||fS)z�Compute phases heads and root in a subset of node from root dict

    * subset is heads of the subset
    * roots is {<nodeid> => phase} mapping. key and value are string.

    Accept unknown element input
    r�s2ignoring inconsistent public root from remote: %s
s,ignoring unexpected root from remote: %i %s
)r0rvr�r�r
rCrr5rs�nullidr�warnrr�rD�newheads)	r)r�r=�
draftrootsr�r�r!rS�publicheadsrrr#�analyzeremotephasesNs6

�����r�c@seZdZdZdd�ZdS)�remotephasessummaryasummarize phase information on the remote side

    :publishing: True is the remote is publishing
    :publicheads: list of remote public phase heads (nodes)
    :draftheads: list of remote draft phase heads (nodes)
    :draftroots: list of remote draft phase root (nodes)
    cCsX|��}||_|�dd�|_t|||�}|\|_|_|�d|j|�}dd�|D�|_dS)Nr�Fsheads(%ln::%ln)cSsg|]}|���qSrr�r�rrr#r}�r%z0remotephasessummary.__init__.<locals>.<listcomp>)	r0Z_allremoterootsr�r�r�r�r�r,Z
draftheads)rnr)ZremotesubsetZremoterootsZunfiZanaZdheadsrrr#rp~szremotephasessummary.__init__N)r�r�r��__doc__rprrrr#r�usr�c
s�ddlm}�����j}|jj�|s*|S|r:|�jgkr>gS��fdd�|D�}�fdd�|D�}��d||�}|�|���d||�}||8}|s�|r�|�	|���d	|�}|�
�||�}	|�|	�t�|j
t|��S)
z�compute new head of a subset minus another

    * `heads`: define the first subset
    * `roots`: define the second we subtract from the firstr)�dagopcsh|]}|�jkr�|��qSr)r�r��r)r[rr#r��r%znewheads.<locals>.<setcomp>csg|]}�|��qSrrr�r�rr#r}�r%znewheads.<locals>.<listcomp>s
(%ld::%ld)s-parents(%ld + (%ld and merge())) and not nullsparents(%ld) and not null)�r�r0rvr�Zget_revr�rer�r�Zreachablerootsr
r�rSr�)
r)r�r=r�r{Z	new_headsZ
affected_zoneZ
candidatesZ
prunestartZprunedrr�r#r��s,
�

r�cCs@|�dd�}z
t|WSty:t�td�|��Yn0dS)zuhelper to get the target phase of new commit

    Handle all possible values for the phases.new-commit options.

    r�s
new-commits0phases.new-commit: not a valid phase name ('%s')N)Zconfig�phasenumber2�KeyErrorrZConfigErrorr)r�vrrr#�newcommitphase�s

�r�cCst|jjt�S)z@utility function that check if a repo have any secret changeset.)�boolr�rir�r(rrr#�	hassecret�sr�cCs&|durd}nt|}||t|d�S)Nr%)snodesoldphaser�)r�)rSrcrdrrr#�preparehookargs�sr�)N)NN)Tr�Z
__future__rr9�structZi18nrrSrrrrr	r
r
rr�rrrrr�
TYPE_CHECKING�typingrrrrrrrrrrZuimodr5�bytesZ
PhaserootsZlocalrepositoryZ
Phasedefaults�StructrE�rangersr�r�r�r�r1r�Z
cmdphasenames�dict�	enumerater��itemsZphasenumberr�r�r�Z
mutablephasesZremotehiddenphasesZlocalhiddenphasesr*rBrJrTr`rarf�objectrgr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr#�<module>slf 	(
�


!
8t

 ''

Youez - 2016 - github.com/yon3zu
LinuXploit