shell bypass 403

UnknownSec Shell

: /lib64/python2.7/lib2to3/ [ drwxr-xr-x ]

name : pytree.pyc
�
{fc@sdZdZddlZddlZddlmZdZiad�Zdefd��YZ	d	e	fd
��YZ
de	fd��YZd
�Zdefd��YZ
de
fd��YZde
fd��YZde
fd��YZde
fd��YZd�ZdS(s�
Python parse tree definitions.

This is a very concrete parse tree; we need to keep every token and
even the comments and whitespace between tokens.

There's also a pattern matching implementation here.
s#Guido van Rossum <guido@python.org>i����N(tStringIOi���cCshtsXddlm}x?|jj�D]+\}}t|�tkr&|t|<q&q&Wntj||�S(Ni(tpython_symbols(t_type_reprstpygramRt__dict__titemsttypetintt
setdefault(ttype_numRtnametval((s&/usr/lib64/python2.7/lib2to3/pytree.pyt	type_reprstBasecBs�eZdZdZdZdZeZeZ	d�Z
d�ZdZd�Z
d�Zd�Zd�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Zed��Zed��Zd�Zd�Zd�Zejdkr�d�Z nRS(s�
    Abstract base class for Node and Leaf.

    This provides some default functionality and boilerplate using the
    template pattern.

    A node may be a subnode of at most one parent.
    cOs%|tk	std��tj|�S(s7Constructor that prevents Base from being instantiated.sCannot instantiate Base(R
tAssertionErrortobjectt__new__(tclstargstkwds((s&/usr/lib64/python2.7/lib2to3/pytree.pyR2scCs#|j|jk	rtS|j|�S(sW
        Compare two nodes for equality.

        This calls the method _eq().
        (t	__class__tNotImplementedt_eq(tselftother((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__eq__7scCs$|j|jk	rtS|j|�S(sY
        Compare two nodes for inequality.

        This calls the method _eq().
        (RRR(RR((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__ne__CscCs
t�dS(s_
        Compare two nodes for equality.

        This is called by __eq__ and __ne__.  It is only called if the two nodes
        have the same type.  This must be implemented by the concrete subclass.
        Nodes should be considered equal if they have the same structure,
        ignoring the prefix string and other context information.
        N(tNotImplementedError(RR((s&/usr/lib64/python2.7/lib2to3/pytree.pyRMs	cCs
t�dS(sr
        Return a cloned (deep) copy of self.

        This must be implemented by the concrete subclass.
        N(R(R((s&/usr/lib64/python2.7/lib2to3/pytree.pytcloneXscCs
t�dS(sx
        Return a post-order iterator for the tree.

        This must be implemented by the concrete subclass.
        N(R(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt
post_order`scCs
t�dS(sw
        Return a pre-order iterator for the tree.

        This must be implemented by the concrete subclass.
        N(R(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt	pre_orderhscCs#tjdtdd�||_dS(sv
        Set the prefix for the node (see Leaf class).

        DEPRECATED; use the prefix property directly.
        s3set_prefix() is deprecated; use the prefix propertyt
stackleveliN(twarningstwarntDeprecationWarningtprefix(RR#((s&/usr/lib64/python2.7/lib2to3/pytree.pyt
set_prefixps	
cCstjdtdd�|jS(sy
        Return the prefix for the node (see Leaf class).

        DEPRECATED; use the prefix property directly.
        s3get_prefix() is deprecated; use the prefix propertyRi(R R!R"R#(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt
get_prefixzs	
cCs2|jdk	s!tt|���|dk	s3t�t|t�sN|g}ng}t}xt|jjD]f}||kr�|s�t|jj||f��|dk	r�|j|�nt	}qg|j
|�qgW|s�t|j||f��|jj�||j_x|D]}|j|_qWd|_dS(s/Replace this node with a new one in the parent.N(tparenttNoneRtstrt
isinstancetlisttFalsetchildrentextendtTruetappendtchanged(Rtnewt
l_childrentfoundtchtx((s&/usr/lib64/python2.7/lib2to3/pytree.pytreplace�s&!"	

cCs=|}x-t|t�s5|js%dS|jd}q	W|jS(s9Return the line number which generated the invocant node.Ni(R)tLeafR,tlineno(Rtnode((s&/usr/lib64/python2.7/lib2to3/pytree.pyt
get_lineno�s	cCs&|jr|jj�nt|_dS(N(R&R0R.twas_changed(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR0�s	cCsf|jrbxVt|jj�D]?\}}||kr|jj�|jj|=d|_|SqWndS(s�
        Remove the node from the tree. Returns the position of the node in its
        parent's children before it was removed.
        N(R&t	enumerateR,R0R'(RtiR9((s&/usr/lib64/python2.7/lib2to3/pytree.pytremove�s	

	cCst|jdkrdSxZt|jj�D]F\}}||kr&y|jj|dSWqltk
rhdSXq&q&WdS(s�
        The node immediately following the invocant in their parent's children
        list. If the invocant does not have a next sibling, it is None
        iN(R&R'R<R,t
IndexError(RR=tchild((s&/usr/lib64/python2.7/lib2to3/pytree.pytnext_sibling�s
cCsh|jdkrdSxNt|jj�D]:\}}||kr&|dkrNdS|jj|dSq&WdS(s�
        The node immediately preceding the invocant in their parent's children
        list. If the invocant does not have a previous sibling, it is None.
        iiN(R&R'R<R,(RR=R@((s&/usr/lib64/python2.7/lib2to3/pytree.pytprev_sibling�sccs4x-|jD]"}x|j�D]}|VqWq
WdS(N(R,tleaves(RR@R5((s&/usr/lib64/python2.7/lib2to3/pytree.pyRC�scCs$|jdkrdSd|jj�S(Nii(R&R'tdepth(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyRD�scCs |j}|dkrdS|jS(s�
        Return the string immediately following the invocant node. This is
        effectively equivalent to node.next_sibling.prefix
        uN(RAR'R#(Rtnext_sib((s&/usr/lib64/python2.7/lib2to3/pytree.pyt
get_suffix�s	iicCst|�jd�S(Ntascii(tunicodetencode(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__str__�sN((ii(!t__name__t
__module__t__doc__R'RR&R,R+R;twas_checkedRRt__hash__RRRRRR$R%R6R:R0R>tpropertyRARBRCRDRFtsystversion_infoRJ(((s&/usr/lib64/python2.7/lib2to3/pytree.pyR
 s6			
	
					
	
					
			
tNodecBs�eZdZdddd�Zd�Zd�ZejdkrHeZ	nd�Z
d�Zd�Zd	�Z
d
�Zd�Zeee�Zd�Zd
�Zd�ZRS(s+Concrete implementation for interior nodes.cCs�|dkst|��||_t|�|_x;|jD]0}|jdksatt|���||_q:W|dk	r�||_n|r�||_n	d|_dS(s�
        Initializer.

        Takes a type constant (a symbol number >= 256), a sequence of
        child nodes, and an optional context keyword argument.

        As a side effect, the parent pointers of the children are updated.
        iN(	RRR*R,R&R'treprR#tfixers_applied(RRR,tcontextR#RUR4((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__init__�s	!

cCs#d|jjt|j�|jfS(s)Return a canonical string representation.s
%s(%s, %r)(RRKRRR,(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__repr__scCsdjtt|j��S(sk
        Return a pretty string representation.

        This reproduces the input source exactly.
        u(tjointmapRHR,(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt__unicode__siicCs"|j|jf|j|jfkS(sCompare two nodes for equality.(RR,(RR((s&/usr/lib64/python2.7/lib2to3/pytree.pyRscCs5t|jg|jD]}|j�^qd|j�S(s$Return a cloned (deep) copy of self.RU(RSRR,RRU(RR4((s&/usr/lib64/python2.7/lib2to3/pytree.pyR!s+ccs9x-|jD]"}x|j�D]}|VqWq
W|VdS(s*Return a post-order iterator for the tree.N(R,R(RR@R9((s&/usr/lib64/python2.7/lib2to3/pytree.pyR&s
ccs9|Vx-|jD]"}x|j�D]}|Vq"WqWdS(s)Return a pre-order iterator for the tree.N(R,R(RR@R9((s&/usr/lib64/python2.7/lib2to3/pytree.pyR-scCs|js
dS|jdjS(sO
        The whitespace and comments preceding this node in the input.
        ti(R,R#(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyt_prefix_getter4s	cCs |jr||jd_ndS(Ni(R,R#(RR#((s&/usr/lib64/python2.7/lib2to3/pytree.pyt_prefix_setter<s	cCs4||_d|j|_||j|<|j�dS(s�
        Equivalent to 'node.children[i] = child'. This method also sets the
        child's parent attribute appropriately.
        N(R&R'R,R0(RR=R@((s&/usr/lib64/python2.7/lib2to3/pytree.pyt	set_childBs	
cCs*||_|jj||�|j�dS(s�
        Equivalent to 'node.children.insert(i, child)'. This method also sets
        the child's parent attribute appropriately.
        N(R&R,tinsertR0(RR=R@((s&/usr/lib64/python2.7/lib2to3/pytree.pytinsert_childLs	cCs'||_|jj|�|j�dS(s�
        Equivalent to 'node.children.append(child)'. This method also sets the
        child's parent attribute appropriately.
        N(R&R,R/R0(RR@((s&/usr/lib64/python2.7/lib2to3/pytree.pytappend_childUs	N(ii(RKRLRMR'RWRXR[RQRRRJRRRRR]R^RPR#R_RaRb(((s&/usr/lib64/python2.7/lib2to3/pytree.pyRS�s$										
		R7cBs�eZdZdZdZdZddgd�Zd�Zd�Z	e
jdkrZe	Znd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zeee�ZRS(s'Concrete implementation for leaf nodes.R\icCs�d|kodkns(t|��|dk	rR|\|_\|_|_n||_||_|dk	r|||_n||_dS(s�
        Initializer.

        Takes a type constant (a token number < 256), a string value, and an
        optional context keyword argument.
        iiN(RR't_prefixR8tcolumnRtvalueRU(RRReRVR#RU((s&/usr/lib64/python2.7/lib2to3/pytree.pyRWhs
(		cCsd|jj|j|jfS(s)Return a canonical string representation.s
%s(%r, %r)(RRKRRe(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyRX{scCs|jt|j�S(sk
        Return a pretty string representation.

        This reproduces the input source exactly.
        (R#RHRe(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR[�sicCs"|j|jf|j|jfkS(sCompare two nodes for equality.(RRe(RR((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�scCs4t|j|j|j|j|jffd|j�S(s$Return a cloned (deep) copy of self.RU(R7RReR#R8RdRU(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�sccs	|VdS(N((R((s&/usr/lib64/python2.7/lib2to3/pytree.pyRC�sccs	|VdS(s*Return a post-order iterator for the tree.N((R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�sccs	|VdS(s)Return a pre-order iterator for the tree.N((R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�scCs|jS(sP
        The whitespace and comments preceding this token in the input.
        (Rc(R((s&/usr/lib64/python2.7/lib2to3/pytree.pyR]�scCs|j�||_dS(N(R0Rc(RR#((s&/usr/lib64/python2.7/lib2to3/pytree.pyR^�s
N(ii(RKRLRMRcR8RdR'RWRXR[RQRRRJRRRCRRR]R^RPR#(((s&/usr/lib64/python2.7/lib2to3/pytree.pyR7_s&										cCsk|\}}}}|s'||jkrTt|�dkrA|dSt||d|�St||d|�SdS(s�
    Convert raw node information to a Node or Leaf instance.

    This is passed to the parser driver which calls it whenever a reduction of a
    grammar rule produces a new complete node, so that the tree is build
    strictly bottom-up.
    iiRVN(t
number2symboltlenRSR7(tgrtraw_nodeRReRVR,((s&/usr/lib64/python2.7/lib2to3/pytree.pytconvert�stBasePatterncBs\eZdZdZdZdZd�Zd�Zd�Z	dd�Z
dd�Zd�ZRS(s�
    A pattern is a tree matching pattern.

    It looks for a specific node type (token or symbol), and
    optionally for a specific content.

    This is an abstract base class.  There are three concrete
    subclasses:

    - LeafPattern matches a single leaf node;
    - NodePattern matches a single node (usually non-leaf);
    - WildcardPattern matches a sequence of nodes of variable length.
    cOs%|tk	std��tj|�S(s>Constructor that prevents BasePattern from being instantiated.sCannot instantiate BasePattern(RkRRR(RRR((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�scCsht|j�|j|jg}x!|rA|ddkrA|d=q!Wd|jjdjtt	|��fS(Ni����s%s(%s)s, (
RRtcontentR
R'RRKRYRZRT(RR((s&/usr/lib64/python2.7/lib2to3/pytree.pyRX�scCs|S(s�
        A subclass can define this as a hook for optimizations.

        Returns either self or another node with the same effect.
        ((R((s&/usr/lib64/python2.7/lib2to3/pytree.pytoptimize�scCs�|jdk	r%|j|jkr%tS|jdk	r~d}|dk	rOi}n|j||�setS|r~|j|�q~n|dk	r�|jr�|||j<ntS(s#
        Does this pattern exactly match a node?

        Returns True if it matches, False if not.

        If results is not None, it must be a dict which will be
        updated with the nodes matching named subpatterns.

        Default implementation for non-wildcard patterns.
        N(RR'R+Rlt	_submatchtupdateR
R.(RR9tresultstr((s&/usr/lib64/python2.7/lib2to3/pytree.pytmatch�s!	cCs*t|�dkrtS|j|d|�S(s�
        Does this pattern exactly match a sequence of nodes?

        Default implementation for non-wildcard patterns.
        ii(RgR+Rr(RtnodesRp((s&/usr/lib64/python2.7/lib2to3/pytree.pyt	match_seqsccs4i}|r0|j|d|�r0d|fVndS(s}
        Generator yielding all matches for this pattern.

        Default implementation for non-wildcard patterns.
        iiN(Rr(RRsRq((s&/usr/lib64/python2.7/lib2to3/pytree.pytgenerate_matchessN(
RKRLRMR'RRlR
RRXRmRrRtRu(((s&/usr/lib64/python2.7/lib2to3/pytree.pyRk�s			
tLeafPatterncBs2eZdddd�Zdd�Zdd�ZRS(cCs�|dk	r7d|ko#dkns7t|��n|dk	rgt|t�sgtt|���n||_||_||_dS(sp
        Initializer.  Takes optional type, content, and name.

        The type, if given must be a token type (< 256).  If not given,
        this matches any *leaf* node; the content may still be required.

        The content, if given, must be a string.

        If a name is given, the matching node is stored in the results
        dict under that key.
        iiN(R'RR)t
basestringRTRRlR
(RRRlR
((s&/usr/lib64/python2.7/lib2to3/pytree.pyRWs+$		cCs&t|t�stStj|||�S(s*Override match() to insist on a leaf node.(R)R7R+RkRr(RR9Rp((s&/usr/lib64/python2.7/lib2to3/pytree.pyRr,scCs|j|jkS(s�
        Match the pattern's content to the node's children.

        This assumes the node type matches and self.content is not None.

        Returns True if it matches, False if not.

        If results is not None, it must be a dict which will be
        updated with the nodes matching named subpatterns.

        When returning False, the results dict may still be updated.
        (RlRe(RR9Rp((s&/usr/lib64/python2.7/lib2to3/pytree.pyRn2s
N(RKRLR'RWRrRn(((s&/usr/lib64/python2.7/lib2to3/pytree.pyRvstNodePatterncBs,eZeZdddd�Zdd�ZRS(cCs�|dk	r'|dks't|��n|dk	r�t|t�sUtt|���t|�}xYt|�D]H\}}t|t�s�t||f��t|t�rnt	|_
qnqnWn||_||_||_
dS(sd
        Initializer.  Takes optional type, content, and name.

        The type, if given, must be a symbol type (>= 256).  If the
        type is None this matches *any* single node (leaf or not),
        except if content is not None, in which it only matches
        non-leaf nodes that also match the content pattern.

        The content, if not None, must be a sequence of Patterns that
        must match the node's children exactly.  If the content is
        given, the type must not be None.

        If a name is given, the matching node is stored in the results
        dict under that key.
        iN(R'RR)RwRTR*R<RktWildcardPatternR.t	wildcardsRRlR
(RRRlR
R=titem((s&/usr/lib64/python2.7/lib2to3/pytree.pyRWFs"!		cCs�|jrhxXt|j|j�D]A\}}|t|j�kr|dk	r\|j|�ntSqWtSt|j�t|j�kr�tSx9t	|j|j�D]"\}}|j
||�s�tSq�WtS(s�
        Match the pattern's content to the node's children.

        This assumes the node type matches and self.content is not None.

        Returns True if it matches, False if not.

        If results is not None, it must be a dict which will be
        updated with the nodes matching named subpatterns.

        When returning False, the results dict may still be updated.
        N(RzRuRlR,RgR'RoR.R+tzipRr(RR9RptcRqt
subpatternR@((s&/usr/lib64/python2.7/lib2to3/pytree.pyRncs
	""N(RKRLR+RzR'RWRn(((s&/usr/lib64/python2.7/lib2to3/pytree.pyRxBsRycBsheZdZd
ded
d�Zd�Zd
d�Zd
d�Zd�Z	d�Z
d�Zd	�ZRS(s
    A wildcard pattern can match zero or more nodes.

    This has all the flexibility needed to implement patterns like:

    .*      .+      .?      .{m,n}
    (a b c | d e | f)
    (...)*  (...)+  (...)?  (...){m,n}

    except it always uses non-greedy matching.
    icCs�d|ko"|ko"tkns9t||f��|dk	r�ttt|��}t|�sxtt|���x/|D]$}t|�stt|���qWn||_||_||_	||_
dS(s�
        Initializer.

        Args:
            content: optional sequence of subsequences of patterns;
                     if absent, matches one node;
                     if present, each subsequence is an alternative [*]
            min: optional minimum number of times to match, default 0
            max: optional maximum number of times to match, default HUGE
            name: optional name assigned to this match

        [*] Thus, if content is [[a, b, c], [d, e], [f, g, h]] this is
            equivalent to (a b c | d e | f g h); if content is None,
            this is equivalent to '.' in regular expression terms.
            The min and max parameters work as follows:
                min=0, max=maxint: .*
                min=1, max=maxint: .+
                min=0, max=1: .?
                min=1, max=1: .
            If content is not None, replace the dot with the parenthesized
            list of alternatives, e.g. (a b c | d e | f g h)*
        iN(tHUGERR'ttupleRZRgRTRltmintmaxR
(RRlR�R�R
talt((s&/usr/lib64/python2.7/lib2to3/pytree.pyRW�s9
%			cCs/d}|jdk	rWt|j�dkrWt|jd�dkrW|jdd}n|jdkr�|jdkr�|jdkr�td|j�S|dk	r�|j|jkr�|j�Sn|jdkr+t|t	�r+|jdkr+|j|jkr+t	|j|j|j|j|j|j�S|S(s+Optimize certain stacked wildcard patterns.iiR
N(
R'RlRgR�R�RxR
RmR)Ry(RR~((s&/usr/lib64/python2.7/lib2to3/pytree.pyRm�s .
!	


cCs|j|g|�S(s'Does this pattern exactly match a node?(Rt(RR9Rp((s&/usr/lib64/python2.7/lib2to3/pytree.pyRr�scCsuxn|j|�D]]\}}|t|�kr|dk	ri|j|�|jrit|�||j<qintSqWtS(s4Does this pattern exactly match a sequence of nodes?N(RuRgR'RoR
R*R.R+(RRsRpR}Rq((s&/usr/lib64/python2.7/lib2to3/pytree.pyRt�s
	ccs�|jdkrsxvt|jdtt|�|j��D]4}i}|jra|| ||j<n||fVq8Wn|jdkr�|j|�Vn�tt	d�r�t	j
}t�t	_
nz�yOxH|j|d�D]4\}}|jr�|| ||j<n||fVq�WWnYt
k
rgxI|j|�D]4\}}|jrU|| ||j<n||fVq,WnXWdtt	d�r�|t	_
nXdS(s"
        Generator yielding matches for a sequence of nodes.

        Args:
            nodes: sequence of nodes

        Yields:
            (count, results) tuples where:
            count: the match comprises nodes[:count];
            results: dict containing named submatches.
        it	bare_nametgetrefcountiN(RlR'txrangeR�RgR�R
t_bare_name_matchesthasattrRQtstderrRt_recursive_matchestRuntimeErrort_iterative_matches(RRstcountRqtsave_stderr((s&/usr/lib64/python2.7/lib2to3/pytree.pyRu�s0/			
	ccs`t|�}d|jkr)difVng}xO|jD]D}x;t||�D]*\}}||fV|j||f�qOWq9Wx�|r[g}x�|D]�\}}	||kr�||jkr�x�|jD]}xvt|||�D]a\}
}|
dkr�i}|j|	�|j|�||
|fV|j||
|f�q�q�Wq�Wq�q�W|}q�WdS(s(Helper to iteratively yield the matches.iN(RgR�RlRuR/R�Ro(RRstnodelenRpR�R}Rqtnew_resultstc0tr0tc1tr1((s&/usr/lib64/python2.7/lib2to3/pytree.pyR��s*	 

)cCs�d}i}t}t|�}x_|r||krt}x?|jD]4}|dj|||�rD|d7}t}PqDqDWq!W|| ||j<||fS(s(Special optimized matcher for bare_name.ii(R+RgR.RlRrR
(RRsR�RqtdoneR�tleaf((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�s
c	cs�|jdk	st�||jkr2difVn||jkr�x�|jD]�}xwt||�D]f\}}xW|j|||d�D];\}}i}|j|�|j|�|||fVq�WqaWqKWndS(s(Helper to recursively yield the matches.iiN(RlR'RR�R�RuR�Ro(	RRsR�R�R�R�R�R�Rq((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�,s'

N(
RKRLRMR'RRWRmRrRtRuR�R�R�(((s&/usr/lib64/python2.7/lib2to3/pytree.pyRys#		-		tNegatedPatterncBs/eZdd�Zd�Zd�Zd�ZRS(cCs=|dk	r0t|t�s0tt|���n||_dS(s
        Initializer.

        The argument is either a pattern or None.  If it is None, this
        only matches an empty sequence (effectively '$' in regex
        lingo).  If it is not None, this matches whenever the argument
        pattern doesn't have any matches.
        N(R'R)RkRRTRl(RRl((s&/usr/lib64/python2.7/lib2to3/pytree.pyRW=s	$cCstS(N(R+(RR9((s&/usr/lib64/python2.7/lib2to3/pytree.pyRrJscCst|�dkS(Ni(Rg(RRs((s&/usr/lib64/python2.7/lib2to3/pytree.pyRtNsccse|jdkr2t|�dkradifVqan/x!|jj|�D]
\}}dSWdifVdS(Ni(RlR'RgRu(RRsR}Rq((s&/usr/lib64/python2.7/lib2to3/pytree.pyRuRsN(RKRLR'RWRrRtRu(((s&/usr/lib64/python2.7/lib2to3/pytree.pyR�;s
		c	cs�|sdifVn�|d|d}}x�|j|�D]s\}}|sY||fVq9xPt|||�D];\}}i}|j|�|j|�|||fVqmWq9WdS(sR
    Generator yielding matches for a sequence of patterns and nodes.

    Args:
        patterns: a sequence of patterns
        nodes: a sequence of nodes

    Yields:
        (count, results) tuples where:
        count: the entire sequence of patterns matches nodes[:count];
        results: dict containing named submatches.
        iiN(RuRo(	tpatternsRstptrestR�R�R�R�Rq((s&/usr/lib64/python2.7/lib2to3/pytree.pyRu^s
 

(RMt
__author__RQR RRRRRR
RSR7RjRkRvRxRyR�Ru(((s&/usr/lib64/python2.7/lib2to3/pytree.pyt<module>s"	
�pN	V,=�#

© 2025 UnknownSec
Display on the page Footer | Anyleson - Learning Platform
INR (₹)
India Rupee
$
United States Dollar

Display on the page Footer

Privacy Policy

Effective Date: 24 August , 2024

At Anyleson, we are committed to protecting your privacy and ensuring that your personal information is handled securely and responsibly. This Privacy Policy outlines how we collect, use, and safeguard your data when you use our platform.


Information We Collect


  1. Personal Information:

    • Name, email address, phone number, and billing details.

    • Account login credentials (username and password).



  2. Course Usage Data:

    • Progress and activity within courses.

    • Feedback and reviews submitted for courses.



  3. Technical Information:

    • IP address, browser type, device information, and cookies for improving website functionality.



  4. Communication Data:

    • Information from your interactions with our customer support.




How We Use Your Information


  1. To Provide Services:

    • Process course purchases, registrations, and access to content.



  2. To Improve User Experience:

    • Analyze user behavior to enhance course offerings and platform features.



  3. To Communicate:

    • Send updates, notifications, and promotional offers (only if you’ve opted in).



  4. For Legal Compliance:

    • Meet legal or regulatory requirements and prevent fraud.




How We Protect Your Information


  1. Data Encryption: All sensitive data is encrypted during transmission using SSL.

  2. Access Control: Only authorized personnel have access to personal information.

  3. Secure Storage: Data is stored on secure servers with regular security updates.


Sharing Your Information

We do not sell, rent, or trade your personal data. However, we may share your information with:


  1. Service Providers:

    • Payment processors and hosting services that assist in delivering our platform.



  2. Legal Authorities:

    • When required by law or to protect our legal rights.




Your Rights


  1. Access and Update: You can view and update your personal information in your account settings.

  2. Request Deletion: You have the right to request deletion of your data by contacting us.

  3. Opt-Out: You can opt out of receiving promotional emails by clicking the “unsubscribe” link in our emails.


Cookies Policy

We use cookies to enhance your experience by:


  • Remembering your preferences.

  • Analyzing website traffic.
    You can manage your cookie preferences through your browser settings.


Third-Party Links

Our platform may contain links to third-party websites. We are not responsible for their privacy practices and recommend reviewing their privacy policies.


Policy Updates

We may update this Privacy Policy from time to time. Changes will be posted on this page, and the "Effective Date" will be updated. Please review the policy periodically.


Contact Us

If you have any questions or concerns about our Privacy Policy or how your data is handled, please contact us at:

Email: support@anyleson.comThank you for trusting Anyleson with your learning journey!