shell bypass 403
3 B;�W�~ � ) @ s d dl mZmZmZ d dlmZmZ d dlmZm Z d dl Z d dlZd dlZddl mZmZmZmZ ddl mZ ddlmZ d d lmZ yd d lmZ W n ek r� eZY nX edd� eD ��Zed d� eD ��Zedd� eD ��Zeeddg�B ZdZej�rFedE dk�r"ej d�dk�s&t!�ej"eddF� e#d� d �Z$n ej"e�Z$e%ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3g �Z&ej"d4�Z'i Z(G d5d6� d6e)�Z*d7d8� Z+G d9d:� d:e)�Z,G d;d<� d<e,�Z-G d=d>� d>e.�Z/G d?d@� d@e)�Z0G dAdB� dBe)�Z1dCdD� Z2dS )G� )�absolute_import�division�unicode_literals)� text_type�binary_type)�http_client�urllibN� )�EOF�spaceCharacters�asciiLetters�asciiUppercase)�ReparseException)�_utils)�StringIO)�BytesIOc C s g | ]}|j d ��qS )�ascii)�encode)�.0�item� r �"/usr/lib/python3.6/_inputstream.py� <listcomp> s r c C s g | ]}|j d ��qS )r )r )r r r r r r s c C s g | ]}|j d ��qS )r )r )r r r r r r s � >� <u� [----]�]z"\uD800-\uDFFF"i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� z[ - -/:-@[-`{-~]c @ sH e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Zdd � Z dd� Z dS )�BufferedStreamz�Buffering for streams that do not have buffering of their own The buffer is implemented as a list of chunks on the assumption that joining many strings will be slow since it is O(n**2) c C s || _ g | _ddg| _d S )Nr r ���)�stream�buffer�position)�selfr r r r �__init__@ s zBufferedStream.__init__c C s@ d}x(| j d | jd � D ]}|t|�7 }qW || jd 7 }|S )Nr r )r r �len)r! �pos�chunkr r r �tellE s zBufferedStream.tellc C sX || j � kst�|}d}x0t| j| �|k rH|t| j| �8 }|d7 }qW ||g| _d S )Nr r )�_bufferedBytes�AssertionErrorr# r r )r! r$ �offset�ir r r �seekL s zBufferedStream.seekc C sT | j s| j|�S | jd t| j �krF| jd t| j d �krF| j|�S | j|�S d S )Nr r r )r �_readStreamr r# �_readFromBuffer)r! �bytesr r r �readU s zBufferedStream.readc C s t dd� | jD ��S )Nc S s g | ]}t |��qS r )r# )r r r r r r _ s z1BufferedStream._bufferedBytes.<locals>.<listcomp>)�sumr )r! r r r r'