Browse Source

重构支付系统 + 代码优化

0. 重置支付系统,
1. 添加 码支付
2. 添加 PayJs
3. 代码优化
兔姬桑 5 years ago
parent
commit
077d41480d
43 changed files with 1949 additions and 21003 deletions
  1. 1 0
      .gitignore
  2. 0 19210
      _ide_helper.php
  3. 0 248
      app/Components/AlipayNotify.php
  4. 0 265
      app/Components/AlipaySubmit.php
  5. 0 220
      app/Components/Callback.php
  6. 2 0
      app/Components/Helpers.php
  7. 1 3
      app/Console/Commands/AutoClearLog.php
  8. 39 7
      app/Console/Commands/AutoJob.php
  9. 0 3
      app/Console/Commands/AutoPingNode.php
  10. 1 3
      app/Console/Commands/AutoReportNode.php
  11. 3 7
      app/Console/Commands/ServiceTimer.php
  12. 29 5
      app/Http/Controllers/AdminController.php
  13. 0 56
      app/Http/Controllers/Api/AlipayController.php
  14. 0 89
      app/Http/Controllers/Api/F2fpayController.php
  15. 0 58
      app/Http/Controllers/Api/PayJsController.php
  16. 0 25
      app/Http/Controllers/Controller.php
  17. 177 0
      app/Http/Controllers/Gateway/AbstractPayment.php
  18. 83 0
      app/Http/Controllers/Gateway/AopF2F.php
  19. 95 0
      app/Http/Controllers/Gateway/CodePay.php
  20. 71 0
      app/Http/Controllers/Gateway/PayJs.php
  21. 93 209
      app/Http/Controllers/PaymentController.php
  22. 59 0
      app/Http/Controllers/ServiceController.php
  23. 2 2
      app/Http/Controllers/SubscribeController.php
  24. 3 4
      app/Http/Controllers/UserController.php
  25. 1 2
      app/Http/Middleware/VerifyCsrfToken.php
  26. 1 2
      app/Http/Models/NotificationLog.php
  27. 0 78
      app/Http/Models/OrderGoods.php
  28. 6 17
      app/Http/Models/Payment.php
  29. 11 10
      composer.json
  30. 848 107
      composer.lock
  31. 0 0
      public/assets/images/alipay.svg
  32. 1 0
      public/assets/images/qq.svg
  33. 1 0
      public/assets/images/wechat.svg
  34. 83 59
      resources/views/admin/system.blade.php
  35. 2 10
      resources/views/payment/detail.blade.php
  36. 13 21
      resources/views/user/buy.blade.php
  37. 9 0
      resources/views/user/components/purchase.blade.php
  38. 15 26
      resources/views/user/services.blade.php
  39. 0 4
      routes/api.php
  40. 118 92
      routes/web.php
  41. 160 161
      sql/db.sql
  42. 17 0
      sql/mod/20200415.sql
  43. 4 0
      sql/mod/20200419.sql

+ 1 - 0
.gitignore

@@ -20,3 +20,4 @@ yarn-error.log
 .env
 .phpunit.result.cache
 _ide_helper_models.php
+_ide_helper.php

+ 0 - 19210
_ide_helper.php

@@ -1,19210 +0,0 @@
-<?php
-// @formatter:off
-
-/**
- * A helper file for Laravel 5, to provide autocomplete information to your IDE
- * Generated for Laravel 5.8.38 on 2020-04-15 08:22:37.
- *
- * This file should not be included in your code, only analyzed by your IDE!
- *
- * @author Barry vd. Heuvel <barryvdh@gmail.com>
- * @see https://github.com/barryvdh/laravel-ide-helper
- */
-
-namespace Illuminate\Support\Facades { 
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Contracts\Foundation\Application
-     */ 
-    class App {
-        
-        /**
-         * Get the version number of the application.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function version()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->version();
-        }
-        
-        /**
-         * Run the given array of bootstrap classes.
-         *
-         * @param string[] $bootstrappers
-         * @return void 
-         * @static 
-         */ 
-        public static function bootstrapWith($bootstrappers)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->bootstrapWith($bootstrappers);
-        }
-        
-        /**
-         * Register a callback to run after loading the environment.
-         *
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function afterLoadingEnvironment($callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->afterLoadingEnvironment($callback);
-        }
-        
-        /**
-         * Register a callback to run before a bootstrapper.
-         *
-         * @param string $bootstrapper
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function beforeBootstrapping($bootstrapper, $callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->beforeBootstrapping($bootstrapper, $callback);
-        }
-        
-        /**
-         * Register a callback to run after a bootstrapper.
-         *
-         * @param string $bootstrapper
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function afterBootstrapping($bootstrapper, $callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->afterBootstrapping($bootstrapper, $callback);
-        }
-        
-        /**
-         * Determine if the application has been bootstrapped before.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasBeenBootstrapped()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->hasBeenBootstrapped();
-        }
-        
-        /**
-         * Set the base path for the application.
-         *
-         * @param string $basePath
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function setBasePath($basePath)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->setBasePath($basePath);
-        }
-        
-        /**
-         * Get the path to the application "app" directory.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function path($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->path($path);
-        }
-        
-        /**
-         * Set the application directory.
-         *
-         * @param string $path
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function useAppPath($path)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->useAppPath($path);
-        }
-        
-        /**
-         * Get the base path of the Laravel installation.
-         *
-         * @param string $path Optionally, a path to append to the base path
-         * @return string 
-         * @static 
-         */ 
-        public static function basePath($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->basePath($path);
-        }
-        
-        /**
-         * Get the path to the bootstrap directory.
-         *
-         * @param string $path Optionally, a path to append to the bootstrap path
-         * @return string 
-         * @static 
-         */ 
-        public static function bootstrapPath($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->bootstrapPath($path);
-        }
-        
-        /**
-         * Get the path to the application configuration files.
-         *
-         * @param string $path Optionally, a path to append to the config path
-         * @return string 
-         * @static 
-         */ 
-        public static function configPath($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->configPath($path);
-        }
-        
-        /**
-         * Get the path to the database directory.
-         *
-         * @param string $path Optionally, a path to append to the database path
-         * @return string 
-         * @static 
-         */ 
-        public static function databasePath($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->databasePath($path);
-        }
-        
-        /**
-         * Set the database directory.
-         *
-         * @param string $path
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function useDatabasePath($path)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->useDatabasePath($path);
-        }
-        
-        /**
-         * Get the path to the language files.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function langPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->langPath();
-        }
-        
-        /**
-         * Get the path to the public / web directory.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function publicPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->publicPath();
-        }
-        
-        /**
-         * Get the path to the storage directory.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function storagePath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->storagePath();
-        }
-        
-        /**
-         * Set the storage directory.
-         *
-         * @param string $path
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function useStoragePath($path)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->useStoragePath($path);
-        }
-        
-        /**
-         * Get the path to the resources directory.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function resourcePath($path = '')
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->resourcePath($path);
-        }
-        
-        /**
-         * Get the path to the environment file directory.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function environmentPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->environmentPath();
-        }
-        
-        /**
-         * Set the directory for the environment file.
-         *
-         * @param string $path
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function useEnvironmentPath($path)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->useEnvironmentPath($path);
-        }
-        
-        /**
-         * Set the environment file to be loaded during bootstrapping.
-         *
-         * @param string $file
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function loadEnvironmentFrom($file)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->loadEnvironmentFrom($file);
-        }
-        
-        /**
-         * Get the environment file the application is using.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function environmentFile()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->environmentFile();
-        }
-        
-        /**
-         * Get the fully qualified path to the environment file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function environmentFilePath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->environmentFilePath();
-        }
-        
-        /**
-         * Get or check the current application environment.
-         *
-         * @param string|array $environments
-         * @return string|bool 
-         * @static 
-         */ 
-        public static function environment(...$environments)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->environment(...$environments);
-        }
-        
-        /**
-         * Determine if application is in local environment.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isLocal()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isLocal();
-        }
-        
-        /**
-         * Determine if application is in production environment.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isProduction()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isProduction();
-        }
-        
-        /**
-         * Detect the application's current environment.
-         *
-         * @param \Closure $callback
-         * @return string 
-         * @static 
-         */ 
-        public static function detectEnvironment($callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->detectEnvironment($callback);
-        }
-        
-        /**
-         * Determine if the application is running in the console.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function runningInConsole()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->runningInConsole();
-        }
-        
-        /**
-         * Determine if the application is running unit tests.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function runningUnitTests()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->runningUnitTests();
-        }
-        
-        /**
-         * Register all of the configured providers.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function registerConfiguredProviders()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->registerConfiguredProviders();
-        }
-        
-        /**
-         * Register a service provider with the application.
-         *
-         * @param \Illuminate\Support\ServiceProvider|string $provider
-         * @param bool $force
-         * @return \Illuminate\Support\ServiceProvider 
-         * @static 
-         */ 
-        public static function register($provider, $force = false)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->register($provider, $force);
-        }
-        
-        /**
-         * Get the registered service provider instance if it exists.
-         *
-         * @param \Illuminate\Support\ServiceProvider|string $provider
-         * @return \Illuminate\Support\ServiceProvider|null 
-         * @static 
-         */ 
-        public static function getProvider($provider)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getProvider($provider);
-        }
-        
-        /**
-         * Get the registered service provider instances if any exist.
-         *
-         * @param \Illuminate\Support\ServiceProvider|string $provider
-         * @return array 
-         * @static 
-         */ 
-        public static function getProviders($provider)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getProviders($provider);
-        }
-        
-        /**
-         * Resolve a service provider instance from the class name.
-         *
-         * @param string $provider
-         * @return \Illuminate\Support\ServiceProvider 
-         * @static 
-         */ 
-        public static function resolveProvider($provider)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->resolveProvider($provider);
-        }
-        
-        /**
-         * Load and boot all of the remaining deferred providers.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function loadDeferredProviders()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->loadDeferredProviders();
-        }
-        
-        /**
-         * Load the provider for a deferred service.
-         *
-         * @param string $service
-         * @return void 
-         * @static 
-         */ 
-        public static function loadDeferredProvider($service)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->loadDeferredProvider($service);
-        }
-        
-        /**
-         * Register a deferred provider and service.
-         *
-         * @param string $provider
-         * @param string|null $service
-         * @return void 
-         * @static 
-         */ 
-        public static function registerDeferredProvider($provider, $service = null)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->registerDeferredProvider($provider, $service);
-        }
-        
-        /**
-         * Resolve the given type from the container.
-         * 
-         * (Overriding Container::make)
-         *
-         * @param string $abstract
-         * @param array $parameters
-         * @return mixed 
-         * @static 
-         */ 
-        public static function make($abstract, $parameters = [])
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->make($abstract, $parameters);
-        }
-        
-        /**
-         * Determine if the given abstract type has been bound.
-         * 
-         * (Overriding Container::bound)
-         *
-         * @param string $abstract
-         * @return bool 
-         * @static 
-         */ 
-        public static function bound($abstract)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->bound($abstract);
-        }
-        
-        /**
-         * Determine if the application has booted.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isBooted()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isBooted();
-        }
-        
-        /**
-         * Boot the application's service providers.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function boot()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->boot();
-        }
-        
-        /**
-         * Register a new boot listener.
-         *
-         * @param callable $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function booting($callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->booting($callback);
-        }
-        
-        /**
-         * Register a new "booted" listener.
-         *
-         * @param callable $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function booted($callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->booted($callback);
-        }
-        
-        /**
-         * {@inheritdoc}
-         *
-         * @static 
-         */ 
-        public static function handle($request, $type = 1, $catch = true)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->handle($request, $type, $catch);
-        }
-        
-        /**
-         * Determine if middleware has been disabled for the application.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function shouldSkipMiddleware()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->shouldSkipMiddleware();
-        }
-        
-        /**
-         * Get the path to the cached services.php file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCachedServicesPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getCachedServicesPath();
-        }
-        
-        /**
-         * Get the path to the cached packages.php file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCachedPackagesPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getCachedPackagesPath();
-        }
-        
-        /**
-         * Determine if the application configuration is cached.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function configurationIsCached()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->configurationIsCached();
-        }
-        
-        /**
-         * Get the path to the configuration cache file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCachedConfigPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getCachedConfigPath();
-        }
-        
-        /**
-         * Determine if the application routes are cached.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function routesAreCached()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->routesAreCached();
-        }
-        
-        /**
-         * Get the path to the routes cache file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCachedRoutesPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getCachedRoutesPath();
-        }
-        
-        /**
-         * Determine if the application events are cached.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function eventsAreCached()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->eventsAreCached();
-        }
-        
-        /**
-         * Get the path to the events cache file.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCachedEventsPath()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getCachedEventsPath();
-        }
-        
-        /**
-         * Determine if the application is currently down for maintenance.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDownForMaintenance()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isDownForMaintenance();
-        }
-        
-        /**
-         * Throw an HttpException with the given data.
-         *
-         * @param int $code
-         * @param string $message
-         * @param array $headers
-         * @return void 
-         * @throws \Symfony\Component\HttpKernel\Exception\HttpException
-         * @static 
-         */ 
-        public static function abort($code, $message = '', $headers = [])
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->abort($code, $message, $headers);
-        }
-        
-        /**
-         * Register a terminating callback with the application.
-         *
-         * @param callable|string $callback
-         * @return \Illuminate\Foundation\Application 
-         * @static 
-         */ 
-        public static function terminating($callback)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->terminating($callback);
-        }
-        
-        /**
-         * Terminate the application.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function terminate()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->terminate();
-        }
-        
-        /**
-         * Get the service providers that have been loaded.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getLoadedProviders()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getLoadedProviders();
-        }
-        
-        /**
-         * Get the application's deferred services.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDeferredServices()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getDeferredServices();
-        }
-        
-        /**
-         * Set the application's deferred services.
-         *
-         * @param array $services
-         * @return void 
-         * @static 
-         */ 
-        public static function setDeferredServices($services)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->setDeferredServices($services);
-        }
-        
-        /**
-         * Add an array of services to the application's deferred services.
-         *
-         * @param array $services
-         * @return void 
-         * @static 
-         */ 
-        public static function addDeferredServices($services)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->addDeferredServices($services);
-        }
-        
-        /**
-         * Determine if the given service is a deferred service.
-         *
-         * @param string $service
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDeferredService($service)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isDeferredService($service);
-        }
-        
-        /**
-         * Configure the real-time facade namespace.
-         *
-         * @param string $namespace
-         * @return void 
-         * @static 
-         */ 
-        public static function provideFacades($namespace)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->provideFacades($namespace);
-        }
-        
-        /**
-         * Get the current application locale.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getLocale()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getLocale();
-        }
-        
-        /**
-         * Set the current application locale.
-         *
-         * @param string $locale
-         * @return void 
-         * @static 
-         */ 
-        public static function setLocale($locale)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->setLocale($locale);
-        }
-        
-        /**
-         * Determine if application locale is the given locale.
-         *
-         * @param string $locale
-         * @return bool 
-         * @static 
-         */ 
-        public static function isLocale($locale)
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isLocale($locale);
-        }
-        
-        /**
-         * Register the core class aliases in the container.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function registerCoreContainerAliases()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->registerCoreContainerAliases();
-        }
-        
-        /**
-         * Flush the container of all bindings and resolved instances.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flush()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->flush();
-        }
-        
-        /**
-         * Get the application namespace.
-         *
-         * @return string 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function getNamespace()
-        {
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getNamespace();
-        }
-        
-        /**
-         * Define a contextual binding.
-         *
-         * @param array|string $concrete
-         * @return \Illuminate\Contracts\Container\ContextualBindingBuilder 
-         * @static 
-         */ 
-        public static function when($concrete)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->when($concrete);
-        }
-        
-        /**
-         * Returns true if the container can return an entry for the given identifier.
-         * 
-         * Returns false otherwise.
-         * 
-         * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
-         * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
-         *
-         * @param string $id Identifier of the entry to look for.
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($id)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->has($id);
-        }
-        
-        /**
-         * Determine if the given abstract type has been resolved.
-         *
-         * @param string $abstract
-         * @return bool 
-         * @static 
-         */ 
-        public static function resolved($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->resolved($abstract);
-        }
-        
-        /**
-         * Determine if a given type is shared.
-         *
-         * @param string $abstract
-         * @return bool 
-         * @static 
-         */ 
-        public static function isShared($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isShared($abstract);
-        }
-        
-        /**
-         * Determine if a given string is an alias.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function isAlias($name)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->isAlias($name);
-        }
-        
-        /**
-         * Register a binding with the container.
-         *
-         * @param string $abstract
-         * @param \Closure|string|null $concrete
-         * @param bool $shared
-         * @return void 
-         * @static 
-         */ 
-        public static function bind($abstract, $concrete = null, $shared = false)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->bind($abstract, $concrete, $shared);
-        }
-        
-        /**
-         * Determine if the container has a method binding.
-         *
-         * @param string $method
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMethodBinding($method)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->hasMethodBinding($method);
-        }
-        
-        /**
-         * Bind a callback to resolve with Container::call.
-         *
-         * @param array|string $method
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function bindMethod($method, $callback)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->bindMethod($method, $callback);
-        }
-        
-        /**
-         * Get the method binding for the given method.
-         *
-         * @param string $method
-         * @param mixed $instance
-         * @return mixed 
-         * @static 
-         */ 
-        public static function callMethodBinding($method, $instance)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->callMethodBinding($method, $instance);
-        }
-        
-        /**
-         * Add a contextual binding to the container.
-         *
-         * @param string $concrete
-         * @param string $abstract
-         * @param \Closure|string $implementation
-         * @return void 
-         * @static 
-         */ 
-        public static function addContextualBinding($concrete, $abstract, $implementation)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->addContextualBinding($concrete, $abstract, $implementation);
-        }
-        
-        /**
-         * Register a binding if it hasn't already been registered.
-         *
-         * @param string $abstract
-         * @param \Closure|string|null $concrete
-         * @param bool $shared
-         * @return void 
-         * @static 
-         */ 
-        public static function bindIf($abstract, $concrete = null, $shared = false)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->bindIf($abstract, $concrete, $shared);
-        }
-        
-        /**
-         * Register a shared binding in the container.
-         *
-         * @param string $abstract
-         * @param \Closure|string|null $concrete
-         * @return void 
-         * @static 
-         */ 
-        public static function singleton($abstract, $concrete = null)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->singleton($abstract, $concrete);
-        }
-        
-        /**
-         * "Extend" an abstract type in the container.
-         *
-         * @param string $abstract
-         * @param \Closure $closure
-         * @return void 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function extend($abstract, $closure)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->extend($abstract, $closure);
-        }
-        
-        /**
-         * Register an existing instance as shared in the container.
-         *
-         * @param string $abstract
-         * @param mixed $instance
-         * @return mixed 
-         * @static 
-         */ 
-        public static function instance($abstract, $instance)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->instance($abstract, $instance);
-        }
-        
-        /**
-         * Assign a set of tags to a given binding.
-         *
-         * @param array|string $abstracts
-         * @param array|mixed $tags
-         * @return void 
-         * @static 
-         */ 
-        public static function tag($abstracts, $tags)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->tag($abstracts, $tags);
-        }
-        
-        /**
-         * Resolve all of the bindings for a given tag.
-         *
-         * @param string $tag
-         * @return \Illuminate\Container\iterable 
-         * @static 
-         */ 
-        public static function tagged($tag)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->tagged($tag);
-        }
-        
-        /**
-         * Alias a type to a different name.
-         *
-         * @param string $abstract
-         * @param string $alias
-         * @return void 
-         * @throws \LogicException
-         * @static 
-         */ 
-        public static function alias($abstract, $alias)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->alias($abstract, $alias);
-        }
-        
-        /**
-         * Bind a new callback to an abstract's rebind event.
-         *
-         * @param string $abstract
-         * @param \Closure $callback
-         * @return mixed 
-         * @static 
-         */ 
-        public static function rebinding($abstract, $callback)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->rebinding($abstract, $callback);
-        }
-        
-        /**
-         * Refresh an instance on the given target and method.
-         *
-         * @param string $abstract
-         * @param mixed $target
-         * @param string $method
-         * @return mixed 
-         * @static 
-         */ 
-        public static function refresh($abstract, $target, $method)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->refresh($abstract, $target, $method);
-        }
-        
-        /**
-         * Wrap the given closure such that its dependencies will be injected when executed.
-         *
-         * @param \Closure $callback
-         * @param array $parameters
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function wrap($callback, $parameters = [])
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->wrap($callback, $parameters);
-        }
-        
-        /**
-         * Call the given Closure / class@method and inject its dependencies.
-         *
-         * @param callable|string $callback
-         * @param array $parameters
-         * @param string|null $defaultMethod
-         * @return mixed 
-         * @static 
-         */ 
-        public static function call($callback, $parameters = [], $defaultMethod = null)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->call($callback, $parameters, $defaultMethod);
-        }
-        
-        /**
-         * Get a closure to resolve the given type from the container.
-         *
-         * @param string $abstract
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function factory($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->factory($abstract);
-        }
-        
-        /**
-         * An alias function name for make().
-         *
-         * @param string $abstract
-         * @param array $parameters
-         * @return mixed 
-         * @static 
-         */ 
-        public static function makeWith($abstract, $parameters = [])
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->makeWith($abstract, $parameters);
-        }
-        
-        /**
-         * Finds an entry of the container by its identifier and returns it.
-         *
-         * @param string $id Identifier of the entry to look for.
-         * @throws NotFoundExceptionInterface  No entry was found for **this** identifier.
-         * @throws ContainerExceptionInterface Error while retrieving the entry.
-         * @return mixed Entry.
-         * @static 
-         */ 
-        public static function get($id)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->get($id);
-        }
-        
-        /**
-         * Instantiate a concrete instance of the given type.
-         *
-         * @param string $concrete
-         * @return mixed 
-         * @throws \Illuminate\Contracts\Container\BindingResolutionException
-         * @static 
-         */ 
-        public static function build($concrete)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->build($concrete);
-        }
-        
-        /**
-         * Register a new resolving callback.
-         *
-         * @param \Closure|string $abstract
-         * @param \Closure|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function resolving($abstract, $callback = null)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->resolving($abstract, $callback);
-        }
-        
-        /**
-         * Register a new after resolving callback for all types.
-         *
-         * @param \Closure|string $abstract
-         * @param \Closure|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function afterResolving($abstract, $callback = null)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->afterResolving($abstract, $callback);
-        }
-        
-        /**
-         * Get the container's bindings.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getBindings()
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getBindings();
-        }
-        
-        /**
-         * Get the alias for an abstract if available.
-         *
-         * @param string $abstract
-         * @return string 
-         * @static 
-         */ 
-        public static function getAlias($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->getAlias($abstract);
-        }
-        
-        /**
-         * Remove all of the extender callbacks for a given type.
-         *
-         * @param string $abstract
-         * @return void 
-         * @static 
-         */ 
-        public static function forgetExtenders($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->forgetExtenders($abstract);
-        }
-        
-        /**
-         * Remove a resolved instance from the instance cache.
-         *
-         * @param string $abstract
-         * @return void 
-         * @static 
-         */ 
-        public static function forgetInstance($abstract)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->forgetInstance($abstract);
-        }
-        
-        /**
-         * Clear all of the instances from the container.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function forgetInstances()
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->forgetInstances();
-        }
-        
-        /**
-         * Get the globally available instance of the container.
-         *
-         * @return static 
-         * @static 
-         */ 
-        public static function getInstance()
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        return \Illuminate\Foundation\Application::getInstance();
-        }
-        
-        /**
-         * Set the shared instance of the container.
-         *
-         * @param \Illuminate\Contracts\Container\Container|null $container
-         * @return \Illuminate\Contracts\Container\Container|static 
-         * @static 
-         */ 
-        public static function setInstance($container = null)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        return \Illuminate\Foundation\Application::setInstance($container);
-        }
-        
-        /**
-         * Determine if a given offset exists.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function offsetExists($key)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->offsetExists($key);
-        }
-        
-        /**
-         * Get the value at a given offset.
-         *
-         * @param string $key
-         * @return mixed 
-         * @static 
-         */ 
-        public static function offsetGet($key)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        return $instance->offsetGet($key);
-        }
-        
-        /**
-         * Set the value at a given offset.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetSet($key, $value)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->offsetSet($key, $value);
-        }
-        
-        /**
-         * Unset the value at a given offset.
-         *
-         * @param string $key
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetUnset($key)
-        {
-            //Method inherited from \Illuminate\Container\Container            
-                        /** @var \Illuminate\Foundation\Application $instance */
-                        $instance->offsetUnset($key);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Contracts\Console\Kernel
-     */ 
-    class Artisan {
-        
-        /**
-         * Run the console application.
-         *
-         * @param \Symfony\Component\Console\Input\InputInterface $input
-         * @param \Symfony\Component\Console\Output\OutputInterface|null $output
-         * @return int 
-         * @static 
-         */ 
-        public static function handle($input, $output = null)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->handle($input, $output);
-        }
-        
-        /**
-         * Terminate the application.
-         *
-         * @param \Symfony\Component\Console\Input\InputInterface $input
-         * @param int $status
-         * @return void 
-         * @static 
-         */ 
-        public static function terminate($input, $status)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        $instance->terminate($input, $status);
-        }
-        
-        /**
-         * Register a Closure based command with the application.
-         *
-         * @param string $signature
-         * @param \Closure $callback
-         * @return \Illuminate\Foundation\Console\ClosureCommand 
-         * @static 
-         */ 
-        public static function command($signature, $callback)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->command($signature, $callback);
-        }
-        
-        /**
-         * Register the given command with the console application.
-         *
-         * @param \Symfony\Component\Console\Command\Command $command
-         * @return void 
-         * @static 
-         */ 
-        public static function registerCommand($command)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        $instance->registerCommand($command);
-        }
-        
-        /**
-         * Run an Artisan console command by name.
-         *
-         * @param string $command
-         * @param array $parameters
-         * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer
-         * @return int 
-         * @throws \Symfony\Component\Console\Exception\CommandNotFoundException
-         * @static 
-         */ 
-        public static function call($command, $parameters = [], $outputBuffer = null)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->call($command, $parameters, $outputBuffer);
-        }
-        
-        /**
-         * Queue the given console command.
-         *
-         * @param string $command
-         * @param array $parameters
-         * @return \Illuminate\Foundation\Bus\PendingDispatch 
-         * @static 
-         */ 
-        public static function queue($command, $parameters = [])
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->queue($command, $parameters);
-        }
-        
-        /**
-         * Get all of the commands registered with the console.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function all()
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->all();
-        }
-        
-        /**
-         * Get the output for the last run command.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function output()
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        return $instance->output();
-        }
-        
-        /**
-         * Bootstrap the application for artisan commands.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function bootstrap()
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        $instance->bootstrap();
-        }
-        
-        /**
-         * Set the Artisan application instance.
-         *
-         * @param \Illuminate\Console\Application $artisan
-         * @return void 
-         * @static 
-         */ 
-        public static function setArtisan($artisan)
-        {
-            //Method inherited from \Illuminate\Foundation\Console\Kernel            
-                        /** @var \App\Console\Kernel $instance */
-                        $instance->setArtisan($artisan);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Auth\AuthManager
-     * @see \Illuminate\Contracts\Auth\Factory
-     * @see \Illuminate\Contracts\Auth\Guard
-     * @see \Illuminate\Contracts\Auth\StatefulGuard
-     */ 
-    class Auth {
-        
-        /**
-         * Attempt to get the guard from the local cache.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard 
-         * @static 
-         */ 
-        public static function guard($name = null)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->guard($name);
-        }
-        
-        /**
-         * Create a session based authentication guard.
-         *
-         * @param string $name
-         * @param array $config
-         * @return \Illuminate\Auth\SessionGuard 
-         * @static 
-         */ 
-        public static function createSessionDriver($name, $config)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->createSessionDriver($name, $config);
-        }
-        
-        /**
-         * Create a token based authentication guard.
-         *
-         * @param string $name
-         * @param array $config
-         * @return \Illuminate\Auth\TokenGuard 
-         * @static 
-         */ 
-        public static function createTokenDriver($name, $config)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->createTokenDriver($name, $config);
-        }
-        
-        /**
-         * Get the default authentication driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default guard driver the factory should serve.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function shouldUse($name)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        $instance->shouldUse($name);
-        }
-        
-        /**
-         * Set the default authentication driver name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Register a new callback based request guard.
-         *
-         * @param string $driver
-         * @param callable $callback
-         * @return \Illuminate\Auth\AuthManager 
-         * @static 
-         */ 
-        public static function viaRequest($driver, $callback)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->viaRequest($driver, $callback);
-        }
-        
-        /**
-         * Get the user resolver callback.
-         *
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function userResolver()
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->userResolver();
-        }
-        
-        /**
-         * Set the callback to be used to resolve users.
-         *
-         * @param \Closure $userResolver
-         * @return \Illuminate\Auth\AuthManager 
-         * @static 
-         */ 
-        public static function resolveUsersUsing($userResolver)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->resolveUsersUsing($userResolver);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Auth\AuthManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Register a custom provider creator Closure.
-         *
-         * @param string $name
-         * @param \Closure $callback
-         * @return \Illuminate\Auth\AuthManager 
-         * @static 
-         */ 
-        public static function provider($name, $callback)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->provider($name, $callback);
-        }
-        
-        /**
-         * Create the user provider implementation for the driver.
-         *
-         * @param string|null $provider
-         * @return \Illuminate\Contracts\Auth\UserProvider|null 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function createUserProvider($provider = null)
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->createUserProvider($provider);
-        }
-        
-        /**
-         * Get the default user provider name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultUserProvider()
-        {
-                        /** @var \Illuminate\Auth\AuthManager $instance */
-                        return $instance->getDefaultUserProvider();
-        }
-        
-        /**
-         * Get the currently authenticated user.
-         *
-         * @return \App\Http\Models\User|null 
-         * @static 
-         */ 
-        public static function user()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->user();
-        }
-        
-        /**
-         * Get the ID for the currently authenticated user.
-         *
-         * @return int|null 
-         * @static 
-         */ 
-        public static function id()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->id();
-        }
-        
-        /**
-         * Log a user into the application without sessions or cookies.
-         *
-         * @param array $credentials
-         * @return bool 
-         * @static 
-         */ 
-        public static function once($credentials = [])
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->once($credentials);
-        }
-        
-        /**
-         * Log the given user ID into the application without sessions or cookies.
-         *
-         * @param mixed $id
-         * @return \App\Http\Models\User|false 
-         * @static 
-         */ 
-        public static function onceUsingId($id)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->onceUsingId($id);
-        }
-        
-        /**
-         * Validate a user's credentials.
-         *
-         * @param array $credentials
-         * @return bool 
-         * @static 
-         */ 
-        public static function validate($credentials = [])
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->validate($credentials);
-        }
-        
-        /**
-         * Attempt to authenticate using HTTP Basic Auth.
-         *
-         * @param string $field
-         * @param array $extraConditions
-         * @return \Symfony\Component\HttpFoundation\Response|null 
-         * @static 
-         */ 
-        public static function basic($field = 'email', $extraConditions = [])
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->basic($field, $extraConditions);
-        }
-        
-        /**
-         * Perform a stateless HTTP Basic login attempt.
-         *
-         * @param string $field
-         * @param array $extraConditions
-         * @return \Symfony\Component\HttpFoundation\Response|null 
-         * @static 
-         */ 
-        public static function onceBasic($field = 'email', $extraConditions = [])
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->onceBasic($field, $extraConditions);
-        }
-        
-        /**
-         * Attempt to authenticate a user using the given credentials.
-         *
-         * @param array $credentials
-         * @param bool $remember
-         * @return bool 
-         * @static 
-         */ 
-        public static function attempt($credentials = [], $remember = false)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->attempt($credentials, $remember);
-        }
-        
-        /**
-         * Log the given user ID into the application.
-         *
-         * @param mixed $id
-         * @param bool $remember
-         * @return \App\Http\Models\User|false 
-         * @static 
-         */ 
-        public static function loginUsingId($id, $remember = false)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->loginUsingId($id, $remember);
-        }
-        
-        /**
-         * Log a user into the application.
-         *
-         * @param \Illuminate\Contracts\Auth\Authenticatable $user
-         * @param bool $remember
-         * @return void 
-         * @static 
-         */ 
-        public static function login($user, $remember = false)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->login($user, $remember);
-        }
-        
-        /**
-         * Log the user out of the application.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function logout()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->logout();
-        }
-        
-        /**
-         * Invalidate other sessions for the current user.
-         * 
-         * The application must be using the AuthenticateSession middleware.
-         *
-         * @param string $password
-         * @param string $attribute
-         * @return bool|null 
-         * @static 
-         */ 
-        public static function logoutOtherDevices($password, $attribute = 'password')
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->logoutOtherDevices($password, $attribute);
-        }
-        
-        /**
-         * Register an authentication attempt event listener.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function attempting($callback)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->attempting($callback);
-        }
-        
-        /**
-         * Get the last user we attempted to authenticate.
-         *
-         * @return \App\Http\Models\User 
-         * @static 
-         */ 
-        public static function getLastAttempted()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getLastAttempted();
-        }
-        
-        /**
-         * Get a unique identifier for the auth session value.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getName()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getName();
-        }
-        
-        /**
-         * Get the name of the cookie used to store the "recaller".
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getRecallerName()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getRecallerName();
-        }
-        
-        /**
-         * Determine if the user was authenticated via "remember me" cookie.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function viaRemember()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->viaRemember();
-        }
-        
-        /**
-         * Get the cookie creator instance used by the guard.
-         *
-         * @return \Illuminate\Contracts\Cookie\QueueingFactory 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function getCookieJar()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getCookieJar();
-        }
-        
-        /**
-         * Set the cookie creator instance used by the guard.
-         *
-         * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie
-         * @return void 
-         * @static 
-         */ 
-        public static function setCookieJar($cookie)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->setCookieJar($cookie);
-        }
-        
-        /**
-         * Get the event dispatcher instance.
-         *
-         * @return \Illuminate\Contracts\Events\Dispatcher 
-         * @static 
-         */ 
-        public static function getDispatcher()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getDispatcher();
-        }
-        
-        /**
-         * Set the event dispatcher instance.
-         *
-         * @param \Illuminate\Contracts\Events\Dispatcher $events
-         * @return void 
-         * @static 
-         */ 
-        public static function setDispatcher($events)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->setDispatcher($events);
-        }
-        
-        /**
-         * Get the session store used by the guard.
-         *
-         * @return \Illuminate\Contracts\Session\Session 
-         * @static 
-         */ 
-        public static function getSession()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getSession();
-        }
-        
-        /**
-         * Return the currently cached user.
-         *
-         * @return \App\Http\Models\User|null 
-         * @static 
-         */ 
-        public static function getUser()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getUser();
-        }
-        
-        /**
-         * Set the current user.
-         *
-         * @param \Illuminate\Contracts\Auth\Authenticatable $user
-         * @return \Illuminate\Auth\SessionGuard 
-         * @static 
-         */ 
-        public static function setUser($user)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->setUser($user);
-        }
-        
-        /**
-         * Get the current request instance.
-         *
-         * @return \Symfony\Component\HttpFoundation\Request 
-         * @static 
-         */ 
-        public static function getRequest()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getRequest();
-        }
-        
-        /**
-         * Set the current request instance.
-         *
-         * @param \Symfony\Component\HttpFoundation\Request $request
-         * @return \Illuminate\Auth\SessionGuard 
-         * @static 
-         */ 
-        public static function setRequest($request)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->setRequest($request);
-        }
-        
-        /**
-         * Determine if current user is authenticated. If not, throw an exception.
-         *
-         * @return \App\Http\Models\User 
-         * @throws \Illuminate\Auth\AuthenticationException
-         * @static 
-         */ 
-        public static function authenticate()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->authenticate();
-        }
-        
-        /**
-         * Determine if the guard has a user instance.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasUser()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->hasUser();
-        }
-        
-        /**
-         * Determine if the current user is authenticated.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function check()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->check();
-        }
-        
-        /**
-         * Determine if the current user is a guest.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function guest()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->guest();
-        }
-        
-        /**
-         * Get the user provider used by the guard.
-         *
-         * @return \Illuminate\Contracts\Auth\UserProvider 
-         * @static 
-         */ 
-        public static function getProvider()
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        return $instance->getProvider();
-        }
-        
-        /**
-         * Set the user provider used by the guard.
-         *
-         * @param \Illuminate\Contracts\Auth\UserProvider $provider
-         * @return void 
-         * @static 
-         */ 
-        public static function setProvider($provider)
-        {
-                        /** @var \Illuminate\Auth\SessionGuard $instance */
-                        $instance->setProvider($provider);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Auth\SessionGuard::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Auth\SessionGuard::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Auth\SessionGuard::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\View\Compilers\BladeCompiler
-     */ 
-    class Blade {
-        
-        /**
-         * Compile the view at the given path.
-         *
-         * @param string|null $path
-         * @return void 
-         * @static 
-         */ 
-        public static function compile($path = null)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->compile($path);
-        }
-        
-        /**
-         * Get the path currently being compiled.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getPath()
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->getPath();
-        }
-        
-        /**
-         * Set the path currently being compiled.
-         *
-         * @param string $path
-         * @return void 
-         * @static 
-         */ 
-        public static function setPath($path)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->setPath($path);
-        }
-        
-        /**
-         * Compile the given Blade template contents.
-         *
-         * @param string $value
-         * @return string 
-         * @static 
-         */ 
-        public static function compileString($value)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->compileString($value);
-        }
-        
-        /**
-         * Strip the parentheses from the given expression.
-         *
-         * @param string $expression
-         * @return string 
-         * @static 
-         */ 
-        public static function stripParentheses($expression)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->stripParentheses($expression);
-        }
-        
-        /**
-         * Register a custom Blade compiler.
-         *
-         * @param callable $compiler
-         * @return void 
-         * @static 
-         */ 
-        public static function extend($compiler)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->extend($compiler);
-        }
-        
-        /**
-         * Get the extensions used by the compiler.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getExtensions()
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->getExtensions();
-        }
-        
-        /**
-         * Register an "if" statement directive.
-         *
-         * @param string $name
-         * @param callable $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function if($name, $callback)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->if($name, $callback);
-        }
-        
-        /**
-         * Check the result of a condition.
-         *
-         * @param string $name
-         * @param array $parameters
-         * @return bool 
-         * @static 
-         */ 
-        public static function check($name, ...$parameters)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->check($name, ...$parameters);
-        }
-        
-        /**
-         * Register a component alias directive.
-         *
-         * @param string $path
-         * @param string|null $alias
-         * @return void 
-         * @static 
-         */ 
-        public static function component($path, $alias = null)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->component($path, $alias);
-        }
-        
-        /**
-         * Register an include alias directive.
-         *
-         * @param string $path
-         * @param string|null $alias
-         * @return void 
-         * @static 
-         */ 
-        public static function include($path, $alias = null)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->include($path, $alias);
-        }
-        
-        /**
-         * Register a handler for custom directives.
-         *
-         * @param string $name
-         * @param callable $handler
-         * @return void 
-         * @static 
-         */ 
-        public static function directive($name, $handler)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->directive($name, $handler);
-        }
-        
-        /**
-         * Get the list of custom directives.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getCustomDirectives()
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->getCustomDirectives();
-        }
-        
-        /**
-         * Set the echo format to be used by the compiler.
-         *
-         * @param string $format
-         * @return void 
-         * @static 
-         */ 
-        public static function setEchoFormat($format)
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->setEchoFormat($format);
-        }
-        
-        /**
-         * Set the "echo" format to double encode entities.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function withDoubleEncoding()
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->withDoubleEncoding();
-        }
-        
-        /**
-         * Set the "echo" format to not double encode entities.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function withoutDoubleEncoding()
-        {
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        $instance->withoutDoubleEncoding();
-        }
-        
-        /**
-         * Get the path to the compiled version of a view.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function getCompiledPath($path)
-        {
-            //Method inherited from \Illuminate\View\Compilers\Compiler            
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->getCompiledPath($path);
-        }
-        
-        /**
-         * Determine if the view at the given path is expired.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function isExpired($path)
-        {
-            //Method inherited from \Illuminate\View\Compilers\Compiler            
-                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
-                        return $instance->isExpired($path);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(string $channel, callable|string  $callback)
-     * @method static mixed auth(\Illuminate\Http\Request $request)
-     * @see \Illuminate\Contracts\Broadcasting\Factory
-     */ 
-    class Broadcast {
-        
-        /**
-         * Register the routes for handling broadcast authentication and sockets.
-         *
-         * @param array|null $attributes
-         * @return void 
-         * @static 
-         */ 
-        public static function routes($attributes = null)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        $instance->routes($attributes);
-        }
-        
-        /**
-         * Get the socket ID for the given request.
-         *
-         * @param \Illuminate\Http\Request|null $request
-         * @return string|null 
-         * @static 
-         */ 
-        public static function socket($request = null)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->socket($request);
-        }
-        
-        /**
-         * Begin broadcasting an event.
-         *
-         * @param mixed|null $event
-         * @return \Illuminate\Broadcasting\PendingBroadcast|void 
-         * @static 
-         */ 
-        public static function event($event = null)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->event($event);
-        }
-        
-        /**
-         * Queue the given event for broadcast.
-         *
-         * @param mixed $event
-         * @return void 
-         * @static 
-         */ 
-        public static function queue($event)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        $instance->queue($event);
-        }
-        
-        /**
-         * Get a driver instance.
-         *
-         * @param string|null $driver
-         * @return mixed 
-         * @static 
-         */ 
-        public static function connection($driver = null)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->connection($driver);
-        }
-        
-        /**
-         * Get a driver instance.
-         *
-         * @param string|null $name
-         * @return mixed 
-         * @static 
-         */ 
-        public static function driver($name = null)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->driver($name);
-        }
-        
-        /**
-         * Get the default driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default driver name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Broadcasting\BroadcastManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Contracts\Bus\Dispatcher
-     */ 
-    class Bus {
-        
-        /**
-         * Dispatch a command to its appropriate handler.
-         *
-         * @param mixed $command
-         * @return mixed 
-         * @static 
-         */ 
-        public static function dispatch($command)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->dispatch($command);
-        }
-        
-        /**
-         * Dispatch a command to its appropriate handler in the current process.
-         *
-         * @param mixed $command
-         * @param mixed $handler
-         * @return mixed 
-         * @static 
-         */ 
-        public static function dispatchNow($command, $handler = null)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->dispatchNow($command, $handler);
-        }
-        
-        /**
-         * Determine if the given command has a handler.
-         *
-         * @param mixed $command
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasCommandHandler($command)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->hasCommandHandler($command);
-        }
-        
-        /**
-         * Retrieve the handler for a command.
-         *
-         * @param mixed $command
-         * @return bool|mixed 
-         * @static 
-         */ 
-        public static function getCommandHandler($command)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->getCommandHandler($command);
-        }
-        
-        /**
-         * Dispatch a command to its appropriate handler behind a queue.
-         *
-         * @param mixed $command
-         * @return mixed 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function dispatchToQueue($command)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->dispatchToQueue($command);
-        }
-        
-        /**
-         * Set the pipes through which commands should be piped before dispatching.
-         *
-         * @param array $pipes
-         * @return \Illuminate\Bus\Dispatcher 
-         * @static 
-         */ 
-        public static function pipeThrough($pipes)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->pipeThrough($pipes);
-        }
-        
-        /**
-         * Map a command to a handler.
-         *
-         * @param array $map
-         * @return \Illuminate\Bus\Dispatcher 
-         * @static 
-         */ 
-        public static function map($map)
-        {
-                        /** @var \Illuminate\Bus\Dispatcher $instance */
-                        return $instance->map($map);
-        }
-        
-        /**
-         * Assert if a job was dispatched based on a truth-test callback.
-         *
-         * @param string $command
-         * @param callable|int|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertDispatched($command, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
-                        $instance->assertDispatched($command, $callback);
-        }
-        
-        /**
-         * Determine if a job was dispatched based on a truth-test callback.
-         *
-         * @param string $command
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotDispatched($command, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
-                        $instance->assertNotDispatched($command, $callback);
-        }
-        
-        /**
-         * Get all of the jobs matching a truth-test callback.
-         *
-         * @param string $command
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function dispatched($command, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
-                        return $instance->dispatched($command, $callback);
-        }
-        
-        /**
-         * Determine if there are any stored commands for a given class.
-         *
-         * @param string $command
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasDispatched($command)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
-                        return $instance->hasDispatched($command);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Cache\CacheManager
-     * @see \Illuminate\Cache\Repository
-     */ 
-    class Cache {
-        
-        /**
-         * Get a cache store instance by name, wrapped in a repository.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Contracts\Cache\Repository 
-         * @static 
-         */ 
-        public static function store($name = null)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->store($name);
-        }
-        
-        /**
-         * Get a cache driver instance.
-         *
-         * @param string|null $driver
-         * @return \Illuminate\Contracts\Cache\Repository 
-         * @static 
-         */ 
-        public static function driver($driver = null)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->driver($driver);
-        }
-        
-        /**
-         * Create a new cache repository with the given implementation.
-         *
-         * @param \Illuminate\Contracts\Cache\Store $store
-         * @return \Illuminate\Cache\Repository 
-         * @static 
-         */ 
-        public static function repository($store)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->repository($store);
-        }
-        
-        /**
-         * Get the default cache driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default cache driver name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Unset the given driver instances.
-         *
-         * @param array|string|null $name
-         * @return \Illuminate\Cache\CacheManager 
-         * @static 
-         */ 
-        public static function forgetDriver($name = null)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->forgetDriver($name);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Cache\CacheManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Cache\CacheManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Determine if an item exists in the cache.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->has($key);
-        }
-        
-        /**
-         * Determine if an item doesn't exist in the cache.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function missing($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->missing($key);
-        }
-        
-        /**
-         * Retrieve an item from the cache by key.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function get($key, $default = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->get($key, $default);
-        }
-        
-        /**
-         * Retrieve multiple items from the cache by key.
-         * 
-         * Items not found in the cache will have a null value.
-         *
-         * @param array $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function many($keys)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->many($keys);
-        }
-        
-        /**
-         * Obtains multiple cache items by their unique keys.
-         *
-         * @param \Psr\SimpleCache\iterable $keys A list of keys that can obtained in a single operation.
-         * @param mixed $default Default value to return for keys that do not exist.
-         * @return \Psr\SimpleCache\iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.
-         * @throws \Psr\SimpleCache\InvalidArgumentException
-         *   MUST be thrown if $keys is neither an array nor a Traversable,
-         *   or if any of the $keys are not a legal value.
-         * @static 
-         */ 
-        public static function getMultiple($keys, $default = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->getMultiple($keys, $default);
-        }
-        
-        /**
-         * Retrieve an item from the cache and delete it.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function pull($key, $default = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->pull($key, $default);
-        }
-        
-        /**
-         * Store an item in the cache.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @param \DateTimeInterface|\DateInterval|int|null $ttl
-         * @return bool 
-         * @static 
-         */ 
-        public static function put($key, $value, $ttl = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->put($key, $value, $ttl);
-        }
-        
-        /**
-         * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.
-         *
-         * @param string $key The key of the item to store.
-         * @param mixed $value The value of the item to store, must be serializable.
-         * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
-         *                                      the driver supports TTL then the library may set a default value
-         *                                      for it or let the driver take care of that.
-         * @return bool True on success and false on failure.
-         * @throws \Psr\SimpleCache\InvalidArgumentException
-         *   MUST be thrown if the $key string is not a legal value.
-         * @static 
-         */ 
-        public static function set($key, $value, $ttl = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->set($key, $value, $ttl);
-        }
-        
-        /**
-         * Store multiple items in the cache for a given number of seconds.
-         *
-         * @param array $values
-         * @param \DateTimeInterface|\DateInterval|int|null $ttl
-         * @return bool 
-         * @static 
-         */ 
-        public static function putMany($values, $ttl = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->putMany($values, $ttl);
-        }
-        
-        /**
-         * Persists a set of key => value pairs in the cache, with an optional TTL.
-         *
-         * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation.
-         * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
-         *                                       the driver supports TTL then the library may set a default value
-         *                                       for it or let the driver take care of that.
-         * @return bool True on success and false on failure.
-         * @throws \Psr\SimpleCache\InvalidArgumentException
-         *   MUST be thrown if $values is neither an array nor a Traversable,
-         *   or if any of the $values are not a legal value.
-         * @static 
-         */ 
-        public static function setMultiple($values, $ttl = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->setMultiple($values, $ttl);
-        }
-        
-        /**
-         * Store an item in the cache if the key does not exist.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @param \DateTimeInterface|\DateInterval|int|null $ttl
-         * @return bool 
-         * @static 
-         */ 
-        public static function add($key, $value, $ttl = null)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->add($key, $value, $ttl);
-        }
-        
-        /**
-         * Increment the value of an item in the cache.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return int|bool 
-         * @static 
-         */ 
-        public static function increment($key, $value = 1)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->increment($key, $value);
-        }
-        
-        /**
-         * Decrement the value of an item in the cache.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return int|bool 
-         * @static 
-         */ 
-        public static function decrement($key, $value = 1)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->decrement($key, $value);
-        }
-        
-        /**
-         * Store an item in the cache indefinitely.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return bool 
-         * @static 
-         */ 
-        public static function forever($key, $value)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->forever($key, $value);
-        }
-        
-        /**
-         * Get an item from the cache, or execute the given Closure and store the result.
-         *
-         * @param string $key
-         * @param \DateTimeInterface|\DateInterval|int|null $ttl
-         * @param \Closure $callback
-         * @return mixed 
-         * @static 
-         */ 
-        public static function remember($key, $ttl, $callback)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->remember($key, $ttl, $callback);
-        }
-        
-        /**
-         * Get an item from the cache, or execute the given Closure and store the result forever.
-         *
-         * @param string $key
-         * @param \Closure $callback
-         * @return mixed 
-         * @static 
-         */ 
-        public static function sear($key, $callback)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->sear($key, $callback);
-        }
-        
-        /**
-         * Get an item from the cache, or execute the given Closure and store the result forever.
-         *
-         * @param string $key
-         * @param \Closure $callback
-         * @return mixed 
-         * @static 
-         */ 
-        public static function rememberForever($key, $callback)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->rememberForever($key, $callback);
-        }
-        
-        /**
-         * Remove an item from the cache.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function forget($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->forget($key);
-        }
-        
-        /**
-         * Delete an item from the cache by its unique key.
-         *
-         * @param string $key The unique cache key of the item to delete.
-         * @return bool True if the item was successfully removed. False if there was an error.
-         * @throws \Psr\SimpleCache\InvalidArgumentException
-         *   MUST be thrown if the $key string is not a legal value.
-         * @static 
-         */ 
-        public static function delete($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->delete($key);
-        }
-        
-        /**
-         * Deletes multiple cache items in a single operation.
-         *
-         * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted.
-         * @return bool True if the items were successfully removed. False if there was an error.
-         * @throws \Psr\SimpleCache\InvalidArgumentException
-         *   MUST be thrown if $keys is neither an array nor a Traversable,
-         *   or if any of the $keys are not a legal value.
-         * @static 
-         */ 
-        public static function deleteMultiple($keys)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->deleteMultiple($keys);
-        }
-        
-        /**
-         * Wipes clean the entire cache's keys.
-         *
-         * @return bool True on success and false on failure.
-         * @static 
-         */ 
-        public static function clear()
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->clear();
-        }
-        
-        /**
-         * Begin executing a new tags operation if the store supports it.
-         *
-         * @param array|mixed $names
-         * @return \Illuminate\Cache\TaggedCache 
-         * @throws \BadMethodCallException
-         * @static 
-         */ 
-        public static function tags($names)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->tags($names);
-        }
-        
-        /**
-         * Get the default cache time.
-         *
-         * @return int 
-         * @static 
-         */ 
-        public static function getDefaultCacheTime()
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->getDefaultCacheTime();
-        }
-        
-        /**
-         * Set the default cache time in seconds.
-         *
-         * @param int|null $seconds
-         * @return \Illuminate\Cache\Repository 
-         * @static 
-         */ 
-        public static function setDefaultCacheTime($seconds)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->setDefaultCacheTime($seconds);
-        }
-        
-        /**
-         * Get the cache store implementation.
-         *
-         * @return \Illuminate\Contracts\Cache\Store 
-         * @static 
-         */ 
-        public static function getStore()
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->getStore();
-        }
-        
-        /**
-         * Set the event dispatcher instance.
-         *
-         * @param \Illuminate\Contracts\Events\Dispatcher $events
-         * @return void 
-         * @static 
-         */ 
-        public static function setEventDispatcher($events)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        $instance->setEventDispatcher($events);
-        }
-        
-        /**
-         * Determine if a cached value exists.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function offsetExists($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->offsetExists($key);
-        }
-        
-        /**
-         * Retrieve an item from the cache by key.
-         *
-         * @param string $key
-         * @return mixed 
-         * @static 
-         */ 
-        public static function offsetGet($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->offsetGet($key);
-        }
-        
-        /**
-         * Store an item in the cache for the default time.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetSet($key, $value)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        $instance->offsetSet($key, $value);
-        }
-        
-        /**
-         * Remove an item from the cache.
-         *
-         * @param string $key
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetUnset($key)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        $instance->offsetUnset($key);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Cache\Repository::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Cache\Repository::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Cache\Repository::hasMacro($name);
-        }
-        
-        /**
-         * Dynamically handle calls to the class.
-         *
-         * @param string $method
-         * @param array $parameters
-         * @return mixed 
-         * @throws \BadMethodCallException
-         * @static 
-         */ 
-        public static function macroCall($method, $parameters)
-        {
-                        /** @var \Illuminate\Cache\Repository $instance */
-                        return $instance->macroCall($method, $parameters);
-        }
-        
-        /**
-         * Remove all items from the cache.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function flush()
-        {
-                        /** @var \Illuminate\Cache\FileStore $instance */
-                        return $instance->flush();
-        }
-        
-        /**
-         * Get the Filesystem instance.
-         *
-         * @return \Illuminate\Filesystem\Filesystem 
-         * @static 
-         */ 
-        public static function getFilesystem()
-        {
-                        /** @var \Illuminate\Cache\FileStore $instance */
-                        return $instance->getFilesystem();
-        }
-        
-        /**
-         * Get the working directory of the cache.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDirectory()
-        {
-                        /** @var \Illuminate\Cache\FileStore $instance */
-                        return $instance->getDirectory();
-        }
-        
-        /**
-         * Get the cache key prefix.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getPrefix()
-        {
-                        /** @var \Illuminate\Cache\FileStore $instance */
-                        return $instance->getPrefix();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Config\Repository
-     */ 
-    class Config {
-        
-        /**
-         * Determine if the given configuration value exists.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($key)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->has($key);
-        }
-        
-        /**
-         * Get the specified configuration value.
-         *
-         * @param array|string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function get($key, $default = null)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->get($key, $default);
-        }
-        
-        /**
-         * Get many configuration values.
-         *
-         * @param array $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function getMany($keys)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->getMany($keys);
-        }
-        
-        /**
-         * Set a given configuration value.
-         *
-         * @param array|string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function set($key, $value = null)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        $instance->set($key, $value);
-        }
-        
-        /**
-         * Prepend a value onto an array configuration value.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function prepend($key, $value)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        $instance->prepend($key, $value);
-        }
-        
-        /**
-         * Push a value onto an array configuration value.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function push($key, $value)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        $instance->push($key, $value);
-        }
-        
-        /**
-         * Get all of the configuration items for the application.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function all()
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->all();
-        }
-        
-        /**
-         * Determine if the given configuration option exists.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function offsetExists($key)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->offsetExists($key);
-        }
-        
-        /**
-         * Get a configuration option.
-         *
-         * @param string $key
-         * @return mixed 
-         * @static 
-         */ 
-        public static function offsetGet($key)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        return $instance->offsetGet($key);
-        }
-        
-        /**
-         * Set a configuration option.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetSet($key, $value)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        $instance->offsetSet($key, $value);
-        }
-        
-        /**
-         * Unset a configuration option.
-         *
-         * @param string $key
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetUnset($key)
-        {
-                        /** @var \Illuminate\Config\Repository $instance */
-                        $instance->offsetUnset($key);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Cookie\CookieJar
-     */ 
-    class Cookie {
-        
-        /**
-         * Create a new cookie instance.
-         *
-         * @param string $name
-         * @param string $value
-         * @param int $minutes
-         * @param string|null $path
-         * @param string|null $domain
-         * @param bool|null $secure
-         * @param bool $httpOnly
-         * @param bool $raw
-         * @param string|null $sameSite
-         * @return \Symfony\Component\HttpFoundation\Cookie 
-         * @static 
-         */ 
-        public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);
-        }
-        
-        /**
-         * Create a cookie that lasts "forever" (five years).
-         *
-         * @param string $name
-         * @param string $value
-         * @param string|null $path
-         * @param string|null $domain
-         * @param bool|null $secure
-         * @param bool $httpOnly
-         * @param bool $raw
-         * @param string|null $sameSite
-         * @return \Symfony\Component\HttpFoundation\Cookie 
-         * @static 
-         */ 
-        public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);
-        }
-        
-        /**
-         * Expire the given cookie.
-         *
-         * @param string $name
-         * @param string|null $path
-         * @param string|null $domain
-         * @return \Symfony\Component\HttpFoundation\Cookie 
-         * @static 
-         */ 
-        public static function forget($name, $path = null, $domain = null)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->forget($name, $path, $domain);
-        }
-        
-        /**
-         * Determine if a cookie has been queued.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasQueued($key)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->hasQueued($key);
-        }
-        
-        /**
-         * Get a queued cookie instance.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return \Symfony\Component\HttpFoundation\Cookie 
-         * @static 
-         */ 
-        public static function queued($key, $default = null)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->queued($key, $default);
-        }
-        
-        /**
-         * Queue a cookie to send with the next response.
-         *
-         * @param array $parameters
-         * @return void 
-         * @static 
-         */ 
-        public static function queue(...$parameters)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        $instance->queue(...$parameters);
-        }
-        
-        /**
-         * Remove a cookie from the queue.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function unqueue($name)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        $instance->unqueue($name);
-        }
-        
-        /**
-         * Set the default path and domain for the jar.
-         *
-         * @param string $path
-         * @param string $domain
-         * @param bool $secure
-         * @param string|null $sameSite
-         * @return \Illuminate\Cookie\CookieJar 
-         * @static 
-         */ 
-        public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);
-        }
-        
-        /**
-         * Get the cookies which have been queued for the next request.
-         *
-         * @return \Symfony\Component\HttpFoundation\Cookie[] 
-         * @static 
-         */ 
-        public static function getQueuedCookies()
-        {
-                        /** @var \Illuminate\Cookie\CookieJar $instance */
-                        return $instance->getQueuedCookies();
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Cookie\CookieJar::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Cookie\CookieJar::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Cookie\CookieJar::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Encryption\Encrypter
-     */ 
-    class Crypt {
-        
-        /**
-         * Determine if the given key and cipher combination is valid.
-         *
-         * @param string $key
-         * @param string $cipher
-         * @return bool 
-         * @static 
-         */ 
-        public static function supported($key, $cipher)
-        {
-                        return \Illuminate\Encryption\Encrypter::supported($key, $cipher);
-        }
-        
-        /**
-         * Create a new encryption key for the given cipher.
-         *
-         * @param string $cipher
-         * @return string 
-         * @static 
-         */ 
-        public static function generateKey($cipher)
-        {
-                        return \Illuminate\Encryption\Encrypter::generateKey($cipher);
-        }
-        
-        /**
-         * Encrypt the given value.
-         *
-         * @param mixed $value
-         * @param bool $serialize
-         * @return string 
-         * @throws \Illuminate\Contracts\Encryption\EncryptException
-         * @static 
-         */ 
-        public static function encrypt($value, $serialize = true)
-        {
-                        /** @var \Illuminate\Encryption\Encrypter $instance */
-                        return $instance->encrypt($value, $serialize);
-        }
-        
-        /**
-         * Encrypt a string without serialization.
-         *
-         * @param string $value
-         * @return string 
-         * @throws \Illuminate\Contracts\Encryption\EncryptException
-         * @static 
-         */ 
-        public static function encryptString($value)
-        {
-                        /** @var \Illuminate\Encryption\Encrypter $instance */
-                        return $instance->encryptString($value);
-        }
-        
-        /**
-         * Decrypt the given value.
-         *
-         * @param string $payload
-         * @param bool $unserialize
-         * @return mixed 
-         * @throws \Illuminate\Contracts\Encryption\DecryptException
-         * @static 
-         */ 
-        public static function decrypt($payload, $unserialize = true)
-        {
-                        /** @var \Illuminate\Encryption\Encrypter $instance */
-                        return $instance->decrypt($payload, $unserialize);
-        }
-        
-        /**
-         * Decrypt the given string without unserialization.
-         *
-         * @param string $payload
-         * @return string 
-         * @throws \Illuminate\Contracts\Encryption\DecryptException
-         * @static 
-         */ 
-        public static function decryptString($payload)
-        {
-                        /** @var \Illuminate\Encryption\Encrypter $instance */
-                        return $instance->decryptString($payload);
-        }
-        
-        /**
-         * Get the encryption key.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getKey()
-        {
-                        /** @var \Illuminate\Encryption\Encrypter $instance */
-                        return $instance->getKey();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Database\DatabaseManager
-     * @see \Illuminate\Database\Connection
-     */ 
-    class DB {
-        
-        /**
-         * Get a database connection instance.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Database\Connection 
-         * @static 
-         */ 
-        public static function connection($name = null)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->connection($name);
-        }
-        
-        /**
-         * Disconnect from the given database and remove from local cache.
-         *
-         * @param string|null $name
-         * @return void 
-         * @static 
-         */ 
-        public static function purge($name = null)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        $instance->purge($name);
-        }
-        
-        /**
-         * Disconnect from the given database.
-         *
-         * @param string|null $name
-         * @return void 
-         * @static 
-         */ 
-        public static function disconnect($name = null)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        $instance->disconnect($name);
-        }
-        
-        /**
-         * Reconnect to the given database.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Database\Connection 
-         * @static 
-         */ 
-        public static function reconnect($name = null)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->reconnect($name);
-        }
-        
-        /**
-         * Get the default connection name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultConnection()
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->getDefaultConnection();
-        }
-        
-        /**
-         * Set the default connection name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultConnection($name)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        $instance->setDefaultConnection($name);
-        }
-        
-        /**
-         * Get all of the support drivers.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function supportedDrivers()
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->supportedDrivers();
-        }
-        
-        /**
-         * Get all of the drivers that are actually available.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function availableDrivers()
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->availableDrivers();
-        }
-        
-        /**
-         * Register an extension connection resolver.
-         *
-         * @param string $name
-         * @param callable $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function extend($name, $resolver)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        $instance->extend($name, $resolver);
-        }
-        
-        /**
-         * Return all of the created connections.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getConnections()
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        return $instance->getConnections();
-        }
-        
-        /**
-         * Set the database reconnector callback.
-         *
-         * @param callable $reconnector
-         * @return void 
-         * @static 
-         */ 
-        public static function setReconnector($reconnector)
-        {
-                        /** @var \Illuminate\Database\DatabaseManager $instance */
-                        $instance->setReconnector($reconnector);
-        }
-        
-        /**
-         * Get a schema builder instance for the connection.
-         *
-         * @return \Illuminate\Database\Schema\MySqlBuilder 
-         * @static 
-         */ 
-        public static function getSchemaBuilder()
-        {
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getSchemaBuilder();
-        }
-        
-        /**
-         * Bind values to their parameters in the given statement.
-         *
-         * @param \PDOStatement $statement
-         * @param array $bindings
-         * @return void 
-         * @static 
-         */ 
-        public static function bindValues($statement, $bindings)
-        {
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->bindValues($statement, $bindings);
-        }
-        
-        /**
-         * Set the query grammar to the default implementation.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function useDefaultQueryGrammar()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->useDefaultQueryGrammar();
-        }
-        
-        /**
-         * Set the schema grammar to the default implementation.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function useDefaultSchemaGrammar()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->useDefaultSchemaGrammar();
-        }
-        
-        /**
-         * Set the query post processor to the default implementation.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function useDefaultPostProcessor()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->useDefaultPostProcessor();
-        }
-        
-        /**
-         * Begin a fluent query against a database table.
-         *
-         * @param string $table
-         * @return \Illuminate\Database\Query\Builder 
-         * @static 
-         */ 
-        public static function table($table)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->table($table);
-        }
-        
-        /**
-         * Get a new query builder instance.
-         *
-         * @return \Illuminate\Database\Query\Builder 
-         * @static 
-         */ 
-        public static function query()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->query();
-        }
-        
-        /**
-         * Run a select statement and return a single result.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @param bool $useReadPdo
-         * @return mixed 
-         * @static 
-         */ 
-        public static function selectOne($query, $bindings = [], $useReadPdo = true)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->selectOne($query, $bindings, $useReadPdo);
-        }
-        
-        /**
-         * Run a select statement against the database.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return array 
-         * @static 
-         */ 
-        public static function selectFromWriteConnection($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->selectFromWriteConnection($query, $bindings);
-        }
-        
-        /**
-         * Run a select statement against the database.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @param bool $useReadPdo
-         * @return array 
-         * @static 
-         */ 
-        public static function select($query, $bindings = [], $useReadPdo = true)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->select($query, $bindings, $useReadPdo);
-        }
-        
-        /**
-         * Run a select statement against the database and returns a generator.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @param bool $useReadPdo
-         * @return \Generator 
-         * @static 
-         */ 
-        public static function cursor($query, $bindings = [], $useReadPdo = true)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->cursor($query, $bindings, $useReadPdo);
-        }
-        
-        /**
-         * Run an insert statement against the database.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return bool 
-         * @static 
-         */ 
-        public static function insert($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->insert($query, $bindings);
-        }
-        
-        /**
-         * Run an update statement against the database.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return int 
-         * @static 
-         */ 
-        public static function update($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->update($query, $bindings);
-        }
-        
-        /**
-         * Run a delete statement against the database.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return int 
-         * @static 
-         */ 
-        public static function delete($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->delete($query, $bindings);
-        }
-        
-        /**
-         * Execute an SQL statement and return the boolean result.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return bool 
-         * @static 
-         */ 
-        public static function statement($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->statement($query, $bindings);
-        }
-        
-        /**
-         * Run an SQL statement and get the number of rows affected.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @return int 
-         * @static 
-         */ 
-        public static function affectingStatement($query, $bindings = [])
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->affectingStatement($query, $bindings);
-        }
-        
-        /**
-         * Run a raw, unprepared query against the PDO connection.
-         *
-         * @param string $query
-         * @return bool 
-         * @static 
-         */ 
-        public static function unprepared($query)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->unprepared($query);
-        }
-        
-        /**
-         * Execute the given callback in "dry run" mode.
-         *
-         * @param \Closure $callback
-         * @return array 
-         * @static 
-         */ 
-        public static function pretend($callback)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->pretend($callback);
-        }
-        
-        /**
-         * Prepare the query bindings for execution.
-         *
-         * @param array $bindings
-         * @return array 
-         * @static 
-         */ 
-        public static function prepareBindings($bindings)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->prepareBindings($bindings);
-        }
-        
-        /**
-         * Log a query in the connection's query log.
-         *
-         * @param string $query
-         * @param array $bindings
-         * @param float|null $time
-         * @return void 
-         * @static 
-         */ 
-        public static function logQuery($query, $bindings, $time = null)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->logQuery($query, $bindings, $time);
-        }
-        
-        /**
-         * Register a database query listener with the connection.
-         *
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function listen($callback)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->listen($callback);
-        }
-        
-        /**
-         * Get a new raw query expression.
-         *
-         * @param mixed $value
-         * @return \Illuminate\Database\Query\Expression 
-         * @static 
-         */ 
-        public static function raw($value)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->raw($value);
-        }
-        
-        /**
-         * Indicate if any records have been modified.
-         *
-         * @param bool $value
-         * @return void 
-         * @static 
-         */ 
-        public static function recordsHaveBeenModified($value = true)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->recordsHaveBeenModified($value);
-        }
-        
-        /**
-         * Is Doctrine available?
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDoctrineAvailable()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->isDoctrineAvailable();
-        }
-        
-        /**
-         * Get a Doctrine Schema Column instance.
-         *
-         * @param string $table
-         * @param string $column
-         * @return \Doctrine\DBAL\Schema\Column 
-         * @static 
-         */ 
-        public static function getDoctrineColumn($table, $column)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getDoctrineColumn($table, $column);
-        }
-        
-        /**
-         * Get the Doctrine DBAL schema manager for the connection.
-         *
-         * @return \Doctrine\DBAL\Schema\AbstractSchemaManager 
-         * @static 
-         */ 
-        public static function getDoctrineSchemaManager()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getDoctrineSchemaManager();
-        }
-        
-        /**
-         * Get the Doctrine DBAL database connection instance.
-         *
-         * @return \Doctrine\DBAL\Connection 
-         * @static 
-         */ 
-        public static function getDoctrineConnection()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getDoctrineConnection();
-        }
-        
-        /**
-         * Get the current PDO connection.
-         *
-         * @return \PDO 
-         * @static 
-         */ 
-        public static function getPdo()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getPdo();
-        }
-        
-        /**
-         * Get the current PDO connection used for reading.
-         *
-         * @return \PDO 
-         * @static 
-         */ 
-        public static function getReadPdo()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getReadPdo();
-        }
-        
-        /**
-         * Set the PDO connection.
-         *
-         * @param \PDO|\Closure|null $pdo
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setPdo($pdo)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setPdo($pdo);
-        }
-        
-        /**
-         * Set the PDO connection used for reading.
-         *
-         * @param \PDO|\Closure|null $pdo
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setReadPdo($pdo)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setReadPdo($pdo);
-        }
-        
-        /**
-         * Get the database connection name.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function getName()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getName();
-        }
-        
-        /**
-         * Get an option from the configuration options.
-         *
-         * @param string|null $option
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getConfig($option = null)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getConfig($option);
-        }
-        
-        /**
-         * Get the PDO driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDriverName()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getDriverName();
-        }
-        
-        /**
-         * Get the query grammar used by the connection.
-         *
-         * @return \Illuminate\Database\Query\Grammars\Grammar 
-         * @static 
-         */ 
-        public static function getQueryGrammar()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getQueryGrammar();
-        }
-        
-        /**
-         * Set the query grammar used by the connection.
-         *
-         * @param \Illuminate\Database\Query\Grammars\Grammar $grammar
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setQueryGrammar($grammar)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setQueryGrammar($grammar);
-        }
-        
-        /**
-         * Get the schema grammar used by the connection.
-         *
-         * @return \Illuminate\Database\Schema\Grammars\Grammar 
-         * @static 
-         */ 
-        public static function getSchemaGrammar()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getSchemaGrammar();
-        }
-        
-        /**
-         * Set the schema grammar used by the connection.
-         *
-         * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setSchemaGrammar($grammar)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setSchemaGrammar($grammar);
-        }
-        
-        /**
-         * Get the query post processor used by the connection.
-         *
-         * @return \Illuminate\Database\Query\Processors\Processor 
-         * @static 
-         */ 
-        public static function getPostProcessor()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getPostProcessor();
-        }
-        
-        /**
-         * Set the query post processor used by the connection.
-         *
-         * @param \Illuminate\Database\Query\Processors\Processor $processor
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setPostProcessor($processor)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setPostProcessor($processor);
-        }
-        
-        /**
-         * Get the event dispatcher used by the connection.
-         *
-         * @return \Illuminate\Contracts\Events\Dispatcher 
-         * @static 
-         */ 
-        public static function getEventDispatcher()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getEventDispatcher();
-        }
-        
-        /**
-         * Set the event dispatcher instance on the connection.
-         *
-         * @param \Illuminate\Contracts\Events\Dispatcher $events
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setEventDispatcher($events)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setEventDispatcher($events);
-        }
-        
-        /**
-         * Unset the event dispatcher for this connection.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function unsetEventDispatcher()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->unsetEventDispatcher();
-        }
-        
-        /**
-         * Determine if the connection is in a "dry run".
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function pretending()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->pretending();
-        }
-        
-        /**
-         * Get the connection query log.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getQueryLog()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getQueryLog();
-        }
-        
-        /**
-         * Clear the query log.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushQueryLog()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->flushQueryLog();
-        }
-        
-        /**
-         * Enable the query log on the connection.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function enableQueryLog()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->enableQueryLog();
-        }
-        
-        /**
-         * Disable the query log on the connection.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function disableQueryLog()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->disableQueryLog();
-        }
-        
-        /**
-         * Determine whether we're logging queries.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function logging()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->logging();
-        }
-        
-        /**
-         * Get the name of the connected database.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDatabaseName()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getDatabaseName();
-        }
-        
-        /**
-         * Set the name of the connected database.
-         *
-         * @param string $database
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setDatabaseName($database)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setDatabaseName($database);
-        }
-        
-        /**
-         * Get the table prefix for the connection.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getTablePrefix()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->getTablePrefix();
-        }
-        
-        /**
-         * Set the table prefix in use by the connection.
-         *
-         * @param string $prefix
-         * @return \Illuminate\Database\MySqlConnection 
-         * @static 
-         */ 
-        public static function setTablePrefix($prefix)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->setTablePrefix($prefix);
-        }
-        
-        /**
-         * Set the table prefix and return the grammar.
-         *
-         * @param \Illuminate\Database\Grammar $grammar
-         * @return \Illuminate\Database\Grammar 
-         * @static 
-         */ 
-        public static function withTablePrefix($grammar)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->withTablePrefix($grammar);
-        }
-        
-        /**
-         * Register a connection resolver.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function resolverFor($driver, $callback)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback);
-        }
-        
-        /**
-         * Get the connection resolver for the given driver.
-         *
-         * @param string $driver
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getResolver($driver)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        return \Illuminate\Database\MySqlConnection::getResolver($driver);
-        }
-        
-        /**
-         * Execute a Closure within a transaction.
-         *
-         * @param \Closure $callback
-         * @param int $attempts
-         * @return mixed 
-         * @throws \Exception|\Throwable
-         * @static 
-         */ 
-        public static function transaction($callback, $attempts = 1)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->transaction($callback, $attempts);
-        }
-        
-        /**
-         * Start a new database transaction.
-         *
-         * @return void 
-         * @throws \Exception
-         * @static 
-         */ 
-        public static function beginTransaction()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->beginTransaction();
-        }
-        
-        /**
-         * Commit the active database transaction.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function commit()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->commit();
-        }
-        
-        /**
-         * Rollback the active database transaction.
-         *
-         * @param int|null $toLevel
-         * @return void 
-         * @throws \Exception
-         * @static 
-         */ 
-        public static function rollBack($toLevel = null)
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        $instance->rollBack($toLevel);
-        }
-        
-        /**
-         * Get the number of active transactions.
-         *
-         * @return int 
-         * @static 
-         */ 
-        public static function transactionLevel()
-        {
-            //Method inherited from \Illuminate\Database\Connection            
-                        /** @var \Illuminate\Database\MySqlConnection $instance */
-                        return $instance->transactionLevel();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Events\Dispatcher
-     */ 
-    class Event {
-        
-        /**
-         * Register an event listener with the dispatcher.
-         *
-         * @param string|array $events
-         * @param mixed $listener
-         * @return void 
-         * @static 
-         */ 
-        public static function listen($events, $listener)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->listen($events, $listener);
-        }
-        
-        /**
-         * Determine if a given event has listeners.
-         *
-         * @param string $eventName
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasListeners($eventName)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->hasListeners($eventName);
-        }
-        
-        /**
-         * Register an event and payload to be fired later.
-         *
-         * @param string $event
-         * @param array $payload
-         * @return void 
-         * @static 
-         */ 
-        public static function push($event, $payload = [])
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->push($event, $payload);
-        }
-        
-        /**
-         * Flush a set of pushed events.
-         *
-         * @param string $event
-         * @return void 
-         * @static 
-         */ 
-        public static function flush($event)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->flush($event);
-        }
-        
-        /**
-         * Register an event subscriber with the dispatcher.
-         *
-         * @param object|string $subscriber
-         * @return void 
-         * @static 
-         */ 
-        public static function subscribe($subscriber)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->subscribe($subscriber);
-        }
-        
-        /**
-         * Fire an event until the first non-null response is returned.
-         *
-         * @param string|object $event
-         * @param mixed $payload
-         * @return array|null 
-         * @static 
-         */ 
-        public static function until($event, $payload = [])
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->until($event, $payload);
-        }
-        
-        /**
-         * Fire an event and call the listeners.
-         *
-         * @param string|object $event
-         * @param mixed $payload
-         * @param bool $halt
-         * @return array|null 
-         * @static 
-         */ 
-        public static function dispatch($event, $payload = [], $halt = false)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->dispatch($event, $payload, $halt);
-        }
-        
-        /**
-         * Get all of the listeners for a given event name.
-         *
-         * @param string $eventName
-         * @return array 
-         * @static 
-         */ 
-        public static function getListeners($eventName)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->getListeners($eventName);
-        }
-        
-        /**
-         * Register an event listener with the dispatcher.
-         *
-         * @param \Closure|string $listener
-         * @param bool $wildcard
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function makeListener($listener, $wildcard = false)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->makeListener($listener, $wildcard);
-        }
-        
-        /**
-         * Create a class based listener using the IoC container.
-         *
-         * @param string $listener
-         * @param bool $wildcard
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function createClassListener($listener, $wildcard = false)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->createClassListener($listener, $wildcard);
-        }
-        
-        /**
-         * Remove a set of listeners from the dispatcher.
-         *
-         * @param string $event
-         * @return void 
-         * @static 
-         */ 
-        public static function forget($event)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->forget($event);
-        }
-        
-        /**
-         * Forget all of the pushed listeners.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function forgetPushed()
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        $instance->forgetPushed();
-        }
-        
-        /**
-         * Set the queue resolver implementation.
-         *
-         * @param callable $resolver
-         * @return \Illuminate\Events\Dispatcher 
-         * @static 
-         */ 
-        public static function setQueueResolver($resolver)
-        {
-                        /** @var \Illuminate\Events\Dispatcher $instance */
-                        return $instance->setQueueResolver($resolver);
-        }
-        
-        /**
-         * Assert if an event was dispatched based on a truth-test callback.
-         *
-         * @param string $event
-         * @param callable|int|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertDispatched($event, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
-                        $instance->assertDispatched($event, $callback);
-        }
-        
-        /**
-         * Assert if a event was dispatched a number of times.
-         *
-         * @param string $event
-         * @param int $times
-         * @return void 
-         * @static 
-         */ 
-        public static function assertDispatchedTimes($event, $times = 1)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
-                        $instance->assertDispatchedTimes($event, $times);
-        }
-        
-        /**
-         * Determine if an event was dispatched based on a truth-test callback.
-         *
-         * @param string $event
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotDispatched($event, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
-                        $instance->assertNotDispatched($event, $callback);
-        }
-        
-        /**
-         * Get all of the events matching a truth-test callback.
-         *
-         * @param string $event
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function dispatched($event, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
-                        return $instance->dispatched($event, $callback);
-        }
-        
-        /**
-         * Determine if the given event has been dispatched.
-         *
-         * @param string $event
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasDispatched($event)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
-                        return $instance->hasDispatched($event);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Filesystem\Filesystem
-     */ 
-    class File {
-        
-        /**
-         * Determine if a file or directory exists.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function exists($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->exists($path);
-        }
-        
-        /**
-         * Get the contents of a file.
-         *
-         * @param string $path
-         * @param bool $lock
-         * @return string 
-         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
-         * @static 
-         */ 
-        public static function get($path, $lock = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->get($path, $lock);
-        }
-        
-        /**
-         * Get contents of a file with shared access.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function sharedGet($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->sharedGet($path);
-        }
-        
-        /**
-         * Get the returned value of a file.
-         *
-         * @param string $path
-         * @return mixed 
-         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
-         * @static 
-         */ 
-        public static function getRequire($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->getRequire($path);
-        }
-        
-        /**
-         * Require the given file once.
-         *
-         * @param string $file
-         * @return mixed 
-         * @static 
-         */ 
-        public static function requireOnce($file)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->requireOnce($file);
-        }
-        
-        /**
-         * Get the MD5 hash of the file at the given path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function hash($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->hash($path);
-        }
-        
-        /**
-         * Write the contents of a file.
-         *
-         * @param string $path
-         * @param string $contents
-         * @param bool $lock
-         * @return int|bool 
-         * @static 
-         */ 
-        public static function put($path, $contents, $lock = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->put($path, $contents, $lock);
-        }
-        
-        /**
-         * Write the contents of a file, replacing it atomically if it already exists.
-         *
-         * @param string $path
-         * @param string $content
-         * @return void 
-         * @static 
-         */ 
-        public static function replace($path, $content)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        $instance->replace($path, $content);
-        }
-        
-        /**
-         * Prepend to a file.
-         *
-         * @param string $path
-         * @param string $data
-         * @return int 
-         * @static 
-         */ 
-        public static function prepend($path, $data)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->prepend($path, $data);
-        }
-        
-        /**
-         * Append to a file.
-         *
-         * @param string $path
-         * @param string $data
-         * @return int 
-         * @static 
-         */ 
-        public static function append($path, $data)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->append($path, $data);
-        }
-        
-        /**
-         * Get or set UNIX mode of a file or directory.
-         *
-         * @param string $path
-         * @param int|null $mode
-         * @return mixed 
-         * @static 
-         */ 
-        public static function chmod($path, $mode = null)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->chmod($path, $mode);
-        }
-        
-        /**
-         * Delete the file at a given path.
-         *
-         * @param string|array $paths
-         * @return bool 
-         * @static 
-         */ 
-        public static function delete($paths)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->delete($paths);
-        }
-        
-        /**
-         * Move a file to a new location.
-         *
-         * @param string $path
-         * @param string $target
-         * @return bool 
-         * @static 
-         */ 
-        public static function move($path, $target)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->move($path, $target);
-        }
-        
-        /**
-         * Copy a file to a new location.
-         *
-         * @param string $path
-         * @param string $target
-         * @return bool 
-         * @static 
-         */ 
-        public static function copy($path, $target)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->copy($path, $target);
-        }
-        
-        /**
-         * Create a hard link to the target file or directory.
-         *
-         * @param string $target
-         * @param string $link
-         * @return void 
-         * @static 
-         */ 
-        public static function link($target, $link)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        $instance->link($target, $link);
-        }
-        
-        /**
-         * Extract the file name from a file path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function name($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->name($path);
-        }
-        
-        /**
-         * Extract the trailing name component from a file path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function basename($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->basename($path);
-        }
-        
-        /**
-         * Extract the parent directory from a file path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function dirname($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->dirname($path);
-        }
-        
-        /**
-         * Extract the file extension from a file path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function extension($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->extension($path);
-        }
-        
-        /**
-         * Get the file type of a given file.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function type($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->type($path);
-        }
-        
-        /**
-         * Get the mime-type of a given file.
-         *
-         * @param string $path
-         * @return string|false 
-         * @static 
-         */ 
-        public static function mimeType($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->mimeType($path);
-        }
-        
-        /**
-         * Get the file size of a given file.
-         *
-         * @param string $path
-         * @return int 
-         * @static 
-         */ 
-        public static function size($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->size($path);
-        }
-        
-        /**
-         * Get the file's last modification time.
-         *
-         * @param string $path
-         * @return int 
-         * @static 
-         */ 
-        public static function lastModified($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->lastModified($path);
-        }
-        
-        /**
-         * Determine if the given path is a directory.
-         *
-         * @param string $directory
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDirectory($directory)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->isDirectory($directory);
-        }
-        
-        /**
-         * Determine if the given path is readable.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function isReadable($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->isReadable($path);
-        }
-        
-        /**
-         * Determine if the given path is writable.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function isWritable($path)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->isWritable($path);
-        }
-        
-        /**
-         * Determine if the given path is a file.
-         *
-         * @param string $file
-         * @return bool 
-         * @static 
-         */ 
-        public static function isFile($file)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->isFile($file);
-        }
-        
-        /**
-         * Find path names matching a given pattern.
-         *
-         * @param string $pattern
-         * @param int $flags
-         * @return array 
-         * @static 
-         */ 
-        public static function glob($pattern, $flags = 0)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->glob($pattern, $flags);
-        }
-        
-        /**
-         * Get an array of all files in a directory.
-         *
-         * @param string $directory
-         * @param bool $hidden
-         * @return \Symfony\Component\Finder\SplFileInfo[] 
-         * @static 
-         */ 
-        public static function files($directory, $hidden = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->files($directory, $hidden);
-        }
-        
-        /**
-         * Get all of the files from the given directory (recursive).
-         *
-         * @param string $directory
-         * @param bool $hidden
-         * @return \Symfony\Component\Finder\SplFileInfo[] 
-         * @static 
-         */ 
-        public static function allFiles($directory, $hidden = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->allFiles($directory, $hidden);
-        }
-        
-        /**
-         * Get all of the directories within a given directory.
-         *
-         * @param string $directory
-         * @return array 
-         * @static 
-         */ 
-        public static function directories($directory)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->directories($directory);
-        }
-        
-        /**
-         * Create a directory.
-         *
-         * @param string $path
-         * @param int $mode
-         * @param bool $recursive
-         * @param bool $force
-         * @return bool 
-         * @static 
-         */ 
-        public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->makeDirectory($path, $mode, $recursive, $force);
-        }
-        
-        /**
-         * Move a directory.
-         *
-         * @param string $from
-         * @param string $to
-         * @param bool $overwrite
-         * @return bool 
-         * @static 
-         */ 
-        public static function moveDirectory($from, $to, $overwrite = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->moveDirectory($from, $to, $overwrite);
-        }
-        
-        /**
-         * Copy a directory from one location to another.
-         *
-         * @param string $directory
-         * @param string $destination
-         * @param int|null $options
-         * @return bool 
-         * @static 
-         */ 
-        public static function copyDirectory($directory, $destination, $options = null)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->copyDirectory($directory, $destination, $options);
-        }
-        
-        /**
-         * Recursively delete a directory.
-         * 
-         * The directory itself may be optionally preserved.
-         *
-         * @param string $directory
-         * @param bool $preserve
-         * @return bool 
-         * @static 
-         */ 
-        public static function deleteDirectory($directory, $preserve = false)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->deleteDirectory($directory, $preserve);
-        }
-        
-        /**
-         * Remove all of the directories within a given directory.
-         *
-         * @param string $directory
-         * @return bool 
-         * @static 
-         */ 
-        public static function deleteDirectories($directory)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->deleteDirectories($directory);
-        }
-        
-        /**
-         * Empty the specified directory of all files and folders.
-         *
-         * @param string $directory
-         * @return bool 
-         * @static 
-         */ 
-        public static function cleanDirectory($directory)
-        {
-                        /** @var \Illuminate\Filesystem\Filesystem $instance */
-                        return $instance->cleanDirectory($directory);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Filesystem\Filesystem::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Filesystem\Filesystem::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Contracts\Auth\Access\Gate
-     */ 
-    class Gate {
-        
-        /**
-         * Determine if a given ability has been defined.
-         *
-         * @param string|array $ability
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($ability)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->has($ability);
-        }
-        
-        /**
-         * Define a new ability.
-         *
-         * @param string $ability
-         * @param callable|string $callback
-         * @return \Illuminate\Auth\Access\Gate 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function define($ability, $callback)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->define($ability, $callback);
-        }
-        
-        /**
-         * Define abilities for a resource.
-         *
-         * @param string $name
-         * @param string $class
-         * @param array|null $abilities
-         * @return \Illuminate\Auth\Access\Gate 
-         * @static 
-         */ 
-        public static function resource($name, $class, $abilities = null)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->resource($name, $class, $abilities);
-        }
-        
-        /**
-         * Define a policy class for a given class type.
-         *
-         * @param string $class
-         * @param string $policy
-         * @return \Illuminate\Auth\Access\Gate 
-         * @static 
-         */ 
-        public static function policy($class, $policy)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->policy($class, $policy);
-        }
-        
-        /**
-         * Register a callback to run before all Gate checks.
-         *
-         * @param callable $callback
-         * @return \Illuminate\Auth\Access\Gate 
-         * @static 
-         */ 
-        public static function before($callback)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->before($callback);
-        }
-        
-        /**
-         * Register a callback to run after all Gate checks.
-         *
-         * @param callable $callback
-         * @return \Illuminate\Auth\Access\Gate 
-         * @static 
-         */ 
-        public static function after($callback)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->after($callback);
-        }
-        
-        /**
-         * Determine if the given ability should be granted for the current user.
-         *
-         * @param string $ability
-         * @param array|mixed $arguments
-         * @return bool 
-         * @static 
-         */ 
-        public static function allows($ability, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->allows($ability, $arguments);
-        }
-        
-        /**
-         * Determine if the given ability should be denied for the current user.
-         *
-         * @param string $ability
-         * @param array|mixed $arguments
-         * @return bool 
-         * @static 
-         */ 
-        public static function denies($ability, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->denies($ability, $arguments);
-        }
-        
-        /**
-         * Determine if all of the given abilities should be granted for the current user.
-         *
-         * @param \Illuminate\Auth\Access\iterable|string $abilities
-         * @param array|mixed $arguments
-         * @return bool 
-         * @static 
-         */ 
-        public static function check($abilities, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->check($abilities, $arguments);
-        }
-        
-        /**
-         * Determine if any one of the given abilities should be granted for the current user.
-         *
-         * @param \Illuminate\Auth\Access\iterable|string $abilities
-         * @param array|mixed $arguments
-         * @return bool 
-         * @static 
-         */ 
-        public static function any($abilities, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->any($abilities, $arguments);
-        }
-        
-        /**
-         * Determine if all of the given abilities should be denied for the current user.
-         *
-         * @param \Illuminate\Auth\Access\iterable|string $abilities
-         * @param array|mixed $arguments
-         * @return bool 
-         * @static 
-         */ 
-        public static function none($abilities, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->none($abilities, $arguments);
-        }
-        
-        /**
-         * Determine if the given ability should be granted for the current user.
-         *
-         * @param string $ability
-         * @param array|mixed $arguments
-         * @return \Illuminate\Auth\Access\Response 
-         * @throws \Illuminate\Auth\Access\AuthorizationException
-         * @static 
-         */ 
-        public static function authorize($ability, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->authorize($ability, $arguments);
-        }
-        
-        /**
-         * Get the raw result from the authorization callback.
-         *
-         * @param string $ability
-         * @param array|mixed $arguments
-         * @return mixed 
-         * @static 
-         */ 
-        public static function raw($ability, $arguments = [])
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->raw($ability, $arguments);
-        }
-        
-        /**
-         * Get a policy instance for a given class.
-         *
-         * @param object|string $class
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getPolicyFor($class)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->getPolicyFor($class);
-        }
-        
-        /**
-         * Specify a callback to be used to guess policy names.
-         *
-         * @param callable $callback
-         * @return \Illuminate\Auth\Access\Gate 
-         * @static 
-         */ 
-        public static function guessPolicyNamesUsing($callback)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->guessPolicyNamesUsing($callback);
-        }
-        
-        /**
-         * Build a policy class instance of the given type.
-         *
-         * @param object|string $class
-         * @return mixed 
-         * @throws \Illuminate\Contracts\Container\BindingResolutionException
-         * @static 
-         */ 
-        public static function resolvePolicy($class)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->resolvePolicy($class);
-        }
-        
-        /**
-         * Get a gate instance for the given user.
-         *
-         * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user
-         * @return static 
-         * @static 
-         */ 
-        public static function forUser($user)
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->forUser($user);
-        }
-        
-        /**
-         * Get all of the defined abilities.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function abilities()
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->abilities();
-        }
-        
-        /**
-         * Get all of the defined policies.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function policies()
-        {
-                        /** @var \Illuminate\Auth\Access\Gate $instance */
-                        return $instance->policies();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Hashing\HashManager
-     */ 
-    class Hash {
-        
-        /**
-         * Create an instance of the Bcrypt hash Driver.
-         *
-         * @return \Illuminate\Hashing\BcryptHasher 
-         * @static 
-         */ 
-        public static function createBcryptDriver()
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->createBcryptDriver();
-        }
-        
-        /**
-         * Create an instance of the Argon2i hash Driver.
-         *
-         * @return \Illuminate\Hashing\ArgonHasher 
-         * @static 
-         */ 
-        public static function createArgonDriver()
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->createArgonDriver();
-        }
-        
-        /**
-         * Create an instance of the Argon2id hash Driver.
-         *
-         * @return \Illuminate\Hashing\Argon2IdHasher 
-         * @static 
-         */ 
-        public static function createArgon2idDriver()
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->createArgon2idDriver();
-        }
-        
-        /**
-         * Get information about the given hashed value.
-         *
-         * @param string $hashedValue
-         * @return array 
-         * @static 
-         */ 
-        public static function info($hashedValue)
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->info($hashedValue);
-        }
-        
-        /**
-         * Hash the given value.
-         *
-         * @param string $value
-         * @param array $options
-         * @return string 
-         * @static 
-         */ 
-        public static function make($value, $options = [])
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->make($value, $options);
-        }
-        
-        /**
-         * Check the given plain value against a hash.
-         *
-         * @param string $value
-         * @param string $hashedValue
-         * @param array $options
-         * @return bool 
-         * @static 
-         */ 
-        public static function check($value, $hashedValue, $options = [])
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->check($value, $hashedValue, $options);
-        }
-        
-        /**
-         * Check if the given hash has been hashed using the given options.
-         *
-         * @param string $hashedValue
-         * @param array $options
-         * @return bool 
-         * @static 
-         */ 
-        public static function needsRehash($hashedValue, $options = [])
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->needsRehash($hashedValue, $options);
-        }
-        
-        /**
-         * Get the default driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Get a driver instance.
-         *
-         * @param string $driver
-         * @return mixed 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function driver($driver = null)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->driver($driver);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Hashing\HashManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Get all of the created "drivers".
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDrivers()
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Hashing\HashManager $instance */
-                        return $instance->getDrivers();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Translation\Translator
-     */ 
-    class Lang {
-        
-        /**
-         * Determine if a translation exists for a given locale.
-         *
-         * @param string $key
-         * @param string|null $locale
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasForLocale($key, $locale = null)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->hasForLocale($key, $locale);
-        }
-        
-        /**
-         * Determine if a translation exists.
-         *
-         * @param string $key
-         * @param string|null $locale
-         * @param bool $fallback
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($key, $locale = null, $fallback = true)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->has($key, $locale, $fallback);
-        }
-        
-        /**
-         * Get the translation for a given key.
-         *
-         * @param string $key
-         * @param array $replace
-         * @param string|null $locale
-         * @return string|array 
-         * @static 
-         */ 
-        public static function trans($key, $replace = [], $locale = null)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->trans($key, $replace, $locale);
-        }
-        
-        /**
-         * Get the translation for the given key.
-         *
-         * @param string $key
-         * @param array $replace
-         * @param string|null $locale
-         * @param bool $fallback
-         * @return string|array 
-         * @static 
-         */ 
-        public static function get($key, $replace = [], $locale = null, $fallback = true)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->get($key, $replace, $locale, $fallback);
-        }
-        
-        /**
-         * Get the translation for a given key from the JSON translation files.
-         *
-         * @param string $key
-         * @param array $replace
-         * @param string|null $locale
-         * @return string|array 
-         * @static 
-         */ 
-        public static function getFromJson($key, $replace = [], $locale = null)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->getFromJson($key, $replace, $locale);
-        }
-        
-        /**
-         * Get a translation according to an integer value.
-         *
-         * @param string $key
-         * @param int|array|\Countable $number
-         * @param array $replace
-         * @param string|null $locale
-         * @return string 
-         * @static 
-         */ 
-        public static function transChoice($key, $number, $replace = [], $locale = null)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->transChoice($key, $number, $replace, $locale);
-        }
-        
-        /**
-         * Get a translation according to an integer value.
-         *
-         * @param string $key
-         * @param int|array|\Countable $number
-         * @param array $replace
-         * @param string|null $locale
-         * @return string 
-         * @static 
-         */ 
-        public static function choice($key, $number, $replace = [], $locale = null)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->choice($key, $number, $replace, $locale);
-        }
-        
-        /**
-         * Add translation lines to the given locale.
-         *
-         * @param array $lines
-         * @param string $locale
-         * @param string $namespace
-         * @return void 
-         * @static 
-         */ 
-        public static function addLines($lines, $locale, $namespace = '*')
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->addLines($lines, $locale, $namespace);
-        }
-        
-        /**
-         * Load the specified language group.
-         *
-         * @param string $namespace
-         * @param string $group
-         * @param string $locale
-         * @return void 
-         * @static 
-         */ 
-        public static function load($namespace, $group, $locale)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->load($namespace, $group, $locale);
-        }
-        
-        /**
-         * Add a new namespace to the loader.
-         *
-         * @param string $namespace
-         * @param string $hint
-         * @return void 
-         * @static 
-         */ 
-        public static function addNamespace($namespace, $hint)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->addNamespace($namespace, $hint);
-        }
-        
-        /**
-         * Add a new JSON path to the loader.
-         *
-         * @param string $path
-         * @return void 
-         * @static 
-         */ 
-        public static function addJsonPath($path)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->addJsonPath($path);
-        }
-        
-        /**
-         * Parse a key into namespace, group, and item.
-         *
-         * @param string $key
-         * @return array 
-         * @static 
-         */ 
-        public static function parseKey($key)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->parseKey($key);
-        }
-        
-        /**
-         * Get the message selector instance.
-         *
-         * @return \Illuminate\Translation\MessageSelector 
-         * @static 
-         */ 
-        public static function getSelector()
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->getSelector();
-        }
-        
-        /**
-         * Set the message selector instance.
-         *
-         * @param \Illuminate\Translation\MessageSelector $selector
-         * @return void 
-         * @static 
-         */ 
-        public static function setSelector($selector)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->setSelector($selector);
-        }
-        
-        /**
-         * Get the language line loader implementation.
-         *
-         * @return \Illuminate\Contracts\Translation\Loader 
-         * @static 
-         */ 
-        public static function getLoader()
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->getLoader();
-        }
-        
-        /**
-         * Get the default locale being used.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function locale()
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->locale();
-        }
-        
-        /**
-         * Get the default locale being used.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getLocale()
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->getLocale();
-        }
-        
-        /**
-         * Set the default locale.
-         *
-         * @param string $locale
-         * @return void 
-         * @static 
-         */ 
-        public static function setLocale($locale)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->setLocale($locale);
-        }
-        
-        /**
-         * Get the fallback locale being used.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getFallback()
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        return $instance->getFallback();
-        }
-        
-        /**
-         * Set the fallback locale being used.
-         *
-         * @param string $fallback
-         * @return void 
-         * @static 
-         */ 
-        public static function setFallback($fallback)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->setFallback($fallback);
-        }
-        
-        /**
-         * Set the loaded translation groups.
-         *
-         * @param array $loaded
-         * @return void 
-         * @static 
-         */ 
-        public static function setLoaded($loaded)
-        {
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->setLoaded($loaded);
-        }
-        
-        /**
-         * Set the parsed value of a key.
-         *
-         * @param string $key
-         * @param array $parsed
-         * @return void 
-         * @static 
-         */ 
-        public static function setParsedKey($key, $parsed)
-        {
-            //Method inherited from \Illuminate\Support\NamespacedItemResolver            
-                        /** @var \Illuminate\Translation\Translator $instance */
-                        $instance->setParsedKey($key, $parsed);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Translation\Translator::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Translation\Translator::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Translation\Translator::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Log\Logger
-     */ 
-    class Log {
-        
-        /**
-         * Adds a log record at the DEBUG level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function debug($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addDebug($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the INFO level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function info($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addInfo($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the NOTICE level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function notice($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addNotice($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the WARNING level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function warning($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addWarning($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the ERROR level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function error($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addError($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the CRITICAL level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function critical($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addCritical($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the ALERT level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function alert($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addAlert($message, $context);
-        }
-        
-        /**
-         * Adds a log record at the EMERGENCY level.
-         *
-         * @param string $message The log message
-         * @param array $context The log context
-         * @return bool Whether the record has been processed
-         * @static 
-         */ 
-        public static function emergency($message, $context = [])
-        {
-                        /** @var \Monolog\Logger $instance */
-                        return $instance->addEmergency($message, $context);
-        }
-        
-        /**
-         * Create a new, on-demand aggregate logger instance.
-         *
-         * @param array $channels
-         * @param string|null $channel
-         * @return \Psr\Log\LoggerInterface 
-         * @static 
-         */ 
-        public static function stack($channels, $channel = null)
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        return $instance->stack($channels, $channel);
-        }
-        
-        /**
-         * Get a log channel instance.
-         *
-         * @param string|null $channel
-         * @return mixed 
-         * @static 
-         */ 
-        public static function channel($channel = null)
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        return $instance->channel($channel);
-        }
-        
-        /**
-         * Get a log driver instance.
-         *
-         * @param string|null $driver
-         * @return mixed 
-         * @static 
-         */ 
-        public static function driver($driver = null)
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        return $instance->driver($driver);
-        }
-        
-        /**
-         * Get the default log driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default log driver name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Log\LogManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Logs with an arbitrary level.
-         *
-         * @param mixed $level
-         * @param string $message
-         * @param array $context
-         * @return void 
-         * @static 
-         */ 
-        public static function log($level, $message, $context = [])
-        {
-                        /** @var \Illuminate\Log\LogManager $instance */
-                        $instance->log($level, $message, $context);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Mail\Mailer
-     * @see \Illuminate\Support\Testing\Fakes\MailFake
-     */ 
-    class Mail {
-        
-        /**
-         * Set the global from address and name.
-         *
-         * @param string $address
-         * @param string|null $name
-         * @return void 
-         * @static 
-         */ 
-        public static function alwaysFrom($address, $name = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->alwaysFrom($address, $name);
-        }
-        
-        /**
-         * Set the global reply-to address and name.
-         *
-         * @param string $address
-         * @param string|null $name
-         * @return void 
-         * @static 
-         */ 
-        public static function alwaysReplyTo($address, $name = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->alwaysReplyTo($address, $name);
-        }
-        
-        /**
-         * Set the global to address and name.
-         *
-         * @param string $address
-         * @param string|null $name
-         * @return void 
-         * @static 
-         */ 
-        public static function alwaysTo($address, $name = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->alwaysTo($address, $name);
-        }
-        
-        /**
-         * Begin the process of mailing a mailable class instance.
-         *
-         * @param mixed $users
-         * @return \Illuminate\Mail\PendingMail 
-         * @static 
-         */ 
-        public static function to($users)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->to($users);
-        }
-        
-        /**
-         * Begin the process of mailing a mailable class instance.
-         *
-         * @param mixed $users
-         * @return \Illuminate\Mail\PendingMail 
-         * @static 
-         */ 
-        public static function cc($users)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->cc($users);
-        }
-        
-        /**
-         * Begin the process of mailing a mailable class instance.
-         *
-         * @param mixed $users
-         * @return \Illuminate\Mail\PendingMail 
-         * @static 
-         */ 
-        public static function bcc($users)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->bcc($users);
-        }
-        
-        /**
-         * Send a new message with only an HTML part.
-         *
-         * @param string $html
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function html($html, $callback)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->html($html, $callback);
-        }
-        
-        /**
-         * Send a new message with only a raw text part.
-         *
-         * @param string $text
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function raw($text, $callback)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->raw($text, $callback);
-        }
-        
-        /**
-         * Send a new message with only a plain part.
-         *
-         * @param string $view
-         * @param array $data
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function plain($view, $data, $callback)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->plain($view, $data, $callback);
-        }
-        
-        /**
-         * Render the given message as a view.
-         *
-         * @param string|array $view
-         * @param array $data
-         * @return string 
-         * @static 
-         */ 
-        public static function render($view, $data = [])
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->render($view, $data);
-        }
-        
-        /**
-         * Send a new message using a view.
-         *
-         * @param string|array|\Illuminate\Contracts\Mail\Mailable $view
-         * @param array $data
-         * @param \Closure|string|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function send($view, $data = [], $callback = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->send($view, $data, $callback);
-        }
-        
-        /**
-         * Queue a new e-mail message for sending.
-         *
-         * @param \Illuminate\Contracts\Mail\Mailable $view
-         * @param string|null $queue
-         * @return mixed 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function queue($view, $queue = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->queue($view, $queue);
-        }
-        
-        /**
-         * Queue a new e-mail message for sending on the given queue.
-         *
-         * @param string $queue
-         * @param \Illuminate\Contracts\Mail\Mailable $view
-         * @return mixed 
-         * @static 
-         */ 
-        public static function onQueue($queue, $view)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->onQueue($queue, $view);
-        }
-        
-        /**
-         * Queue a new e-mail message for sending on the given queue.
-         * 
-         * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue".
-         *
-         * @param string $queue
-         * @param \Illuminate\Contracts\Mail\Mailable $view
-         * @return mixed 
-         * @static 
-         */ 
-        public static function queueOn($queue, $view)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->queueOn($queue, $view);
-        }
-        
-        /**
-         * Queue a new e-mail message for sending after (n) seconds.
-         *
-         * @param \DateTimeInterface|\DateInterval|int $delay
-         * @param \Illuminate\Contracts\Mail\Mailable $view
-         * @param string|null $queue
-         * @return mixed 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function later($delay, $view, $queue = null)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->later($delay, $view, $queue);
-        }
-        
-        /**
-         * Queue a new e-mail message for sending after (n) seconds on the given queue.
-         *
-         * @param string $queue
-         * @param \DateTimeInterface|\DateInterval|int $delay
-         * @param \Illuminate\Contracts\Mail\Mailable $view
-         * @return mixed 
-         * @static 
-         */ 
-        public static function laterOn($queue, $delay, $view)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->laterOn($queue, $delay, $view);
-        }
-        
-        /**
-         * Get the array of failed recipients.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function failures()
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->failures();
-        }
-        
-        /**
-         * Get the Swift Mailer instance.
-         *
-         * @return \Swift_Mailer 
-         * @static 
-         */ 
-        public static function getSwiftMailer()
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->getSwiftMailer();
-        }
-        
-        /**
-         * Get the view factory instance.
-         *
-         * @return \Illuminate\Contracts\View\Factory 
-         * @static 
-         */ 
-        public static function getViewFactory()
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->getViewFactory();
-        }
-        
-        /**
-         * Set the Swift Mailer instance.
-         *
-         * @param \Swift_Mailer $swift
-         * @return void 
-         * @static 
-         */ 
-        public static function setSwiftMailer($swift)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        $instance->setSwiftMailer($swift);
-        }
-        
-        /**
-         * Set the queue manager instance.
-         *
-         * @param \Illuminate\Contracts\Queue\Factory $queue
-         * @return \Illuminate\Mail\Mailer 
-         * @static 
-         */ 
-        public static function setQueue($queue)
-        {
-                        /** @var \Illuminate\Mail\Mailer $instance */
-                        return $instance->setQueue($queue);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Mail\Mailer::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Mail\Mailer::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Mail\Mailer::hasMacro($name);
-        }
-        
-        /**
-         * Assert if a mailable was sent based on a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|int|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertSent($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertSent($mailable, $callback);
-        }
-        
-        /**
-         * Determine if a mailable was not sent based on a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotSent($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertNotSent($mailable, $callback);
-        }
-        
-        /**
-         * Assert that no mailables were sent.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNothingSent()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertNothingSent();
-        }
-        
-        /**
-         * Assert if a mailable was queued based on a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|int|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertQueued($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertQueued($mailable, $callback);
-        }
-        
-        /**
-         * Determine if a mailable was not queued based on a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotQueued($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertNotQueued($mailable, $callback);
-        }
-        
-        /**
-         * Assert that no mailables were queued.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNothingQueued()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        $instance->assertNothingQueued();
-        }
-        
-        /**
-         * Get all of the mailables matching a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function sent($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        return $instance->sent($mailable, $callback);
-        }
-        
-        /**
-         * Determine if the given mailable has been sent.
-         *
-         * @param string $mailable
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasSent($mailable)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        return $instance->hasSent($mailable);
-        }
-        
-        /**
-         * Get all of the queued mailables matching a truth-test callback.
-         *
-         * @param string $mailable
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function queued($mailable, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        return $instance->queued($mailable, $callback);
-        }
-        
-        /**
-         * Determine if the given mailable has been queued.
-         *
-         * @param string $mailable
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasQueued($mailable)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
-                        return $instance->hasQueued($mailable);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Notifications\ChannelManager
-     */ 
-    class Notification {
-        
-        /**
-         * Send the given notification to the given notifiable entities.
-         *
-         * @param \Illuminate\Support\Collection|array|mixed $notifiables
-         * @param mixed $notification
-         * @return void 
-         * @static 
-         */ 
-        public static function send($notifiables, $notification)
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        $instance->send($notifiables, $notification);
-        }
-        
-        /**
-         * Send the given notification immediately.
-         *
-         * @param \Illuminate\Support\Collection|array|mixed $notifiables
-         * @param mixed $notification
-         * @param array|null $channels
-         * @return void 
-         * @static 
-         */ 
-        public static function sendNow($notifiables, $notification, $channels = null)
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        $instance->sendNow($notifiables, $notification, $channels);
-        }
-        
-        /**
-         * Get a channel instance.
-         *
-         * @param string|null $name
-         * @return mixed 
-         * @static 
-         */ 
-        public static function channel($name = null)
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->channel($name);
-        }
-        
-        /**
-         * Get the default channel driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Get the default channel driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function deliversVia()
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->deliversVia();
-        }
-        
-        /**
-         * Set the default channel driver name.
-         *
-         * @param string $channel
-         * @return void 
-         * @static 
-         */ 
-        public static function deliverVia($channel)
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        $instance->deliverVia($channel);
-        }
-        
-        /**
-         * Set the locale of notifications.
-         *
-         * @param string $locale
-         * @return \Illuminate\Notifications\ChannelManager 
-         * @static 
-         */ 
-        public static function locale($locale)
-        {
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->locale($locale);
-        }
-        
-        /**
-         * Get a driver instance.
-         *
-         * @param string $driver
-         * @return mixed 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function driver($driver = null)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->driver($driver);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Notifications\ChannelManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Get all of the created "drivers".
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDrivers()
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Notifications\ChannelManager $instance */
-                        return $instance->getDrivers();
-        }
-        
-        /**
-         * Assert if a notification was sent based on a truth-test callback.
-         *
-         * @param mixed $notifiable
-         * @param string $notification
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertSentTo($notifiable, $notification, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        $instance->assertSentTo($notifiable, $notification, $callback);
-        }
-        
-        /**
-         * Assert if a notification was sent a number of times.
-         *
-         * @param mixed $notifiable
-         * @param string $notification
-         * @param int $times
-         * @return void 
-         * @static 
-         */ 
-        public static function assertSentToTimes($notifiable, $notification, $times = 1)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        $instance->assertSentToTimes($notifiable, $notification, $times);
-        }
-        
-        /**
-         * Determine if a notification was sent based on a truth-test callback.
-         *
-         * @param mixed $notifiable
-         * @param string $notification
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotSentTo($notifiable, $notification, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        $instance->assertNotSentTo($notifiable, $notification, $callback);
-        }
-        
-        /**
-         * Assert that no notifications were sent.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNothingSent()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        $instance->assertNothingSent();
-        }
-        
-        /**
-         * Assert the total amount of times a notification was sent.
-         *
-         * @param int $expectedCount
-         * @param string $notification
-         * @return void 
-         * @static 
-         */ 
-        public static function assertTimesSent($expectedCount, $notification)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        $instance->assertTimesSent($expectedCount, $notification);
-        }
-        
-        /**
-         * Get all of the notifications matching a truth-test callback.
-         *
-         * @param mixed $notifiable
-         * @param string $notification
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function sent($notifiable, $notification, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        return $instance->sent($notifiable, $notification, $callback);
-        }
-        
-        /**
-         * Determine if there are more notifications left to inspect.
-         *
-         * @param mixed $notifiable
-         * @param string $notification
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasSent($notifiable, $notification)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
-                        return $instance->hasSent($notifiable, $notification);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @method static string sendResetLink(array $credentials)
-     * @method static mixed reset(array $credentials, \Closure $callback)
-     * @method static void validator(\Closure $callback)
-     * @method static bool validateNewPassword(array $credentials)
-     * @see \Illuminate\Auth\Passwords\PasswordBroker
-     */ 
-    class Password {
-        
-        /**
-         * Attempt to get the broker from the local cache.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Contracts\Auth\PasswordBroker 
-         * @static 
-         */ 
-        public static function broker($name = null)
-        {
-                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
-                        return $instance->broker($name);
-        }
-        
-        /**
-         * Get the default password broker name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default password broker name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Queue\QueueManager
-     * @see \Illuminate\Queue\Queue
-     */ 
-    class Queue {
-        
-        /**
-         * Register an event listener for the before job event.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function before($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->before($callback);
-        }
-        
-        /**
-         * Register an event listener for the after job event.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function after($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->after($callback);
-        }
-        
-        /**
-         * Register an event listener for the exception occurred job event.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function exceptionOccurred($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->exceptionOccurred($callback);
-        }
-        
-        /**
-         * Register an event listener for the daemon queue loop.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function looping($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->looping($callback);
-        }
-        
-        /**
-         * Register an event listener for the failed job event.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function failing($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->failing($callback);
-        }
-        
-        /**
-         * Register an event listener for the daemon queue stopping.
-         *
-         * @param mixed $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function stopping($callback)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->stopping($callback);
-        }
-        
-        /**
-         * Determine if the driver is connected.
-         *
-         * @param string|null $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function connected($name = null)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        return $instance->connected($name);
-        }
-        
-        /**
-         * Resolve a queue connection instance.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Contracts\Queue\Queue 
-         * @static 
-         */ 
-        public static function connection($name = null)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        return $instance->connection($name);
-        }
-        
-        /**
-         * Add a queue connection resolver.
-         *
-         * @param string $driver
-         * @param \Closure $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function extend($driver, $resolver)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->extend($driver, $resolver);
-        }
-        
-        /**
-         * Add a queue connection resolver.
-         *
-         * @param string $driver
-         * @param \Closure $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function addConnector($driver, $resolver)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->addConnector($driver, $resolver);
-        }
-        
-        /**
-         * Get the name of the default queue connection.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the name of the default queue connection.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Get the full name for the given connection.
-         *
-         * @param string|null $connection
-         * @return string 
-         * @static 
-         */ 
-        public static function getName($connection = null)
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        return $instance->getName($connection);
-        }
-        
-        /**
-         * Determine if the application is in maintenance mode.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDownForMaintenance()
-        {
-                        /** @var \Illuminate\Queue\QueueManager $instance */
-                        return $instance->isDownForMaintenance();
-        }
-        
-        /**
-         * Assert if a job was pushed based on a truth-test callback.
-         *
-         * @param string $job
-         * @param callable|int|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertPushed($job, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        $instance->assertPushed($job, $callback);
-        }
-        
-        /**
-         * Assert if a job was pushed based on a truth-test callback.
-         *
-         * @param string $queue
-         * @param string $job
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertPushedOn($queue, $job, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        $instance->assertPushedOn($queue, $job, $callback);
-        }
-        
-        /**
-         * Assert if a job was pushed with chained jobs based on a truth-test callback.
-         *
-         * @param string $job
-         * @param array $expectedChain
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        $instance->assertPushedWithChain($job, $expectedChain, $callback);
-        }
-        
-        /**
-         * Determine if a job was pushed based on a truth-test callback.
-         *
-         * @param string $job
-         * @param callable|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNotPushed($job, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        $instance->assertNotPushed($job, $callback);
-        }
-        
-        /**
-         * Assert that no jobs were pushed.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function assertNothingPushed()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        $instance->assertNothingPushed();
-        }
-        
-        /**
-         * Get all of the jobs matching a truth-test callback.
-         *
-         * @param string $job
-         * @param callable|null $callback
-         * @return \Illuminate\Support\Collection 
-         * @static 
-         */ 
-        public static function pushed($job, $callback = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->pushed($job, $callback);
-        }
-        
-        /**
-         * Determine if there are any stored jobs for a given class.
-         *
-         * @param string $job
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasPushed($job)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->hasPushed($job);
-        }
-        
-        /**
-         * Get the size of the queue.
-         *
-         * @param string|null $queue
-         * @return int 
-         * @static 
-         */ 
-        public static function size($queue = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->size($queue);
-        }
-        
-        /**
-         * Push a new job onto the queue.
-         *
-         * @param string $job
-         * @param mixed $data
-         * @param string|null $queue
-         * @return mixed 
-         * @static 
-         */ 
-        public static function push($job, $data = '', $queue = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->push($job, $data, $queue);
-        }
-        
-        /**
-         * Push a raw payload onto the queue.
-         *
-         * @param string $payload
-         * @param string|null $queue
-         * @param array $options
-         * @return mixed 
-         * @static 
-         */ 
-        public static function pushRaw($payload, $queue = null, $options = [])
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->pushRaw($payload, $queue, $options);
-        }
-        
-        /**
-         * Push a new job onto the queue after a delay.
-         *
-         * @param \DateTimeInterface|\DateInterval|int $delay
-         * @param string $job
-         * @param mixed $data
-         * @param string|null $queue
-         * @return mixed 
-         * @static 
-         */ 
-        public static function later($delay, $job, $data = '', $queue = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->later($delay, $job, $data, $queue);
-        }
-        
-        /**
-         * Push a new job onto the queue.
-         *
-         * @param string $queue
-         * @param string $job
-         * @param mixed $data
-         * @return mixed 
-         * @static 
-         */ 
-        public static function pushOn($queue, $job, $data = '')
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->pushOn($queue, $job, $data);
-        }
-        
-        /**
-         * Push a new job onto the queue after a delay.
-         *
-         * @param string $queue
-         * @param \DateTimeInterface|\DateInterval|int $delay
-         * @param string $job
-         * @param mixed $data
-         * @return mixed 
-         * @static 
-         */ 
-        public static function laterOn($queue, $delay, $job, $data = '')
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->laterOn($queue, $delay, $job, $data);
-        }
-        
-        /**
-         * Pop the next job off of the queue.
-         *
-         * @param string|null $queue
-         * @return \Illuminate\Contracts\Queue\Job|null 
-         * @static 
-         */ 
-        public static function pop($queue = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->pop($queue);
-        }
-        
-        /**
-         * Push an array of jobs onto the queue.
-         *
-         * @param array $jobs
-         * @param mixed $data
-         * @param string|null $queue
-         * @return mixed 
-         * @static 
-         */ 
-        public static function bulk($jobs, $data = '', $queue = null)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->bulk($jobs, $data, $queue);
-        }
-        
-        /**
-         * Get the jobs that have been pushed.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function pushedJobs()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->pushedJobs();
-        }
-        
-        /**
-         * Get the connection name for the queue.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getConnectionName()
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->getConnectionName();
-        }
-        
-        /**
-         * Set the connection name for the queue.
-         *
-         * @param string $name
-         * @return \Illuminate\Support\Testing\Fakes\QueueFake 
-         * @static 
-         */ 
-        public static function setConnectionName($name)
-        {
-                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
-                        return $instance->setConnectionName($name);
-        }
-        
-        /**
-         * Get the retry delay for an object-based queue handler.
-         *
-         * @param mixed $job
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getJobRetryDelay($job)
-        {
-            //Method inherited from \Illuminate\Queue\Queue            
-                        /** @var \Illuminate\Queue\SyncQueue $instance */
-                        return $instance->getJobRetryDelay($job);
-        }
-        
-        /**
-         * Get the expiration timestamp for an object-based queue handler.
-         *
-         * @param mixed $job
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getJobExpiration($job)
-        {
-            //Method inherited from \Illuminate\Queue\Queue            
-                        /** @var \Illuminate\Queue\SyncQueue $instance */
-                        return $instance->getJobExpiration($job);
-        }
-        
-        /**
-         * Register a callback to be executed when creating job payloads.
-         *
-         * @param callable $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function createPayloadUsing($callback)
-        {
-            //Method inherited from \Illuminate\Queue\Queue            
-                        \Illuminate\Queue\SyncQueue::createPayloadUsing($callback);
-        }
-        
-        /**
-         * Set the IoC container instance.
-         *
-         * @param \Illuminate\Container\Container $container
-         * @return void 
-         * @static 
-         */ 
-        public static function setContainer($container)
-        {
-            //Method inherited from \Illuminate\Queue\Queue            
-                        /** @var \Illuminate\Queue\SyncQueue $instance */
-                        $instance->setContainer($container);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Routing\Redirector
-     */ 
-    class Redirect {
-        
-        /**
-         * Create a new redirect response to the "home" route.
-         *
-         * @param int $status
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function home($status = 302)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->home($status);
-        }
-        
-        /**
-         * Create a new redirect response to the previous location.
-         *
-         * @param int $status
-         * @param array $headers
-         * @param mixed $fallback
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function back($status = 302, $headers = [], $fallback = false)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->back($status, $headers, $fallback);
-        }
-        
-        /**
-         * Create a new redirect response to the current URI.
-         *
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function refresh($status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->refresh($status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response, while putting the current URL in the session.
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function guest($path, $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->guest($path, $status, $headers, $secure);
-        }
-        
-        /**
-         * Create a new redirect response to the previously intended location.
-         *
-         * @param string $default
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function intended($default = '/', $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->intended($default, $status, $headers, $secure);
-        }
-        
-        /**
-         * Set the intended url.
-         *
-         * @param string $url
-         * @return void 
-         * @static 
-         */ 
-        public static function setIntendedUrl($url)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        $instance->setIntendedUrl($url);
-        }
-        
-        /**
-         * Create a new redirect response to the given path.
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function to($path, $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->to($path, $status, $headers, $secure);
-        }
-        
-        /**
-         * Create a new redirect response to an external URL (no validation).
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function away($path, $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->away($path, $status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response to the given HTTPS path.
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function secure($path, $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->secure($path, $status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response to a named route.
-         *
-         * @param string $route
-         * @param mixed $parameters
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function route($route, $parameters = [], $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->route($route, $parameters, $status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response to a controller action.
-         *
-         * @param string|array $action
-         * @param mixed $parameters
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function action($action, $parameters = [], $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->action($action, $parameters, $status, $headers);
-        }
-        
-        /**
-         * Get the URL generator instance.
-         *
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function getUrlGenerator()
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        return $instance->getUrlGenerator();
-        }
-        
-        /**
-         * Set the active session store.
-         *
-         * @param \Illuminate\Session\Store $session
-         * @return void 
-         * @static 
-         */ 
-        public static function setSession($session)
-        {
-                        /** @var \Illuminate\Routing\Redirector $instance */
-                        $instance->setSession($session);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Routing\Redirector::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Routing\Redirector::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Routing\Redirector::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Redis\RedisManager
-     * @see \Illuminate\Contracts\Redis\Factory
-     */ 
-    class Redis {
-        
-        /**
-         * Get a Redis connection by name.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Redis\Connections\Connection 
-         * @static 
-         */ 
-        public static function connection($name = null)
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        return $instance->connection($name);
-        }
-        
-        /**
-         * Resolve the given connection by name.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Redis\Connections\Connection 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function resolve($name = null)
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        return $instance->resolve($name);
-        }
-        
-        /**
-         * Return all of the created connections.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function connections()
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        return $instance->connections();
-        }
-        
-        /**
-         * Enable the firing of Redis command events.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function enableEvents()
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        $instance->enableEvents();
-        }
-        
-        /**
-         * Disable the firing of Redis command events.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function disableEvents()
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        $instance->disableEvents();
-        }
-        
-        /**
-         * Set the default driver.
-         *
-         * @param string $driver
-         * @return void 
-         * @static 
-         */ 
-        public static function setDriver($driver)
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        $instance->setDriver($driver);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Redis\RedisManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Redis\RedisManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Http\Request
-     */ 
-    class Request {
-        
-        /**
-         * Create a new Illuminate HTTP request from server variables.
-         *
-         * @return static 
-         * @static 
-         */ 
-        public static function capture()
-        {
-                        return \Illuminate\Http\Request::capture();
-        }
-        
-        /**
-         * Return the Request instance.
-         *
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function instance()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->instance();
-        }
-        
-        /**
-         * Get the request method.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function method()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->method();
-        }
-        
-        /**
-         * Get the root URL for the application.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function root()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->root();
-        }
-        
-        /**
-         * Get the URL (no query string) for the request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function url()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->url();
-        }
-        
-        /**
-         * Get the full URL for the request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function fullUrl()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->fullUrl();
-        }
-        
-        /**
-         * Get the full URL for the request with the added query string parameters.
-         *
-         * @param array $query
-         * @return string 
-         * @static 
-         */ 
-        public static function fullUrlWithQuery($query)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->fullUrlWithQuery($query);
-        }
-        
-        /**
-         * Get the current path info for the request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function path()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->path();
-        }
-        
-        /**
-         * Get the current decoded path info for the request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function decodedPath()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->decodedPath();
-        }
-        
-        /**
-         * Get a segment from the URI (1 based index).
-         *
-         * @param int $index
-         * @param string|null $default
-         * @return string|null 
-         * @static 
-         */ 
-        public static function segment($index, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->segment($index, $default);
-        }
-        
-        /**
-         * Get all of the segments for the request path.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function segments()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->segments();
-        }
-        
-        /**
-         * Determine if the current request URI matches a pattern.
-         *
-         * @param mixed $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function is(...$patterns)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->is(...$patterns);
-        }
-        
-        /**
-         * Determine if the route name matches a given pattern.
-         *
-         * @param mixed $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function routeIs(...$patterns)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->routeIs(...$patterns);
-        }
-        
-        /**
-         * Determine if the current request URL and query string matches a pattern.
-         *
-         * @param mixed $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function fullUrlIs(...$patterns)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->fullUrlIs(...$patterns);
-        }
-        
-        /**
-         * Determine if the request is the result of an AJAX call.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function ajax()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->ajax();
-        }
-        
-        /**
-         * Determine if the request is the result of an PJAX call.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function pjax()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->pjax();
-        }
-        
-        /**
-         * Determine if the request is the result of an prefetch call.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function prefetch()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->prefetch();
-        }
-        
-        /**
-         * Determine if the request is over HTTPS.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function secure()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->secure();
-        }
-        
-        /**
-         * Get the client IP address.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function ip()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->ip();
-        }
-        
-        /**
-         * Get the client IP addresses.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function ips()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->ips();
-        }
-        
-        /**
-         * Get the client user agent.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function userAgent()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->userAgent();
-        }
-        
-        /**
-         * Merge new input into the current request's input array.
-         *
-         * @param array $input
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function merge($input)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->merge($input);
-        }
-        
-        /**
-         * Replace the input for the current request.
-         *
-         * @param array $input
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function replace($input)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->replace($input);
-        }
-        
-        /**
-         * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.
-         * 
-         * Instead, you may use the "input" method.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function get($key, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->get($key, $default);
-        }
-        
-        /**
-         * Get the JSON payload for the request.
-         *
-         * @param string|null $key
-         * @param mixed $default
-         * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed 
-         * @static 
-         */ 
-        public static function json($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->json($key, $default);
-        }
-        
-        /**
-         * Create a new request instance from the given Laravel request.
-         *
-         * @param \Illuminate\Http\Request $from
-         * @param \Illuminate\Http\Request|null $to
-         * @return static 
-         * @static 
-         */ 
-        public static function createFrom($from, $to = null)
-        {
-                        return \Illuminate\Http\Request::createFrom($from, $to);
-        }
-        
-        /**
-         * Create an Illuminate request from a Symfony instance.
-         *
-         * @param \Symfony\Component\HttpFoundation\Request $request
-         * @return static 
-         * @static 
-         */ 
-        public static function createFromBase($request)
-        {
-                        return \Illuminate\Http\Request::createFromBase($request);
-        }
-        
-        /**
-         * Clones a request and overrides some of its parameters.
-         *
-         * @param array $query The GET parameters
-         * @param array $request The POST parameters
-         * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-         * @param array $cookies The COOKIE parameters
-         * @param array $files The FILES parameters
-         * @param array $server The SERVER parameters
-         * @return static 
-         * @static 
-         */ 
-        public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);
-        }
-        
-        /**
-         * Get the session associated with the request.
-         *
-         * @return \Illuminate\Session\Store 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function session()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->session();
-        }
-        
-        /**
-         * Get the session associated with the request.
-         *
-         * @return \Illuminate\Session\Store|null 
-         * @static 
-         */ 
-        public static function getSession()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getSession();
-        }
-        
-        /**
-         * Set the session instance on the request.
-         *
-         * @param \Illuminate\Contracts\Session\Session $session
-         * @return void 
-         * @static 
-         */ 
-        public static function setLaravelSession($session)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->setLaravelSession($session);
-        }
-        
-        /**
-         * Get the user making the request.
-         *
-         * @param string|null $guard
-         * @return mixed 
-         * @static 
-         */ 
-        public static function user($guard = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->user($guard);
-        }
-        
-        /**
-         * Get the route handling the request.
-         *
-         * @param string|null $param
-         * @param mixed $default
-         * @return \Illuminate\Routing\Route|object|string 
-         * @static 
-         */ 
-        public static function route($param = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->route($param, $default);
-        }
-        
-        /**
-         * Get a unique fingerprint for the request / route / IP address.
-         *
-         * @return string 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function fingerprint()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->fingerprint();
-        }
-        
-        /**
-         * Set the JSON payload for the request.
-         *
-         * @param \Symfony\Component\HttpFoundation\ParameterBag $json
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function setJson($json)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setJson($json);
-        }
-        
-        /**
-         * Get the user resolver callback.
-         *
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function getUserResolver()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getUserResolver();
-        }
-        
-        /**
-         * Set the user resolver callback.
-         *
-         * @param \Closure $callback
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function setUserResolver($callback)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setUserResolver($callback);
-        }
-        
-        /**
-         * Get the route resolver callback.
-         *
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function getRouteResolver()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getRouteResolver();
-        }
-        
-        /**
-         * Set the route resolver callback.
-         *
-         * @param \Closure $callback
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function setRouteResolver($callback)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setRouteResolver($callback);
-        }
-        
-        /**
-         * Get all of the input and files for the request.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function toArray()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->toArray();
-        }
-        
-        /**
-         * Determine if the given offset exists.
-         *
-         * @param string $offset
-         * @return bool 
-         * @static 
-         */ 
-        public static function offsetExists($offset)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->offsetExists($offset);
-        }
-        
-        /**
-         * Get the value at the given offset.
-         *
-         * @param string $offset
-         * @return mixed 
-         * @static 
-         */ 
-        public static function offsetGet($offset)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->offsetGet($offset);
-        }
-        
-        /**
-         * Set the value at the given offset.
-         *
-         * @param string $offset
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetSet($offset, $value)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->offsetSet($offset, $value);
-        }
-        
-        /**
-         * Remove the value at the given offset.
-         *
-         * @param string $offset
-         * @return void 
-         * @static 
-         */ 
-        public static function offsetUnset($offset)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->offsetUnset($offset);
-        }
-        
-        /**
-         * Sets the parameters for this request.
-         * 
-         * This method also re-initializes all properties.
-         *
-         * @param array $query The GET parameters
-         * @param array $request The POST parameters
-         * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-         * @param array $cookies The COOKIE parameters
-         * @param array $files The FILES parameters
-         * @param array $server The SERVER parameters
-         * @param string|resource|null $content The raw body data
-         * @static 
-         */ 
-        public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
-        }
-        
-        /**
-         * Creates a new request with values from PHP's super globals.
-         *
-         * @return static 
-         * @static 
-         */ 
-        public static function createFromGlobals()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::createFromGlobals();
-        }
-        
-        /**
-         * Creates a Request based on a given URI and configuration.
-         * 
-         * The information contained in the URI always take precedence
-         * over the other information (server and parameters).
-         *
-         * @param string $uri The URI
-         * @param string $method The HTTP method
-         * @param array $parameters The query (GET) or request (POST) parameters
-         * @param array $cookies The request cookies ($_COOKIE)
-         * @param array $files The request files ($_FILES)
-         * @param array $server The server parameters ($_SERVER)
-         * @param string|resource|null $content The raw body data
-         * @return static 
-         * @static 
-         */ 
-        public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);
-        }
-        
-        /**
-         * Sets a callable able to create a Request instance.
-         * 
-         * This is mainly useful when you need to override the Request class
-         * to keep BC with an existing system. It should not be used for any
-         * other purpose.
-         *
-         * @param callable|null $callable A PHP callable
-         * @static 
-         */ 
-        public static function setFactory($callable)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::setFactory($callable);
-        }
-        
-        /**
-         * Overrides the PHP global variables according to this request instance.
-         * 
-         * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
-         * $_FILES is never overridden, see rfc1867
-         *
-         * @static 
-         */ 
-        public static function overrideGlobals()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->overrideGlobals();
-        }
-        
-        /**
-         * Sets a list of trusted proxies.
-         * 
-         * You should only list the reverse proxies that you manage directly.
-         *
-         * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
-         * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
-         * @throws \InvalidArgumentException When $trustedHeaderSet is invalid
-         * @static 
-         */ 
-        public static function setTrustedProxies($proxies, $trustedHeaderSet)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet);
-        }
-        
-        /**
-         * Gets the list of trusted proxies.
-         *
-         * @return array An array of trusted proxies
-         * @static 
-         */ 
-        public static function getTrustedProxies()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::getTrustedProxies();
-        }
-        
-        /**
-         * Gets the set of trusted headers from trusted proxies.
-         *
-         * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies
-         * @static 
-         */ 
-        public static function getTrustedHeaderSet()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::getTrustedHeaderSet();
-        }
-        
-        /**
-         * Sets a list of trusted host patterns.
-         * 
-         * You should only list the hosts you manage using regexs.
-         *
-         * @param array $hostPatterns A list of trusted host patterns
-         * @static 
-         */ 
-        public static function setTrustedHosts($hostPatterns)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::setTrustedHosts($hostPatterns);
-        }
-        
-        /**
-         * Gets the list of trusted host patterns.
-         *
-         * @return array An array of trusted host patterns
-         * @static 
-         */ 
-        public static function getTrustedHosts()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::getTrustedHosts();
-        }
-        
-        /**
-         * Normalizes a query string.
-         * 
-         * It builds a normalized query string, where keys/value pairs are alphabetized,
-         * have consistent escaping and unneeded delimiters are removed.
-         *
-         * @param string $qs Query string
-         * @return string A normalized query string for the Request
-         * @static 
-         */ 
-        public static function normalizeQueryString($qs)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::normalizeQueryString($qs);
-        }
-        
-        /**
-         * Enables support for the _method request parameter to determine the intended HTTP method.
-         * 
-         * Be warned that enabling this feature might lead to CSRF issues in your code.
-         * Check that you are using CSRF tokens when required.
-         * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered
-         * and used to send a "PUT" or "DELETE" request via the _method request parameter.
-         * If these methods are not protected against CSRF, this presents a possible vulnerability.
-         * 
-         * The HTTP method can only be overridden when the real HTTP method is POST.
-         *
-         * @static 
-         */ 
-        public static function enableHttpMethodParameterOverride()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::enableHttpMethodParameterOverride();
-        }
-        
-        /**
-         * Checks whether support for the _method request parameter is enabled.
-         *
-         * @return bool True when the _method request parameter is enabled, false otherwise
-         * @static 
-         */ 
-        public static function getHttpMethodParameterOverride()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::getHttpMethodParameterOverride();
-        }
-        
-        /**
-         * Whether the request contains a Session which was started in one of the
-         * previous requests.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasPreviousSession()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasPreviousSession();
-        }
-        
-        /**
-         * Whether the request contains a Session object.
-         * 
-         * This method does not give any information about the state of the session object,
-         * like whether the session is started or not. It is just a way to check if this Request
-         * is associated with a Session instance.
-         *
-         * @return bool true when the Request contains a Session object, false otherwise
-         * @static 
-         */ 
-        public static function hasSession()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasSession();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function setSession($session)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setSession($session);
-        }
-        
-        /**
-         * 
-         *
-         * @internal 
-         * @static 
-         */ 
-        public static function setSessionFactory($factory)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setSessionFactory($factory);
-        }
-        
-        /**
-         * Returns the client IP addresses.
-         * 
-         * In the returned array the most trusted IP address is first, and the
-         * least trusted one last. The "real" client IP address is the last one,
-         * but this is also the least trusted one. Trusted proxies are stripped.
-         * 
-         * Use this method carefully; you should use getClientIp() instead.
-         *
-         * @return array The client IP addresses
-         * @see getClientIp()
-         * @static 
-         */ 
-        public static function getClientIps()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getClientIps();
-        }
-        
-        /**
-         * Returns the client IP address.
-         * 
-         * This method can read the client IP address from the "X-Forwarded-For" header
-         * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For"
-         * header value is a comma+space separated list of IP addresses, the left-most
-         * being the original client, and each successive proxy that passed the request
-         * adding the IP address where it received the request from.
-         * 
-         * If your reverse proxy uses a different header name than "X-Forwarded-For",
-         * ("Client-Ip" for instance), configure it via the $trustedHeaderSet
-         * argument of the Request::setTrustedProxies() method instead.
-         *
-         * @return string|null The client IP address
-         * @see getClientIps()
-         * @see https://wikipedia.org/wiki/X-Forwarded-For
-         * @static 
-         */ 
-        public static function getClientIp()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getClientIp();
-        }
-        
-        /**
-         * Returns current script name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getScriptName()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getScriptName();
-        }
-        
-        /**
-         * Returns the path being requested relative to the executed script.
-         * 
-         * The path info always starts with a /.
-         * 
-         * Suppose this request is instantiated from /mysite on localhost:
-         * 
-         *  * http://localhost/mysite              returns an empty string
-         *  * http://localhost/mysite/about        returns '/about'
-         *  * http://localhost/mysite/enco%20ded   returns '/enco%20ded'
-         *  * http://localhost/mysite/about?var=1  returns '/about'
-         *
-         * @return string The raw path (i.e. not urldecoded)
-         * @static 
-         */ 
-        public static function getPathInfo()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getPathInfo();
-        }
-        
-        /**
-         * Returns the root path from which this request is executed.
-         * 
-         * Suppose that an index.php file instantiates this request object:
-         * 
-         *  * http://localhost/index.php         returns an empty string
-         *  * http://localhost/index.php/page    returns an empty string
-         *  * http://localhost/web/index.php     returns '/web'
-         *  * http://localhost/we%20b/index.php  returns '/we%20b'
-         *
-         * @return string The raw path (i.e. not urldecoded)
-         * @static 
-         */ 
-        public static function getBasePath()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getBasePath();
-        }
-        
-        /**
-         * Returns the root URL from which this request is executed.
-         * 
-         * The base URL never ends with a /.
-         * 
-         * This is similar to getBasePath(), except that it also includes the
-         * script filename (e.g. index.php) if one exists.
-         *
-         * @return string The raw URL (i.e. not urldecoded)
-         * @static 
-         */ 
-        public static function getBaseUrl()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getBaseUrl();
-        }
-        
-        /**
-         * Gets the request's scheme.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getScheme()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getScheme();
-        }
-        
-        /**
-         * Returns the port on which the request is made.
-         * 
-         * This method can read the client port from the "X-Forwarded-Port" header
-         * when trusted proxies were set via "setTrustedProxies()".
-         * 
-         * The "X-Forwarded-Port" header must contain the client port.
-         *
-         * @return int|string can be a string if fetched from the server bag
-         * @static 
-         */ 
-        public static function getPort()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getPort();
-        }
-        
-        /**
-         * Returns the user.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function getUser()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getUser();
-        }
-        
-        /**
-         * Returns the password.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function getPassword()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getPassword();
-        }
-        
-        /**
-         * Gets the user info.
-         *
-         * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server
-         * @static 
-         */ 
-        public static function getUserInfo()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getUserInfo();
-        }
-        
-        /**
-         * Returns the HTTP host being requested.
-         * 
-         * The port name will be appended to the host if it's non-standard.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getHttpHost()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getHttpHost();
-        }
-        
-        /**
-         * Returns the requested URI (path and query string).
-         *
-         * @return string The raw URI (i.e. not URI decoded)
-         * @static 
-         */ 
-        public static function getRequestUri()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getRequestUri();
-        }
-        
-        /**
-         * Gets the scheme and HTTP host.
-         * 
-         * If the URL was called with basic authentication, the user
-         * and the password are not added to the generated string.
-         *
-         * @return string The scheme and HTTP host
-         * @static 
-         */ 
-        public static function getSchemeAndHttpHost()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getSchemeAndHttpHost();
-        }
-        
-        /**
-         * Generates a normalized URI (URL) for the Request.
-         *
-         * @return string A normalized URI (URL) for the Request
-         * @see getQueryString()
-         * @static 
-         */ 
-        public static function getUri()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getUri();
-        }
-        
-        /**
-         * Generates a normalized URI for the given path.
-         *
-         * @param string $path A path to use instead of the current one
-         * @return string The normalized URI for the path
-         * @static 
-         */ 
-        public static function getUriForPath($path)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getUriForPath($path);
-        }
-        
-        /**
-         * Returns the path as relative reference from the current Request path.
-         * 
-         * Only the URIs path component (no schema, host etc.) is relevant and must be given.
-         * Both paths must be absolute and not contain relative parts.
-         * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
-         * Furthermore, they can be used to reduce the link size in documents.
-         * 
-         * Example target paths, given a base path of "/a/b/c/d":
-         * - "/a/b/c/d"     -> ""
-         * - "/a/b/c/"      -> "./"
-         * - "/a/b/"        -> "../"
-         * - "/a/b/c/other" -> "other"
-         * - "/a/x/y"       -> "../../x/y"
-         *
-         * @param string $path The target path
-         * @return string The relative target path
-         * @static 
-         */ 
-        public static function getRelativeUriForPath($path)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getRelativeUriForPath($path);
-        }
-        
-        /**
-         * Generates the normalized query string for the Request.
-         * 
-         * It builds a normalized query string, where keys/value pairs are alphabetized
-         * and have consistent escaping.
-         *
-         * @return string|null A normalized query string for the Request
-         * @static 
-         */ 
-        public static function getQueryString()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getQueryString();
-        }
-        
-        /**
-         * Checks whether the request is secure or not.
-         * 
-         * This method can read the client protocol from the "X-Forwarded-Proto" header
-         * when trusted proxies were set via "setTrustedProxies()".
-         * 
-         * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isSecure()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isSecure();
-        }
-        
-        /**
-         * Returns the host name.
-         * 
-         * This method can read the client host name from the "X-Forwarded-Host" header
-         * when trusted proxies were set via "setTrustedProxies()".
-         * 
-         * The "X-Forwarded-Host" header must contain the client host name.
-         *
-         * @return string 
-         * @throws SuspiciousOperationException when the host name is invalid or not trusted
-         * @static 
-         */ 
-        public static function getHost()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getHost();
-        }
-        
-        /**
-         * Sets the request method.
-         *
-         * @param string $method
-         * @static 
-         */ 
-        public static function setMethod($method)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setMethod($method);
-        }
-        
-        /**
-         * Gets the request "intended" method.
-         * 
-         * If the X-HTTP-Method-Override header is set, and if the method is a POST,
-         * then it is used to determine the "real" intended HTTP method.
-         * 
-         * The _method request parameter can also be used to determine the HTTP method,
-         * but only if enableHttpMethodParameterOverride() has been called.
-         * 
-         * The method is always an uppercased string.
-         *
-         * @return string The request method
-         * @see getRealMethod()
-         * @static 
-         */ 
-        public static function getMethod()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getMethod();
-        }
-        
-        /**
-         * Gets the "real" request method.
-         *
-         * @return string The request method
-         * @see getMethod()
-         * @static 
-         */ 
-        public static function getRealMethod()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getRealMethod();
-        }
-        
-        /**
-         * Gets the mime type associated with the format.
-         *
-         * @param string $format The format
-         * @return string|null The associated mime type (null if not found)
-         * @static 
-         */ 
-        public static function getMimeType($format)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getMimeType($format);
-        }
-        
-        /**
-         * Gets the mime types associated with the format.
-         *
-         * @param string $format The format
-         * @return array The associated mime types
-         * @static 
-         */ 
-        public static function getMimeTypes($format)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        return \Illuminate\Http\Request::getMimeTypes($format);
-        }
-        
-        /**
-         * Gets the format associated with the mime type.
-         *
-         * @param string $mimeType The associated mime type
-         * @return string|null The format (null if not found)
-         * @static 
-         */ 
-        public static function getFormat($mimeType)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getFormat($mimeType);
-        }
-        
-        /**
-         * Associates a format with mime types.
-         *
-         * @param string $format The format
-         * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)
-         * @static 
-         */ 
-        public static function setFormat($format, $mimeTypes)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setFormat($format, $mimeTypes);
-        }
-        
-        /**
-         * Gets the request format.
-         * 
-         * Here is the process to determine the format:
-         * 
-         *  * format defined by the user (with setRequestFormat())
-         *  * _format request attribute
-         *  * $default
-         *
-         * @see getPreferredFormat
-         * @param string|null $default The default format
-         * @return string|null The request format
-         * @static 
-         */ 
-        public static function getRequestFormat($default = 'html')
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getRequestFormat($default);
-        }
-        
-        /**
-         * Sets the request format.
-         *
-         * @param string $format The request format
-         * @static 
-         */ 
-        public static function setRequestFormat($format)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setRequestFormat($format);
-        }
-        
-        /**
-         * Gets the format associated with the request.
-         *
-         * @return string|null The format (null if no content type is present)
-         * @static 
-         */ 
-        public static function getContentType()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getContentType();
-        }
-        
-        /**
-         * Sets the default locale.
-         *
-         * @param string $locale
-         * @static 
-         */ 
-        public static function setDefaultLocale($locale)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setDefaultLocale($locale);
-        }
-        
-        /**
-         * Get the default locale.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultLocale()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getDefaultLocale();
-        }
-        
-        /**
-         * Sets the locale.
-         *
-         * @param string $locale
-         * @static 
-         */ 
-        public static function setLocale($locale)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->setLocale($locale);
-        }
-        
-        /**
-         * Get the locale.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getLocale()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getLocale();
-        }
-        
-        /**
-         * Checks if the request method is of specified type.
-         *
-         * @param string $method Uppercase request method (GET, POST etc)
-         * @return bool 
-         * @static 
-         */ 
-        public static function isMethod($method)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isMethod($method);
-        }
-        
-        /**
-         * Checks whether or not the method is safe.
-         *
-         * @see https://tools.ietf.org/html/rfc7231#section-4.2.1
-         * @return bool 
-         * @static 
-         */ 
-        public static function isMethodSafe()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isMethodSafe();
-        }
-        
-        /**
-         * Checks whether or not the method is idempotent.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isMethodIdempotent()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isMethodIdempotent();
-        }
-        
-        /**
-         * Checks whether the method is cacheable or not.
-         *
-         * @see https://tools.ietf.org/html/rfc7231#section-4.2.3
-         * @return bool True for GET and HEAD, false otherwise
-         * @static 
-         */ 
-        public static function isMethodCacheable()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isMethodCacheable();
-        }
-        
-        /**
-         * Returns the protocol version.
-         * 
-         * If the application is behind a proxy, the protocol version used in the
-         * requests between the client and the proxy and between the proxy and the
-         * server might be different. This returns the former (from the "Via" header)
-         * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns
-         * the latter (from the "SERVER_PROTOCOL" server parameter).
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getProtocolVersion()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getProtocolVersion();
-        }
-        
-        /**
-         * Returns the request body content.
-         *
-         * @param bool $asResource If true, a resource will be returned
-         * @return string|resource The request body content or a resource to read the body stream
-         * @throws \LogicException
-         * @static 
-         */ 
-        public static function getContent($asResource = false)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getContent($asResource);
-        }
-        
-        /**
-         * Gets the Etags.
-         *
-         * @return array The entity tags
-         * @static 
-         */ 
-        public static function getETags()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getETags();
-        }
-        
-        /**
-         * 
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isNoCache()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isNoCache();
-        }
-        
-        /**
-         * Gets the preferred format for the response by inspecting, in the following order:
-         *   * the request format set using setRequestFormat
-         *   * the values of the Accept HTTP header
-         * 
-         * Note that if you use this method, you should send the "Vary: Accept" header
-         * in the response to prevent any issues with intermediary HTTP caches.
-         *
-         * @static 
-         */ 
-        public static function getPreferredFormat($default = 'html')
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getPreferredFormat($default);
-        }
-        
-        /**
-         * Returns the preferred language.
-         *
-         * @param string[] $locales An array of ordered available locales
-         * @return string|null The preferred locale
-         * @static 
-         */ 
-        public static function getPreferredLanguage($locales = null)
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getPreferredLanguage($locales);
-        }
-        
-        /**
-         * Gets a list of languages acceptable by the client browser.
-         *
-         * @return array Languages ordered in the user browser preferences
-         * @static 
-         */ 
-        public static function getLanguages()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getLanguages();
-        }
-        
-        /**
-         * Gets a list of charsets acceptable by the client browser.
-         *
-         * @return array List of charsets in preferable order
-         * @static 
-         */ 
-        public static function getCharsets()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getCharsets();
-        }
-        
-        /**
-         * Gets a list of encodings acceptable by the client browser.
-         *
-         * @return array List of encodings in preferable order
-         * @static 
-         */ 
-        public static function getEncodings()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getEncodings();
-        }
-        
-        /**
-         * Gets a list of content types acceptable by the client browser.
-         *
-         * @return array List of content types in preferable order
-         * @static 
-         */ 
-        public static function getAcceptableContentTypes()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->getAcceptableContentTypes();
-        }
-        
-        /**
-         * Returns true if the request is a XMLHttpRequest.
-         * 
-         * It works if your JavaScript library sets an X-Requested-With HTTP header.
-         * It is known to work with common JavaScript frameworks:
-         *
-         * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript
-         * @return bool true if the request is an XMLHttpRequest, false otherwise
-         * @static 
-         */ 
-        public static function isXmlHttpRequest()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isXmlHttpRequest();
-        }
-        
-        /**
-         * Indicates whether this request originated from a trusted proxy.
-         * 
-         * This can be useful to determine whether or not to trust the
-         * contents of a proxy-specific header.
-         *
-         * @return bool true if the request came from a trusted proxy, false otherwise
-         * @static 
-         */ 
-        public static function isFromTrustedProxy()
-        {
-            //Method inherited from \Symfony\Component\HttpFoundation\Request            
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isFromTrustedProxy();
-        }
-        
-        /**
-         * Determine if the given content types match.
-         *
-         * @param string $actual
-         * @param string $type
-         * @return bool 
-         * @static 
-         */ 
-        public static function matchesType($actual, $type)
-        {
-                        return \Illuminate\Http\Request::matchesType($actual, $type);
-        }
-        
-        /**
-         * Determine if the request is sending JSON.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isJson()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->isJson();
-        }
-        
-        /**
-         * Determine if the current request probably expects a JSON response.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function expectsJson()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->expectsJson();
-        }
-        
-        /**
-         * Determine if the current request is asking for JSON.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function wantsJson()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->wantsJson();
-        }
-        
-        /**
-         * Determines whether the current requests accepts a given content type.
-         *
-         * @param string|array $contentTypes
-         * @return bool 
-         * @static 
-         */ 
-        public static function accepts($contentTypes)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->accepts($contentTypes);
-        }
-        
-        /**
-         * Return the most suitable content type from the given array based on content negotiation.
-         *
-         * @param string|array $contentTypes
-         * @return string|null 
-         * @static 
-         */ 
-        public static function prefers($contentTypes)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->prefers($contentTypes);
-        }
-        
-        /**
-         * Determine if the current request accepts any content type.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function acceptsAnyContentType()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->acceptsAnyContentType();
-        }
-        
-        /**
-         * Determines whether a request accepts JSON.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function acceptsJson()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->acceptsJson();
-        }
-        
-        /**
-         * Determines whether a request accepts HTML.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function acceptsHtml()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->acceptsHtml();
-        }
-        
-        /**
-         * Get the data format expected in the response.
-         *
-         * @param string $default
-         * @return string 
-         * @static 
-         */ 
-        public static function format($default = 'html')
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->format($default);
-        }
-        
-        /**
-         * Retrieve an old input item.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array 
-         * @static 
-         */ 
-        public static function old($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->old($key, $default);
-        }
-        
-        /**
-         * Flash the input for the current request to the session.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flash()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->flash();
-        }
-        
-        /**
-         * Flash only some of the input to the session.
-         *
-         * @param array|mixed $keys
-         * @return void 
-         * @static 
-         */ 
-        public static function flashOnly($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->flashOnly($keys);
-        }
-        
-        /**
-         * Flash only some of the input to the session.
-         *
-         * @param array|mixed $keys
-         * @return void 
-         * @static 
-         */ 
-        public static function flashExcept($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->flashExcept($keys);
-        }
-        
-        /**
-         * Flush all of the old input from the session.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flush()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        $instance->flush();
-        }
-        
-        /**
-         * Retrieve a server variable from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function server($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->server($key, $default);
-        }
-        
-        /**
-         * Determine if a header is set on the request.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasHeader($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasHeader($key);
-        }
-        
-        /**
-         * Retrieve a header from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function header($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->header($key, $default);
-        }
-        
-        /**
-         * Get the bearer token from the request headers.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function bearerToken()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->bearerToken();
-        }
-        
-        /**
-         * Determine if the request contains a given input item key.
-         *
-         * @param string|array $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function exists($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->exists($key);
-        }
-        
-        /**
-         * Determine if the request contains a given input item key.
-         *
-         * @param string|array $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->has($key);
-        }
-        
-        /**
-         * Determine if the request contains any of the given inputs.
-         *
-         * @param string|array $keys
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasAny($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasAny($keys);
-        }
-        
-        /**
-         * Determine if the request contains a non-empty value for an input item.
-         *
-         * @param string|array $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function filled($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->filled($key);
-        }
-        
-        /**
-         * Determine if the request contains a non-empty value for any of the given inputs.
-         *
-         * @param string|array $keys
-         * @return bool 
-         * @static 
-         */ 
-        public static function anyFilled($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->anyFilled($keys);
-        }
-        
-        /**
-         * Get the keys for all of the input and files.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function keys()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->keys();
-        }
-        
-        /**
-         * Get all of the input and files for the request.
-         *
-         * @param array|mixed|null $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function all($keys = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->all($keys);
-        }
-        
-        /**
-         * Retrieve an input item from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function input($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->input($key, $default);
-        }
-        
-        /**
-         * Get a subset containing the provided keys with values from the input data.
-         *
-         * @param array|mixed $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function only($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->only($keys);
-        }
-        
-        /**
-         * Get all of the input except for a specified array of items.
-         *
-         * @param array|mixed $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function except($keys)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->except($keys);
-        }
-        
-        /**
-         * Retrieve a query string item from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function query($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->query($key, $default);
-        }
-        
-        /**
-         * Retrieve a request payload item from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function post($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->post($key, $default);
-        }
-        
-        /**
-         * Determine if a cookie is set on the request.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasCookie($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasCookie($key);
-        }
-        
-        /**
-         * Retrieve a cookie from the request.
-         *
-         * @param string|null $key
-         * @param string|array|null $default
-         * @return string|array|null 
-         * @static 
-         */ 
-        public static function cookie($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->cookie($key, $default);
-        }
-        
-        /**
-         * Get an array of all of the files on the request.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function allFiles()
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->allFiles();
-        }
-        
-        /**
-         * Determine if the uploaded data contains a file.
-         *
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasFile($key)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->hasFile($key);
-        }
-        
-        /**
-         * Retrieve a file from the request.
-         *
-         * @param string|null $key
-         * @param mixed $default
-         * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null 
-         * @static 
-         */ 
-        public static function file($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Http\Request $instance */
-                        return $instance->file($key, $default);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Http\Request::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Http\Request::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Http\Request::hasMacro($name);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function validate($rules, ...$params)
-        {
-                        return \Illuminate\Http\Request::validate($rules, ...$params);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function hasValidSignature($absolute = true)
-        {
-                        return \Illuminate\Http\Request::hasValidSignature($absolute);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Contracts\Routing\ResponseFactory
-     */ 
-    class Response {
-        
-        /**
-         * Create a new response instance.
-         *
-         * @param string $content
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\Response 
-         * @static 
-         */ 
-        public static function make($content = '', $status = 200, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->make($content, $status, $headers);
-        }
-        
-        /**
-         * Create a new "no content" response.
-         *
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\Response 
-         * @static 
-         */ 
-        public static function noContent($status = 204, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->noContent($status, $headers);
-        }
-        
-        /**
-         * Create a new response for a given view.
-         *
-         * @param string $view
-         * @param array $data
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\Response 
-         * @static 
-         */ 
-        public static function view($view, $data = [], $status = 200, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->view($view, $data, $status, $headers);
-        }
-        
-        /**
-         * Create a new JSON response instance.
-         *
-         * @param mixed $data
-         * @param int $status
-         * @param array $headers
-         * @param int $options
-         * @return \Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function json($data = [], $status = 200, $headers = [], $options = 0)
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->json($data, $status, $headers, $options);
-        }
-        
-        /**
-         * Create a new JSONP response instance.
-         *
-         * @param string $callback
-         * @param mixed $data
-         * @param int $status
-         * @param array $headers
-         * @param int $options
-         * @return \Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->jsonp($callback, $data, $status, $headers, $options);
-        }
-        
-        /**
-         * Create a new streamed response instance.
-         *
-         * @param \Closure $callback
-         * @param int $status
-         * @param array $headers
-         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
-         * @static 
-         */ 
-        public static function stream($callback, $status = 200, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->stream($callback, $status, $headers);
-        }
-        
-        /**
-         * Create a new streamed response instance as a file download.
-         *
-         * @param \Closure $callback
-         * @param string|null $name
-         * @param array $headers
-         * @param string|null $disposition
-         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
-         * @static 
-         */ 
-        public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->streamDownload($callback, $name, $headers, $disposition);
-        }
-        
-        /**
-         * Create a new file download response.
-         *
-         * @param \SplFileInfo|string $file
-         * @param string|null $name
-         * @param array $headers
-         * @param string|null $disposition
-         * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 
-         * @static 
-         */ 
-        public static function download($file, $name = null, $headers = [], $disposition = 'attachment')
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->download($file, $name, $headers, $disposition);
-        }
-        
-        /**
-         * Return the raw contents of a binary file.
-         *
-         * @param \SplFileInfo|string $file
-         * @param array $headers
-         * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 
-         * @static 
-         */ 
-        public static function file($file, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->file($file, $headers);
-        }
-        
-        /**
-         * Create a new redirect response to the given path.
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function redirectTo($path, $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->redirectTo($path, $status, $headers, $secure);
-        }
-        
-        /**
-         * Create a new redirect response to a named route.
-         *
-         * @param string $route
-         * @param array $parameters
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->redirectToRoute($route, $parameters, $status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response to a controller action.
-         *
-         * @param string $action
-         * @param array $parameters
-         * @param int $status
-         * @param array $headers
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->redirectToAction($action, $parameters, $status, $headers);
-        }
-        
-        /**
-         * Create a new redirect response, while putting the current URL in the session.
-         *
-         * @param string $path
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->redirectGuest($path, $status, $headers, $secure);
-        }
-        
-        /**
-         * Create a new redirect response to the previously intended location.
-         *
-         * @param string $default
-         * @param int $status
-         * @param array $headers
-         * @param bool|null $secure
-         * @return \Illuminate\Http\RedirectResponse 
-         * @static 
-         */ 
-        public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\ResponseFactory $instance */
-                        return $instance->redirectToIntended($default, $status, $headers, $secure);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Routing\ResponseFactory::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Routing\ResponseFactory::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @method static \Illuminate\Routing\RouteRegistrar prefix(string  $prefix)
-     * @method static \Illuminate\Routing\RouteRegistrar where(array  $where)
-     * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware)
-     * @method static \Illuminate\Routing\RouteRegistrar as(string $value)
-     * @method static \Illuminate\Routing\RouteRegistrar domain(string $value)
-     * @method static \Illuminate\Routing\RouteRegistrar name(string $value)
-     * @method static \Illuminate\Routing\RouteRegistrar namespace(string $value)
-     * @see \Illuminate\Routing\Router
-     */ 
-    class Route {
-        
-        /**
-         * Register a new GET route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function get($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->get($uri, $action);
-        }
-        
-        /**
-         * Register a new POST route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function post($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->post($uri, $action);
-        }
-        
-        /**
-         * Register a new PUT route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function put($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->put($uri, $action);
-        }
-        
-        /**
-         * Register a new PATCH route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function patch($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->patch($uri, $action);
-        }
-        
-        /**
-         * Register a new DELETE route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function delete($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->delete($uri, $action);
-        }
-        
-        /**
-         * Register a new OPTIONS route with the router.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function options($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->options($uri, $action);
-        }
-        
-        /**
-         * Register a new route responding to all verbs.
-         *
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function any($uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->any($uri, $action);
-        }
-        
-        /**
-         * Register a new Fallback route with the router.
-         *
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function fallback($action)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->fallback($action);
-        }
-        
-        /**
-         * Create a redirect from one URI to another.
-         *
-         * @param string $uri
-         * @param string $destination
-         * @param int $status
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function redirect($uri, $destination, $status = 302)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->redirect($uri, $destination, $status);
-        }
-        
-        /**
-         * Create a permanent redirect from one URI to another.
-         *
-         * @param string $uri
-         * @param string $destination
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function permanentRedirect($uri, $destination)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->permanentRedirect($uri, $destination);
-        }
-        
-        /**
-         * Register a new route that returns a view.
-         *
-         * @param string $uri
-         * @param string $view
-         * @param array $data
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function view($uri, $view, $data = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->view($uri, $view, $data);
-        }
-        
-        /**
-         * Register a new route with the given verbs.
-         *
-         * @param array|string $methods
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function match($methods, $uri, $action = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->match($methods, $uri, $action);
-        }
-        
-        /**
-         * Register an array of resource controllers.
-         *
-         * @param array $resources
-         * @param array $options
-         * @return void 
-         * @static 
-         */ 
-        public static function resources($resources, $options = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->resources($resources, $options);
-        }
-        
-        /**
-         * Route a resource to a controller.
-         *
-         * @param string $name
-         * @param string $controller
-         * @param array $options
-         * @return \Illuminate\Routing\PendingResourceRegistration 
-         * @static 
-         */ 
-        public static function resource($name, $controller, $options = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->resource($name, $controller, $options);
-        }
-        
-        /**
-         * Register an array of API resource controllers.
-         *
-         * @param array $resources
-         * @param array $options
-         * @return void 
-         * @static 
-         */ 
-        public static function apiResources($resources, $options = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->apiResources($resources, $options);
-        }
-        
-        /**
-         * Route an API resource to a controller.
-         *
-         * @param string $name
-         * @param string $controller
-         * @param array $options
-         * @return \Illuminate\Routing\PendingResourceRegistration 
-         * @static 
-         */ 
-        public static function apiResource($name, $controller, $options = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->apiResource($name, $controller, $options);
-        }
-        
-        /**
-         * Create a route group with shared attributes.
-         *
-         * @param array $attributes
-         * @param \Closure|string $routes
-         * @return void 
-         * @static 
-         */ 
-        public static function group($attributes, $routes)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->group($attributes, $routes);
-        }
-        
-        /**
-         * Merge the given array with the last group stack.
-         *
-         * @param array $new
-         * @return array 
-         * @static 
-         */ 
-        public static function mergeWithLastGroup($new)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->mergeWithLastGroup($new);
-        }
-        
-        /**
-         * Get the prefix from the last group on the stack.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getLastGroupPrefix()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getLastGroupPrefix();
-        }
-        
-        /**
-         * Add a route to the underlying route collection.
-         *
-         * @param array|string $methods
-         * @param string $uri
-         * @param \Closure|array|string|callable|null $action
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function addRoute($methods, $uri, $action)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->addRoute($methods, $uri, $action);
-        }
-        
-        /**
-         * Return the response returned by the given route.
-         *
-         * @param string $name
-         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function respondWithRoute($name)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->respondWithRoute($name);
-        }
-        
-        /**
-         * Dispatch the request to the application.
-         *
-         * @param \Illuminate\Http\Request $request
-         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function dispatch($request)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->dispatch($request);
-        }
-        
-        /**
-         * Dispatch the request to a route and return the response.
-         *
-         * @param \Illuminate\Http\Request $request
-         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function dispatchToRoute($request)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->dispatchToRoute($request);
-        }
-        
-        /**
-         * Gather the middleware for the given route with resolved class names.
-         *
-         * @param \Illuminate\Routing\Route $route
-         * @return array 
-         * @static 
-         */ 
-        public static function gatherRouteMiddleware($route)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->gatherRouteMiddleware($route);
-        }
-        
-        /**
-         * Create a response instance from the given value.
-         *
-         * @param \Symfony\Component\HttpFoundation\Request $request
-         * @param mixed $response
-         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function prepareResponse($request, $response)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->prepareResponse($request, $response);
-        }
-        
-        /**
-         * Static version of prepareResponse.
-         *
-         * @param \Symfony\Component\HttpFoundation\Request $request
-         * @param mixed $response
-         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
-         * @static 
-         */ 
-        public static function toResponse($request, $response)
-        {
-                        return \Illuminate\Routing\Router::toResponse($request, $response);
-        }
-        
-        /**
-         * Substitute the route bindings onto the route.
-         *
-         * @param \Illuminate\Routing\Route $route
-         * @return \Illuminate\Routing\Route 
-         * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
-         * @static 
-         */ 
-        public static function substituteBindings($route)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->substituteBindings($route);
-        }
-        
-        /**
-         * Substitute the implicit Eloquent model bindings for the route.
-         *
-         * @param \Illuminate\Routing\Route $route
-         * @return void 
-         * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
-         * @static 
-         */ 
-        public static function substituteImplicitBindings($route)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->substituteImplicitBindings($route);
-        }
-        
-        /**
-         * Register a route matched event listener.
-         *
-         * @param string|callable $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function matched($callback)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->matched($callback);
-        }
-        
-        /**
-         * Get all of the defined middleware short-hand names.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getMiddleware()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getMiddleware();
-        }
-        
-        /**
-         * Register a short-hand name for a middleware.
-         *
-         * @param string $name
-         * @param string $class
-         * @return \Illuminate\Routing\Router 
-         * @static 
-         */ 
-        public static function aliasMiddleware($name, $class)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->aliasMiddleware($name, $class);
-        }
-        
-        /**
-         * Check if a middlewareGroup with the given name exists.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMiddlewareGroup($name)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->hasMiddlewareGroup($name);
-        }
-        
-        /**
-         * Get all of the defined middleware groups.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getMiddlewareGroups()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getMiddlewareGroups();
-        }
-        
-        /**
-         * Register a group of middleware.
-         *
-         * @param string $name
-         * @param array $middleware
-         * @return \Illuminate\Routing\Router 
-         * @static 
-         */ 
-        public static function middlewareGroup($name, $middleware)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->middlewareGroup($name, $middleware);
-        }
-        
-        /**
-         * Add a middleware to the beginning of a middleware group.
-         * 
-         * If the middleware is already in the group, it will not be added again.
-         *
-         * @param string $group
-         * @param string $middleware
-         * @return \Illuminate\Routing\Router 
-         * @static 
-         */ 
-        public static function prependMiddlewareToGroup($group, $middleware)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->prependMiddlewareToGroup($group, $middleware);
-        }
-        
-        /**
-         * Add a middleware to the end of a middleware group.
-         * 
-         * If the middleware is already in the group, it will not be added again.
-         *
-         * @param string $group
-         * @param string $middleware
-         * @return \Illuminate\Routing\Router 
-         * @static 
-         */ 
-        public static function pushMiddlewareToGroup($group, $middleware)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->pushMiddlewareToGroup($group, $middleware);
-        }
-        
-        /**
-         * Add a new route parameter binder.
-         *
-         * @param string $key
-         * @param string|callable $binder
-         * @return void 
-         * @static 
-         */ 
-        public static function bind($key, $binder)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->bind($key, $binder);
-        }
-        
-        /**
-         * Register a model binder for a wildcard.
-         *
-         * @param string $key
-         * @param string $class
-         * @param \Closure|null $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function model($key, $class, $callback = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->model($key, $class, $callback);
-        }
-        
-        /**
-         * Get the binding callback for a given binding.
-         *
-         * @param string $key
-         * @return \Closure|null 
-         * @static 
-         */ 
-        public static function getBindingCallback($key)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getBindingCallback($key);
-        }
-        
-        /**
-         * Get the global "where" patterns.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getPatterns()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getPatterns();
-        }
-        
-        /**
-         * Set a global where pattern on all routes.
-         *
-         * @param string $key
-         * @param string $pattern
-         * @return void 
-         * @static 
-         */ 
-        public static function pattern($key, $pattern)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->pattern($key, $pattern);
-        }
-        
-        /**
-         * Set a group of global where patterns on all routes.
-         *
-         * @param array $patterns
-         * @return void 
-         * @static 
-         */ 
-        public static function patterns($patterns)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->patterns($patterns);
-        }
-        
-        /**
-         * Determine if the router currently has a group stack.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasGroupStack()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->hasGroupStack();
-        }
-        
-        /**
-         * Get the current group stack for the router.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getGroupStack()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getGroupStack();
-        }
-        
-        /**
-         * Get a route parameter for the current route.
-         *
-         * @param string $key
-         * @param string|null $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function input($key, $default = null)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->input($key, $default);
-        }
-        
-        /**
-         * Get the request currently being dispatched.
-         *
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function getCurrentRequest()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getCurrentRequest();
-        }
-        
-        /**
-         * Get the currently dispatched route instance.
-         *
-         * @return \Illuminate\Routing\Route 
-         * @static 
-         */ 
-        public static function getCurrentRoute()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getCurrentRoute();
-        }
-        
-        /**
-         * Get the currently dispatched route instance.
-         *
-         * @return \Illuminate\Routing\Route|null 
-         * @static 
-         */ 
-        public static function current()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->current();
-        }
-        
-        /**
-         * Check if a route with the given name exists.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($name)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->has($name);
-        }
-        
-        /**
-         * Get the current route name.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function currentRouteName()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->currentRouteName();
-        }
-        
-        /**
-         * Alias for the "currentRouteNamed" method.
-         *
-         * @param mixed $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function is(...$patterns)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->is(...$patterns);
-        }
-        
-        /**
-         * Determine if the current route matches a pattern.
-         *
-         * @param mixed $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function currentRouteNamed(...$patterns)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->currentRouteNamed(...$patterns);
-        }
-        
-        /**
-         * Get the current route action.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function currentRouteAction()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->currentRouteAction();
-        }
-        
-        /**
-         * Alias for the "currentRouteUses" method.
-         *
-         * @param array $patterns
-         * @return bool 
-         * @static 
-         */ 
-        public static function uses(...$patterns)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->uses(...$patterns);
-        }
-        
-        /**
-         * Determine if the current route action matches a given action.
-         *
-         * @param string $action
-         * @return bool 
-         * @static 
-         */ 
-        public static function currentRouteUses($action)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->currentRouteUses($action);
-        }
-        
-        /**
-         * Register the typical authentication routes for an application.
-         *
-         * @param array $options
-         * @return void 
-         * @static 
-         */ 
-        public static function auth($options = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->auth($options);
-        }
-        
-        /**
-         * Register the typical reset password routes for an application.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function resetPassword()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->resetPassword();
-        }
-        
-        /**
-         * Register the typical email verification routes for an application.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function emailVerification()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->emailVerification();
-        }
-        
-        /**
-         * Set the unmapped global resource parameters to singular.
-         *
-         * @param bool $singular
-         * @return void 
-         * @static 
-         */ 
-        public static function singularResourceParameters($singular = true)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->singularResourceParameters($singular);
-        }
-        
-        /**
-         * Set the global resource parameter mapping.
-         *
-         * @param array $parameters
-         * @return void 
-         * @static 
-         */ 
-        public static function resourceParameters($parameters = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->resourceParameters($parameters);
-        }
-        
-        /**
-         * Get or set the verbs used in the resource URIs.
-         *
-         * @param array $verbs
-         * @return array|null 
-         * @static 
-         */ 
-        public static function resourceVerbs($verbs = [])
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->resourceVerbs($verbs);
-        }
-        
-        /**
-         * Get the underlying route collection.
-         *
-         * @return \Illuminate\Routing\RouteCollection 
-         * @static 
-         */ 
-        public static function getRoutes()
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->getRoutes();
-        }
-        
-        /**
-         * Set the route collection instance.
-         *
-         * @param \Illuminate\Routing\RouteCollection $routes
-         * @return void 
-         * @static 
-         */ 
-        public static function setRoutes($routes)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        $instance->setRoutes($routes);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Routing\Router::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Routing\Router::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Routing\Router::hasMacro($name);
-        }
-        
-        /**
-         * Dynamically handle calls to the class.
-         *
-         * @param string $method
-         * @param array $parameters
-         * @return mixed 
-         * @throws \BadMethodCallException
-         * @static 
-         */ 
-        public static function macroCall($method, $parameters)
-        {
-                        /** @var \Illuminate\Routing\Router $instance */
-                        return $instance->macroCall($method, $parameters);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Database\Schema\Builder
-     */ 
-    class Schema {
-        
-        /**
-         * Determine if the given table exists.
-         *
-         * @param string $table
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasTable($table)
-        {
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->hasTable($table);
-        }
-        
-        /**
-         * Get the column listing for a given table.
-         *
-         * @param string $table
-         * @return array 
-         * @static 
-         */ 
-        public static function getColumnListing($table)
-        {
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->getColumnListing($table);
-        }
-        
-        /**
-         * Drop all tables from the database.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function dropAllTables()
-        {
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->dropAllTables();
-        }
-        
-        /**
-         * Drop all views from the database.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function dropAllViews()
-        {
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->dropAllViews();
-        }
-        
-        /**
-         * Set the default string length for migrations.
-         *
-         * @param int $length
-         * @return void 
-         * @static 
-         */ 
-        public static function defaultStringLength($length)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length);
-        }
-        
-        /**
-         * Determine if the given table has a given column.
-         *
-         * @param string $table
-         * @param string $column
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasColumn($table, $column)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->hasColumn($table, $column);
-        }
-        
-        /**
-         * Determine if the given table has given columns.
-         *
-         * @param string $table
-         * @param array $columns
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasColumns($table, $columns)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->hasColumns($table, $columns);
-        }
-        
-        /**
-         * Get the data type for the given column name.
-         *
-         * @param string $table
-         * @param string $column
-         * @return string 
-         * @static 
-         */ 
-        public static function getColumnType($table, $column)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->getColumnType($table, $column);
-        }
-        
-        /**
-         * Modify a table on the schema.
-         *
-         * @param string $table
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function table($table, $callback)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->table($table, $callback);
-        }
-        
-        /**
-         * Create a new table on the schema.
-         *
-         * @param string $table
-         * @param \Closure $callback
-         * @return void 
-         * @static 
-         */ 
-        public static function create($table, $callback)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->create($table, $callback);
-        }
-        
-        /**
-         * Drop a table from the schema.
-         *
-         * @param string $table
-         * @return void 
-         * @static 
-         */ 
-        public static function drop($table)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->drop($table);
-        }
-        
-        /**
-         * Drop a table from the schema if it exists.
-         *
-         * @param string $table
-         * @return void 
-         * @static 
-         */ 
-        public static function dropIfExists($table)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->dropIfExists($table);
-        }
-        
-        /**
-         * Drop all types from the database.
-         *
-         * @return void 
-         * @throws \LogicException
-         * @static 
-         */ 
-        public static function dropAllTypes()
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->dropAllTypes();
-        }
-        
-        /**
-         * Rename a table on the schema.
-         *
-         * @param string $from
-         * @param string $to
-         * @return void 
-         * @static 
-         */ 
-        public static function rename($from, $to)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->rename($from, $to);
-        }
-        
-        /**
-         * Enable foreign key constraints.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function enableForeignKeyConstraints()
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->enableForeignKeyConstraints();
-        }
-        
-        /**
-         * Disable foreign key constraints.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function disableForeignKeyConstraints()
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->disableForeignKeyConstraints();
-        }
-        
-        /**
-         * Register a custom Doctrine mapping type.
-         *
-         * @param string $class
-         * @param string $name
-         * @param string $type
-         * @return void 
-         * @throws \Doctrine\DBAL\DBALException
-         * @static 
-         */ 
-        public static function registerCustomDoctrineType($class, $name, $type)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->registerCustomDoctrineType($class, $name, $type);
-        }
-        
-        /**
-         * Get the database connection instance.
-         *
-         * @return \Illuminate\Database\Connection 
-         * @static 
-         */ 
-        public static function getConnection()
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->getConnection();
-        }
-        
-        /**
-         * Set the database connection instance.
-         *
-         * @param \Illuminate\Database\Connection $connection
-         * @return \Illuminate\Database\Schema\MySqlBuilder 
-         * @static 
-         */ 
-        public static function setConnection($connection)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        return $instance->setConnection($connection);
-        }
-        
-        /**
-         * Set the Schema Blueprint resolver callback.
-         *
-         * @param \Closure $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function blueprintResolver($resolver)
-        {
-            //Method inherited from \Illuminate\Database\Schema\Builder            
-                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
-                        $instance->blueprintResolver($resolver);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Session\SessionManager
-     * @see \Illuminate\Session\Store
-     */ 
-    class Session {
-        
-        /**
-         * Get the session configuration.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getSessionConfig()
-        {
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        return $instance->getSessionConfig();
-        }
-        
-        /**
-         * Get the default session driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Set the default session driver name.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setDefaultDriver($name)
-        {
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        $instance->setDefaultDriver($name);
-        }
-        
-        /**
-         * Get a driver instance.
-         *
-         * @param string $driver
-         * @return mixed 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function driver($driver = null)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        return $instance->driver($driver);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Session\SessionManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Get all of the created "drivers".
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDrivers()
-        {
-            //Method inherited from \Illuminate\Support\Manager            
-                        /** @var \Illuminate\Session\SessionManager $instance */
-                        return $instance->getDrivers();
-        }
-        
-        /**
-         * Start the session, reading the data from a handler.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function start()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->start();
-        }
-        
-        /**
-         * Save the session data to storage.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function save()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->save();
-        }
-        
-        /**
-         * Age the flash data for the session.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function ageFlashData()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->ageFlashData();
-        }
-        
-        /**
-         * Get all of the session data.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function all()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->all();
-        }
-        
-        /**
-         * Get a subset of the session data.
-         *
-         * @param array $keys
-         * @return array 
-         * @static 
-         */ 
-        public static function only($keys)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->only($keys);
-        }
-        
-        /**
-         * Checks if a key exists.
-         *
-         * @param string|array $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function exists($key)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->exists($key);
-        }
-        
-        /**
-         * Checks if a key is present and not null.
-         *
-         * @param string|array $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function has($key)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->has($key);
-        }
-        
-        /**
-         * Get an item from the session.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function get($key, $default = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->get($key, $default);
-        }
-        
-        /**
-         * Get the value of a given key and then forget it.
-         *
-         * @param string $key
-         * @param string|null $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function pull($key, $default = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->pull($key, $default);
-        }
-        
-        /**
-         * Determine if the session contains old input.
-         *
-         * @param string|null $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasOldInput($key = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->hasOldInput($key);
-        }
-        
-        /**
-         * Get the requested item from the flashed input array.
-         *
-         * @param string|null $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getOldInput($key = null, $default = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->getOldInput($key, $default);
-        }
-        
-        /**
-         * Replace the given session attributes entirely.
-         *
-         * @param array $attributes
-         * @return void 
-         * @static 
-         */ 
-        public static function replace($attributes)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->replace($attributes);
-        }
-        
-        /**
-         * Put a key / value pair or array of key / value pairs in the session.
-         *
-         * @param string|array $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function put($key, $value = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->put($key, $value);
-        }
-        
-        /**
-         * Get an item from the session, or store the default value.
-         *
-         * @param string $key
-         * @param \Closure $callback
-         * @return mixed 
-         * @static 
-         */ 
-        public static function remember($key, $callback)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->remember($key, $callback);
-        }
-        
-        /**
-         * Push a value onto a session array.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function push($key, $value)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->push($key, $value);
-        }
-        
-        /**
-         * Increment the value of an item in the session.
-         *
-         * @param string $key
-         * @param int $amount
-         * @return mixed 
-         * @static 
-         */ 
-        public static function increment($key, $amount = 1)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->increment($key, $amount);
-        }
-        
-        /**
-         * Decrement the value of an item in the session.
-         *
-         * @param string $key
-         * @param int $amount
-         * @return int 
-         * @static 
-         */ 
-        public static function decrement($key, $amount = 1)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->decrement($key, $amount);
-        }
-        
-        /**
-         * Flash a key / value pair to the session.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function flash($key, $value = true)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->flash($key, $value);
-        }
-        
-        /**
-         * Flash a key / value pair to the session for immediate use.
-         *
-         * @param string $key
-         * @param mixed $value
-         * @return void 
-         * @static 
-         */ 
-        public static function now($key, $value)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->now($key, $value);
-        }
-        
-        /**
-         * Reflash all of the session flash data.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function reflash()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->reflash();
-        }
-        
-        /**
-         * Reflash a subset of the current flash data.
-         *
-         * @param array|mixed $keys
-         * @return void 
-         * @static 
-         */ 
-        public static function keep($keys = null)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->keep($keys);
-        }
-        
-        /**
-         * Flash an input array to the session.
-         *
-         * @param array $value
-         * @return void 
-         * @static 
-         */ 
-        public static function flashInput($value)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->flashInput($value);
-        }
-        
-        /**
-         * Remove an item from the session, returning its value.
-         *
-         * @param string $key
-         * @return mixed 
-         * @static 
-         */ 
-        public static function remove($key)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->remove($key);
-        }
-        
-        /**
-         * Remove one or many items from the session.
-         *
-         * @param string|array $keys
-         * @return void 
-         * @static 
-         */ 
-        public static function forget($keys)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->forget($keys);
-        }
-        
-        /**
-         * Remove all of the items from the session.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flush()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->flush();
-        }
-        
-        /**
-         * Flush the session data and regenerate the ID.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function invalidate()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->invalidate();
-        }
-        
-        /**
-         * Generate a new session identifier.
-         *
-         * @param bool $destroy
-         * @return bool 
-         * @static 
-         */ 
-        public static function regenerate($destroy = false)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->regenerate($destroy);
-        }
-        
-        /**
-         * Generate a new session ID for the session.
-         *
-         * @param bool $destroy
-         * @return bool 
-         * @static 
-         */ 
-        public static function migrate($destroy = false)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->migrate($destroy);
-        }
-        
-        /**
-         * Determine if the session has been started.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function isStarted()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->isStarted();
-        }
-        
-        /**
-         * Get the name of the session.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getName()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->getName();
-        }
-        
-        /**
-         * Set the name of the session.
-         *
-         * @param string $name
-         * @return void 
-         * @static 
-         */ 
-        public static function setName($name)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->setName($name);
-        }
-        
-        /**
-         * Get the current session ID.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getId()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->getId();
-        }
-        
-        /**
-         * Set the session ID.
-         *
-         * @param string $id
-         * @return void 
-         * @static 
-         */ 
-        public static function setId($id)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->setId($id);
-        }
-        
-        /**
-         * Determine if this is a valid session ID.
-         *
-         * @param string $id
-         * @return bool 
-         * @static 
-         */ 
-        public static function isValidId($id)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->isValidId($id);
-        }
-        
-        /**
-         * Set the existence of the session on the handler if applicable.
-         *
-         * @param bool $value
-         * @return void 
-         * @static 
-         */ 
-        public static function setExists($value)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->setExists($value);
-        }
-        
-        /**
-         * Get the CSRF token value.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function token()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->token();
-        }
-        
-        /**
-         * Regenerate the CSRF token value.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function regenerateToken()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->regenerateToken();
-        }
-        
-        /**
-         * Get the previous URL from the session.
-         *
-         * @return string|null 
-         * @static 
-         */ 
-        public static function previousUrl()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->previousUrl();
-        }
-        
-        /**
-         * Set the "previous" URL in the session.
-         *
-         * @param string $url
-         * @return void 
-         * @static 
-         */ 
-        public static function setPreviousUrl($url)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->setPreviousUrl($url);
-        }
-        
-        /**
-         * Get the underlying session handler implementation.
-         *
-         * @return \SessionHandlerInterface 
-         * @static 
-         */ 
-        public static function getHandler()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->getHandler();
-        }
-        
-        /**
-         * Determine if the session handler needs a request.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function handlerNeedsRequest()
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        return $instance->handlerNeedsRequest();
-        }
-        
-        /**
-         * Set the request on the handler instance.
-         *
-         * @param \Illuminate\Http\Request $request
-         * @return void 
-         * @static 
-         */ 
-        public static function setRequestOnHandler($request)
-        {
-                        /** @var \Illuminate\Session\Store $instance */
-                        $instance->setRequestOnHandler($request);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Filesystem\FilesystemManager
-     */ 
-    class Storage {
-        
-        /**
-         * Get a filesystem instance.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function drive($name = null)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->drive($name);
-        }
-        
-        /**
-         * Get a filesystem instance.
-         *
-         * @param string|null $name
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function disk($name = null)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->disk($name);
-        }
-        
-        /**
-         * Get a default cloud filesystem instance.
-         *
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function cloud()
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->cloud();
-        }
-        
-        /**
-         * Create an instance of the local driver.
-         *
-         * @param array $config
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function createLocalDriver($config)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->createLocalDriver($config);
-        }
-        
-        /**
-         * Create an instance of the ftp driver.
-         *
-         * @param array $config
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function createFtpDriver($config)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->createFtpDriver($config);
-        }
-        
-        /**
-         * Create an instance of the sftp driver.
-         *
-         * @param array $config
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function createSftpDriver($config)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->createSftpDriver($config);
-        }
-        
-        /**
-         * Create an instance of the Amazon S3 driver.
-         *
-         * @param array $config
-         * @return \Illuminate\Contracts\Filesystem\Cloud 
-         * @static 
-         */ 
-        public static function createS3Driver($config)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->createS3Driver($config);
-        }
-        
-        /**
-         * Create an instance of the Rackspace driver.
-         *
-         * @param array $config
-         * @return \Illuminate\Contracts\Filesystem\Cloud 
-         * @static 
-         */ 
-        public static function createRackspaceDriver($config)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->createRackspaceDriver($config);
-        }
-        
-        /**
-         * Set the given disk instance.
-         *
-         * @param string $name
-         * @param mixed $disk
-         * @return \Illuminate\Filesystem\FilesystemManager 
-         * @static 
-         */ 
-        public static function set($name, $disk)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->set($name, $disk);
-        }
-        
-        /**
-         * Get the default driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultDriver()
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->getDefaultDriver();
-        }
-        
-        /**
-         * Get the default cloud driver name.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getDefaultCloudDriver()
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->getDefaultCloudDriver();
-        }
-        
-        /**
-         * Unset the given disk instances.
-         *
-         * @param array|string $disk
-         * @return \Illuminate\Filesystem\FilesystemManager 
-         * @static 
-         */ 
-        public static function forgetDisk($disk)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->forgetDisk($disk);
-        }
-        
-        /**
-         * Register a custom driver creator Closure.
-         *
-         * @param string $driver
-         * @param \Closure $callback
-         * @return \Illuminate\Filesystem\FilesystemManager 
-         * @static 
-         */ 
-        public static function extend($driver, $callback)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
-                        return $instance->extend($driver, $callback);
-        }
-        
-        /**
-         * Assert that the given file exists.
-         *
-         * @param string|array $path
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function assertExists($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->assertExists($path);
-        }
-        
-        /**
-         * Assert that the given file does not exist.
-         *
-         * @param string|array $path
-         * @return \Illuminate\Filesystem\FilesystemAdapter 
-         * @static 
-         */ 
-        public static function assertMissing($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->assertMissing($path);
-        }
-        
-        /**
-         * Determine if a file exists.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function exists($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->exists($path);
-        }
-        
-        /**
-         * Get the full path for the file at the given "short" path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function path($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->path($path);
-        }
-        
-        /**
-         * Get the contents of a file.
-         *
-         * @param string $path
-         * @return string 
-         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
-         * @static 
-         */ 
-        public static function get($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->get($path);
-        }
-        
-        /**
-         * Create a streamed response for a given file.
-         *
-         * @param string $path
-         * @param string|null $name
-         * @param array|null $headers
-         * @param string|null $disposition
-         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
-         * @static 
-         */ 
-        public static function response($path, $name = null, $headers = [], $disposition = 'inline')
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->response($path, $name, $headers, $disposition);
-        }
-        
-        /**
-         * Create a streamed download response for a given file.
-         *
-         * @param string $path
-         * @param string|null $name
-         * @param array|null $headers
-         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
-         * @static 
-         */ 
-        public static function download($path, $name = null, $headers = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->download($path, $name, $headers);
-        }
-        
-        /**
-         * Write the contents of a file.
-         *
-         * @param string $path
-         * @param string|resource $contents
-         * @param mixed $options
-         * @return bool 
-         * @static 
-         */ 
-        public static function put($path, $contents, $options = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->put($path, $contents, $options);
-        }
-        
-        /**
-         * Store the uploaded file on the disk.
-         *
-         * @param string $path
-         * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile $file
-         * @param array $options
-         * @return string|false 
-         * @static 
-         */ 
-        public static function putFile($path, $file, $options = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->putFile($path, $file, $options);
-        }
-        
-        /**
-         * Store the uploaded file on the disk with a given name.
-         *
-         * @param string $path
-         * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile $file
-         * @param string $name
-         * @param array $options
-         * @return string|false 
-         * @static 
-         */ 
-        public static function putFileAs($path, $file, $name, $options = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->putFileAs($path, $file, $name, $options);
-        }
-        
-        /**
-         * Get the visibility for the given path.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function getVisibility($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->getVisibility($path);
-        }
-        
-        /**
-         * Set the visibility for the given path.
-         *
-         * @param string $path
-         * @param string $visibility
-         * @return bool 
-         * @static 
-         */ 
-        public static function setVisibility($path, $visibility)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->setVisibility($path, $visibility);
-        }
-        
-        /**
-         * Prepend to a file.
-         *
-         * @param string $path
-         * @param string $data
-         * @param string $separator
-         * @return bool 
-         * @static 
-         */ 
-        public static function prepend($path, $data, $separator = '')
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->prepend($path, $data, $separator);
-        }
-        
-        /**
-         * Append to a file.
-         *
-         * @param string $path
-         * @param string $data
-         * @param string $separator
-         * @return bool 
-         * @static 
-         */ 
-        public static function append($path, $data, $separator = '')
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->append($path, $data, $separator);
-        }
-        
-        /**
-         * Delete the file at a given path.
-         *
-         * @param string|array $paths
-         * @return bool 
-         * @static 
-         */ 
-        public static function delete($paths)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->delete($paths);
-        }
-        
-        /**
-         * Copy a file to a new location.
-         *
-         * @param string $from
-         * @param string $to
-         * @return bool 
-         * @static 
-         */ 
-        public static function copy($from, $to)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->copy($from, $to);
-        }
-        
-        /**
-         * Move a file to a new location.
-         *
-         * @param string $from
-         * @param string $to
-         * @return bool 
-         * @static 
-         */ 
-        public static function move($from, $to)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->move($from, $to);
-        }
-        
-        /**
-         * Get the file size of a given file.
-         *
-         * @param string $path
-         * @return int 
-         * @static 
-         */ 
-        public static function size($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->size($path);
-        }
-        
-        /**
-         * Get the mime-type of a given file.
-         *
-         * @param string $path
-         * @return string|false 
-         * @static 
-         */ 
-        public static function mimeType($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->mimeType($path);
-        }
-        
-        /**
-         * Get the file's last modification time.
-         *
-         * @param string $path
-         * @return int 
-         * @static 
-         */ 
-        public static function lastModified($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->lastModified($path);
-        }
-        
-        /**
-         * Get the URL for the file at the given path.
-         *
-         * @param string $path
-         * @return string 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function url($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->url($path);
-        }
-        
-        /**
-         * Get a resource to read the file.
-         *
-         * @param string $path
-         * @return resource|null The path resource or null on failure.
-         * @throws FileNotFoundException
-         * @static 
-         */ 
-        public static function readStream($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->readStream($path);
-        }
-        
-        /**
-         * Write a new file using a stream.
-         *
-         * @param string $path
-         * @param resource $resource
-         * @param array $options
-         * @return bool 
-         * @throws \InvalidArgumentException If $resource is not a file handle.
-         * @throws FileExistsException
-         * @static 
-         */ 
-        public static function writeStream($path, $resource, $options = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->writeStream($path, $resource, $options);
-        }
-        
-        /**
-         * Get a temporary URL for the file at the given path.
-         *
-         * @param string $path
-         * @param \DateTimeInterface $expiration
-         * @param array $options
-         * @return string 
-         * @throws \RuntimeException
-         * @static 
-         */ 
-        public static function temporaryUrl($path, $expiration, $options = [])
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->temporaryUrl($path, $expiration, $options);
-        }
-        
-        /**
-         * Get a temporary URL for the file at the given path.
-         *
-         * @param \League\Flysystem\AwsS3v3\AwsS3Adapter $adapter
-         * @param string $path
-         * @param \DateTimeInterface $expiration
-         * @param array $options
-         * @return string 
-         * @static 
-         */ 
-        public static function getAwsTemporaryUrl($adapter, $path, $expiration, $options)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->getAwsTemporaryUrl($adapter, $path, $expiration, $options);
-        }
-        
-        /**
-         * Get a temporary URL for the file at the given path.
-         *
-         * @param \League\Flysystem\Rackspace\RackspaceAdapter $adapter
-         * @param string $path
-         * @param \DateTimeInterface $expiration
-         * @param array $options
-         * @return string 
-         * @static 
-         */ 
-        public static function getRackspaceTemporaryUrl($adapter, $path, $expiration, $options)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->getRackspaceTemporaryUrl($adapter, $path, $expiration, $options);
-        }
-        
-        /**
-         * Get an array of all files in a directory.
-         *
-         * @param string|null $directory
-         * @param bool $recursive
-         * @return array 
-         * @static 
-         */ 
-        public static function files($directory = null, $recursive = false)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->files($directory, $recursive);
-        }
-        
-        /**
-         * Get all of the files from the given directory (recursive).
-         *
-         * @param string|null $directory
-         * @return array 
-         * @static 
-         */ 
-        public static function allFiles($directory = null)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->allFiles($directory);
-        }
-        
-        /**
-         * Get all of the directories within a given directory.
-         *
-         * @param string|null $directory
-         * @param bool $recursive
-         * @return array 
-         * @static 
-         */ 
-        public static function directories($directory = null, $recursive = false)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->directories($directory, $recursive);
-        }
-        
-        /**
-         * Get all (recursive) of the directories within a given directory.
-         *
-         * @param string|null $directory
-         * @return array 
-         * @static 
-         */ 
-        public static function allDirectories($directory = null)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->allDirectories($directory);
-        }
-        
-        /**
-         * Create a directory.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function makeDirectory($path)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->makeDirectory($path);
-        }
-        
-        /**
-         * Recursively delete a directory.
-         *
-         * @param string $directory
-         * @return bool 
-         * @static 
-         */ 
-        public static function deleteDirectory($directory)
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->deleteDirectory($directory);
-        }
-        
-        /**
-         * Flush the Flysystem cache.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushCache()
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        $instance->flushCache();
-        }
-        
-        /**
-         * Get the Flysystem driver.
-         *
-         * @return \League\Flysystem\FilesystemInterface 
-         * @static 
-         */ 
-        public static function getDriver()
-        {
-                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
-                        return $instance->getDriver();
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Routing\UrlGenerator
-     */ 
-    class URL {
-        
-        /**
-         * Get the full URL for the current request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function full()
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->full();
-        }
-        
-        /**
-         * Get the current URL for the request.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function current()
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->current();
-        }
-        
-        /**
-         * Get the URL for the previous request.
-         *
-         * @param mixed $fallback
-         * @return string 
-         * @static 
-         */ 
-        public static function previous($fallback = false)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->previous($fallback);
-        }
-        
-        /**
-         * Generate an absolute URL to the given path.
-         *
-         * @param string $path
-         * @param mixed $extra
-         * @param bool|null $secure
-         * @return string 
-         * @static 
-         */ 
-        public static function to($path, $extra = [], $secure = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->to($path, $extra, $secure);
-        }
-        
-        /**
-         * Generate a secure, absolute URL to the given path.
-         *
-         * @param string $path
-         * @param array $parameters
-         * @return string 
-         * @static 
-         */ 
-        public static function secure($path, $parameters = [])
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->secure($path, $parameters);
-        }
-        
-        /**
-         * Generate the URL to an application asset.
-         *
-         * @param string $path
-         * @param bool|null $secure
-         * @return string 
-         * @static 
-         */ 
-        public static function asset($path, $secure = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->asset($path, $secure);
-        }
-        
-        /**
-         * Generate the URL to a secure asset.
-         *
-         * @param string $path
-         * @return string 
-         * @static 
-         */ 
-        public static function secureAsset($path)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->secureAsset($path);
-        }
-        
-        /**
-         * Generate the URL to an asset from a custom root domain such as CDN, etc.
-         *
-         * @param string $root
-         * @param string $path
-         * @param bool|null $secure
-         * @return string 
-         * @static 
-         */ 
-        public static function assetFrom($root, $path, $secure = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->assetFrom($root, $path, $secure);
-        }
-        
-        /**
-         * Get the default scheme for a raw URL.
-         *
-         * @param bool|null $secure
-         * @return string 
-         * @static 
-         */ 
-        public static function formatScheme($secure = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->formatScheme($secure);
-        }
-        
-        /**
-         * Create a signed route URL for a named route.
-         *
-         * @param string $name
-         * @param array $parameters
-         * @param \DateTimeInterface|\DateInterval|int|null $expiration
-         * @param bool $absolute
-         * @return string 
-         * @static 
-         */ 
-        public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->signedRoute($name, $parameters, $expiration, $absolute);
-        }
-        
-        /**
-         * Create a temporary signed route URL for a named route.
-         *
-         * @param string $name
-         * @param \DateTimeInterface|\DateInterval|int $expiration
-         * @param array $parameters
-         * @param bool $absolute
-         * @return string 
-         * @static 
-         */ 
-        public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);
-        }
-        
-        /**
-         * Determine if the given request has a valid signature.
-         *
-         * @param \Illuminate\Http\Request $request
-         * @param bool $absolute
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasValidSignature($request, $absolute = true)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->hasValidSignature($request, $absolute);
-        }
-        
-        /**
-         * Get the URL to a named route.
-         *
-         * @param string $name
-         * @param mixed $parameters
-         * @param bool $absolute
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function route($name, $parameters = [], $absolute = true)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->route($name, $parameters, $absolute);
-        }
-        
-        /**
-         * Get the URL to a controller action.
-         *
-         * @param string|array $action
-         * @param mixed $parameters
-         * @param bool $absolute
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function action($action, $parameters = [], $absolute = true)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->action($action, $parameters, $absolute);
-        }
-        
-        /**
-         * Format the array of URL parameters.
-         *
-         * @param mixed|array $parameters
-         * @return array 
-         * @static 
-         */ 
-        public static function formatParameters($parameters)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->formatParameters($parameters);
-        }
-        
-        /**
-         * Get the base URL for the request.
-         *
-         * @param string $scheme
-         * @param string|null $root
-         * @return string 
-         * @static 
-         */ 
-        public static function formatRoot($scheme, $root = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->formatRoot($scheme, $root);
-        }
-        
-        /**
-         * Format the given URL segments into a single URL.
-         *
-         * @param string $root
-         * @param string $path
-         * @param \Illuminate\Routing\Route|null $route
-         * @return string 
-         * @static 
-         */ 
-        public static function format($root, $path, $route = null)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->format($root, $path, $route);
-        }
-        
-        /**
-         * Determine if the given path is a valid URL.
-         *
-         * @param string $path
-         * @return bool 
-         * @static 
-         */ 
-        public static function isValidUrl($path)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->isValidUrl($path);
-        }
-        
-        /**
-         * Set the default named parameters used by the URL generator.
-         *
-         * @param array $defaults
-         * @return void 
-         * @static 
-         */ 
-        public static function defaults($defaults)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        $instance->defaults($defaults);
-        }
-        
-        /**
-         * Get the default named parameters used by the URL generator.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDefaultParameters()
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->getDefaultParameters();
-        }
-        
-        /**
-         * Force the scheme for URLs.
-         *
-         * @param string $scheme
-         * @return void 
-         * @static 
-         */ 
-        public static function forceScheme($scheme)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        $instance->forceScheme($scheme);
-        }
-        
-        /**
-         * Set the forced root URL.
-         *
-         * @param string $root
-         * @return void 
-         * @static 
-         */ 
-        public static function forceRootUrl($root)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        $instance->forceRootUrl($root);
-        }
-        
-        /**
-         * Set a callback to be used to format the host of generated URLs.
-         *
-         * @param \Closure $callback
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function formatHostUsing($callback)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->formatHostUsing($callback);
-        }
-        
-        /**
-         * Set a callback to be used to format the path of generated URLs.
-         *
-         * @param \Closure $callback
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function formatPathUsing($callback)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->formatPathUsing($callback);
-        }
-        
-        /**
-         * Get the path formatter being used by the URL generator.
-         *
-         * @return \Closure 
-         * @static 
-         */ 
-        public static function pathFormatter()
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->pathFormatter();
-        }
-        
-        /**
-         * Get the request instance.
-         *
-         * @return \Illuminate\Http\Request 
-         * @static 
-         */ 
-        public static function getRequest()
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->getRequest();
-        }
-        
-        /**
-         * Set the current request instance.
-         *
-         * @param \Illuminate\Http\Request $request
-         * @return void 
-         * @static 
-         */ 
-        public static function setRequest($request)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        $instance->setRequest($request);
-        }
-        
-        /**
-         * Set the route collection.
-         *
-         * @param \Illuminate\Routing\RouteCollection $routes
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function setRoutes($routes)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->setRoutes($routes);
-        }
-        
-        /**
-         * Set the session resolver for the generator.
-         *
-         * @param callable $sessionResolver
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function setSessionResolver($sessionResolver)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->setSessionResolver($sessionResolver);
-        }
-        
-        /**
-         * Set the encryption key resolver.
-         *
-         * @param callable $keyResolver
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function setKeyResolver($keyResolver)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->setKeyResolver($keyResolver);
-        }
-        
-        /**
-         * Set the root controller namespace.
-         *
-         * @param string $rootNamespace
-         * @return \Illuminate\Routing\UrlGenerator 
-         * @static 
-         */ 
-        public static function setRootControllerNamespace($rootNamespace)
-        {
-                        /** @var \Illuminate\Routing\UrlGenerator $instance */
-                        return $instance->setRootControllerNamespace($rootNamespace);
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\Routing\UrlGenerator::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\Routing\UrlGenerator::hasMacro($name);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\Validation\Factory
-     */ 
-    class Validator {
-        
-        /**
-         * Create a new Validator instance.
-         *
-         * @param array $data
-         * @param array $rules
-         * @param array $messages
-         * @param array $customAttributes
-         * @return \Illuminate\Validation\Validator 
-         * @static 
-         */ 
-        public static function make($data, $rules, $messages = [], $customAttributes = [])
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        return $instance->make($data, $rules, $messages, $customAttributes);
-        }
-        
-        /**
-         * Validate the given data against the provided rules.
-         *
-         * @param array $data
-         * @param array $rules
-         * @param array $messages
-         * @param array $customAttributes
-         * @return array 
-         * @throws \Illuminate\Validation\ValidationException
-         * @static 
-         */ 
-        public static function validate($data, $rules, $messages = [], $customAttributes = [])
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        return $instance->validate($data, $rules, $messages, $customAttributes);
-        }
-        
-        /**
-         * Register a custom validator extension.
-         *
-         * @param string $rule
-         * @param \Closure|string $extension
-         * @param string|null $message
-         * @return void 
-         * @static 
-         */ 
-        public static function extend($rule, $extension, $message = null)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->extend($rule, $extension, $message);
-        }
-        
-        /**
-         * Register a custom implicit validator extension.
-         *
-         * @param string $rule
-         * @param \Closure|string $extension
-         * @param string|null $message
-         * @return void 
-         * @static 
-         */ 
-        public static function extendImplicit($rule, $extension, $message = null)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->extendImplicit($rule, $extension, $message);
-        }
-        
-        /**
-         * Register a custom dependent validator extension.
-         *
-         * @param string $rule
-         * @param \Closure|string $extension
-         * @param string|null $message
-         * @return void 
-         * @static 
-         */ 
-        public static function extendDependent($rule, $extension, $message = null)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->extendDependent($rule, $extension, $message);
-        }
-        
-        /**
-         * Register a custom validator message replacer.
-         *
-         * @param string $rule
-         * @param \Closure|string $replacer
-         * @return void 
-         * @static 
-         */ 
-        public static function replacer($rule, $replacer)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->replacer($rule, $replacer);
-        }
-        
-        /**
-         * Set the Validator instance resolver.
-         *
-         * @param \Closure $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function resolver($resolver)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->resolver($resolver);
-        }
-        
-        /**
-         * Get the Translator implementation.
-         *
-         * @return \Illuminate\Contracts\Translation\Translator 
-         * @static 
-         */ 
-        public static function getTranslator()
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        return $instance->getTranslator();
-        }
-        
-        /**
-         * Get the Presence Verifier implementation.
-         *
-         * @return \Illuminate\Validation\PresenceVerifierInterface 
-         * @static 
-         */ 
-        public static function getPresenceVerifier()
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        return $instance->getPresenceVerifier();
-        }
-        
-        /**
-         * Set the Presence Verifier implementation.
-         *
-         * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier
-         * @return void 
-         * @static 
-         */ 
-        public static function setPresenceVerifier($presenceVerifier)
-        {
-                        /** @var \Illuminate\Validation\Factory $instance */
-                        $instance->setPresenceVerifier($presenceVerifier);
-        }
-         
-    }
-
-    /**
-     * 
-     *
-     * @see \Illuminate\View\Factory
-     */ 
-    class View {
-        
-        /**
-         * Get the evaluated view contents for the given view.
-         *
-         * @param string $path
-         * @param \Illuminate\Contracts\Support\Arrayable|array $data
-         * @param array $mergeData
-         * @return \Illuminate\Contracts\View\View 
-         * @static 
-         */ 
-        public static function file($path, $data = [], $mergeData = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->file($path, $data, $mergeData);
-        }
-        
-        /**
-         * Get the evaluated view contents for the given view.
-         *
-         * @param string $view
-         * @param \Illuminate\Contracts\Support\Arrayable|array $data
-         * @param array $mergeData
-         * @return \Illuminate\Contracts\View\View 
-         * @static 
-         */ 
-        public static function make($view, $data = [], $mergeData = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->make($view, $data, $mergeData);
-        }
-        
-        /**
-         * Get the first view that actually exists from the given list.
-         *
-         * @param array $views
-         * @param \Illuminate\Contracts\Support\Arrayable|array $data
-         * @param array $mergeData
-         * @return \Illuminate\Contracts\View\View 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function first($views, $data = [], $mergeData = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->first($views, $data, $mergeData);
-        }
-        
-        /**
-         * Get the rendered content of the view based on a given condition.
-         *
-         * @param bool $condition
-         * @param string $view
-         * @param \Illuminate\Contracts\Support\Arrayable|array $data
-         * @param array $mergeData
-         * @return string 
-         * @static 
-         */ 
-        public static function renderWhen($condition, $view, $data = [], $mergeData = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->renderWhen($condition, $view, $data, $mergeData);
-        }
-        
-        /**
-         * Get the rendered contents of a partial from a loop.
-         *
-         * @param string $view
-         * @param array $data
-         * @param string $iterator
-         * @param string $empty
-         * @return string 
-         * @static 
-         */ 
-        public static function renderEach($view, $data, $iterator, $empty = 'raw|')
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->renderEach($view, $data, $iterator, $empty);
-        }
-        
-        /**
-         * Determine if a given view exists.
-         *
-         * @param string $view
-         * @return bool 
-         * @static 
-         */ 
-        public static function exists($view)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->exists($view);
-        }
-        
-        /**
-         * Get the appropriate view engine for the given path.
-         *
-         * @param string $path
-         * @return \Illuminate\Contracts\View\Engine 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function getEngineFromPath($path)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getEngineFromPath($path);
-        }
-        
-        /**
-         * Add a piece of shared data to the environment.
-         *
-         * @param array|string $key
-         * @param mixed|null $value
-         * @return mixed 
-         * @static 
-         */ 
-        public static function share($key, $value = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->share($key, $value);
-        }
-        
-        /**
-         * Increment the rendering counter.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function incrementRender()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->incrementRender();
-        }
-        
-        /**
-         * Decrement the rendering counter.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function decrementRender()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->decrementRender();
-        }
-        
-        /**
-         * Check if there are no active render operations.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function doneRendering()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->doneRendering();
-        }
-        
-        /**
-         * Add a location to the array of view locations.
-         *
-         * @param string $location
-         * @return void 
-         * @static 
-         */ 
-        public static function addLocation($location)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->addLocation($location);
-        }
-        
-        /**
-         * Add a new namespace to the loader.
-         *
-         * @param string $namespace
-         * @param string|array $hints
-         * @return \Illuminate\View\Factory 
-         * @static 
-         */ 
-        public static function addNamespace($namespace, $hints)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->addNamespace($namespace, $hints);
-        }
-        
-        /**
-         * Prepend a new namespace to the loader.
-         *
-         * @param string $namespace
-         * @param string|array $hints
-         * @return \Illuminate\View\Factory 
-         * @static 
-         */ 
-        public static function prependNamespace($namespace, $hints)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->prependNamespace($namespace, $hints);
-        }
-        
-        /**
-         * Replace the namespace hints for the given namespace.
-         *
-         * @param string $namespace
-         * @param string|array $hints
-         * @return \Illuminate\View\Factory 
-         * @static 
-         */ 
-        public static function replaceNamespace($namespace, $hints)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->replaceNamespace($namespace, $hints);
-        }
-        
-        /**
-         * Register a valid view extension and its engine.
-         *
-         * @param string $extension
-         * @param string $engine
-         * @param \Closure|null $resolver
-         * @return void 
-         * @static 
-         */ 
-        public static function addExtension($extension, $engine, $resolver = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->addExtension($extension, $engine, $resolver);
-        }
-        
-        /**
-         * Flush all of the factory state like sections and stacks.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushState()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->flushState();
-        }
-        
-        /**
-         * Flush all of the section contents if done rendering.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushStateIfDoneRendering()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->flushStateIfDoneRendering();
-        }
-        
-        /**
-         * Get the extension to engine bindings.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getExtensions()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getExtensions();
-        }
-        
-        /**
-         * Get the engine resolver instance.
-         *
-         * @return \Illuminate\View\Engines\EngineResolver 
-         * @static 
-         */ 
-        public static function getEngineResolver()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getEngineResolver();
-        }
-        
-        /**
-         * Get the view finder instance.
-         *
-         * @return \Illuminate\View\ViewFinderInterface 
-         * @static 
-         */ 
-        public static function getFinder()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getFinder();
-        }
-        
-        /**
-         * Set the view finder instance.
-         *
-         * @param \Illuminate\View\ViewFinderInterface $finder
-         * @return void 
-         * @static 
-         */ 
-        public static function setFinder($finder)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->setFinder($finder);
-        }
-        
-        /**
-         * Flush the cache of views located by the finder.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushFinderCache()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->flushFinderCache();
-        }
-        
-        /**
-         * Get the event dispatcher instance.
-         *
-         * @return \Illuminate\Contracts\Events\Dispatcher 
-         * @static 
-         */ 
-        public static function getDispatcher()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getDispatcher();
-        }
-        
-        /**
-         * Set the event dispatcher instance.
-         *
-         * @param \Illuminate\Contracts\Events\Dispatcher $events
-         * @return void 
-         * @static 
-         */ 
-        public static function setDispatcher($events)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->setDispatcher($events);
-        }
-        
-        /**
-         * Get the IoC container instance.
-         *
-         * @return \Illuminate\Contracts\Container\Container 
-         * @static 
-         */ 
-        public static function getContainer()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getContainer();
-        }
-        
-        /**
-         * Set the IoC container instance.
-         *
-         * @param \Illuminate\Contracts\Container\Container $container
-         * @return void 
-         * @static 
-         */ 
-        public static function setContainer($container)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->setContainer($container);
-        }
-        
-        /**
-         * Get an item from the shared data.
-         *
-         * @param string $key
-         * @param mixed $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function shared($key, $default = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->shared($key, $default);
-        }
-        
-        /**
-         * Get all of the shared data for the environment.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getShared()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getShared();
-        }
-        
-        /**
-         * Register a custom macro.
-         *
-         * @param string $name
-         * @param object|callable $macro
-         * @return void 
-         * @static 
-         */ 
-        public static function macro($name, $macro)
-        {
-                        \Illuminate\View\Factory::macro($name, $macro);
-        }
-        
-        /**
-         * Mix another object into the class.
-         *
-         * @param object $mixin
-         * @param bool $replace
-         * @return void 
-         * @throws \ReflectionException
-         * @static 
-         */ 
-        public static function mixin($mixin, $replace = true)
-        {
-                        \Illuminate\View\Factory::mixin($mixin, $replace);
-        }
-        
-        /**
-         * Checks if macro is registered.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasMacro($name)
-        {
-                        return \Illuminate\View\Factory::hasMacro($name);
-        }
-        
-        /**
-         * Start a component rendering process.
-         *
-         * @param string $name
-         * @param array $data
-         * @return void 
-         * @static 
-         */ 
-        public static function startComponent($name, $data = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startComponent($name, $data);
-        }
-        
-        /**
-         * Get the first view that actually exists from the given list, and start a component.
-         *
-         * @param array $names
-         * @param array $data
-         * @return void 
-         * @static 
-         */ 
-        public static function startComponentFirst($names, $data = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startComponentFirst($names, $data);
-        }
-        
-        /**
-         * Render the current component.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function renderComponent()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->renderComponent();
-        }
-        
-        /**
-         * Start the slot rendering process.
-         *
-         * @param string $name
-         * @param string|null $content
-         * @return void 
-         * @static 
-         */ 
-        public static function slot($name, $content = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->slot($name, $content);
-        }
-        
-        /**
-         * Save the slot content for rendering.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function endSlot()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->endSlot();
-        }
-        
-        /**
-         * Register a view creator event.
-         *
-         * @param array|string $views
-         * @param \Closure|string $callback
-         * @return array 
-         * @static 
-         */ 
-        public static function creator($views, $callback)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->creator($views, $callback);
-        }
-        
-        /**
-         * Register multiple view composers via an array.
-         *
-         * @param array $composers
-         * @return array 
-         * @static 
-         */ 
-        public static function composers($composers)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->composers($composers);
-        }
-        
-        /**
-         * Register a view composer event.
-         *
-         * @param array|string $views
-         * @param \Closure|string $callback
-         * @return array 
-         * @static 
-         */ 
-        public static function composer($views, $callback)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->composer($views, $callback);
-        }
-        
-        /**
-         * Call the composer for a given view.
-         *
-         * @param \Illuminate\Contracts\View\View $view
-         * @return void 
-         * @static 
-         */ 
-        public static function callComposer($view)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->callComposer($view);
-        }
-        
-        /**
-         * Call the creator for a given view.
-         *
-         * @param \Illuminate\Contracts\View\View $view
-         * @return void 
-         * @static 
-         */ 
-        public static function callCreator($view)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->callCreator($view);
-        }
-        
-        /**
-         * Start injecting content into a section.
-         *
-         * @param string $section
-         * @param string|null $content
-         * @return void 
-         * @static 
-         */ 
-        public static function startSection($section, $content = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startSection($section, $content);
-        }
-        
-        /**
-         * Inject inline content into a section.
-         *
-         * @param string $section
-         * @param string $content
-         * @return void 
-         * @static 
-         */ 
-        public static function inject($section, $content)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->inject($section, $content);
-        }
-        
-        /**
-         * Stop injecting content into a section and return its contents.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function yieldSection()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->yieldSection();
-        }
-        
-        /**
-         * Stop injecting content into a section.
-         *
-         * @param bool $overwrite
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function stopSection($overwrite = false)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->stopSection($overwrite);
-        }
-        
-        /**
-         * Stop injecting content into a section and append it.
-         *
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function appendSection()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->appendSection();
-        }
-        
-        /**
-         * Get the string contents of a section.
-         *
-         * @param string $section
-         * @param string $default
-         * @return string 
-         * @static 
-         */ 
-        public static function yieldContent($section, $default = '')
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->yieldContent($section, $default);
-        }
-        
-        /**
-         * Get the parent placeholder for the current request.
-         *
-         * @param string $section
-         * @return string 
-         * @static 
-         */ 
-        public static function parentPlaceholder($section = '')
-        {
-                        return \Illuminate\View\Factory::parentPlaceholder($section);
-        }
-        
-        /**
-         * Check if section exists.
-         *
-         * @param string $name
-         * @return bool 
-         * @static 
-         */ 
-        public static function hasSection($name)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->hasSection($name);
-        }
-        
-        /**
-         * Get the contents of a section.
-         *
-         * @param string $name
-         * @param string|null $default
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getSection($name, $default = null)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getSection($name, $default);
-        }
-        
-        /**
-         * Get the entire array of sections.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getSections()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getSections();
-        }
-        
-        /**
-         * Flush all of the sections.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushSections()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->flushSections();
-        }
-        
-        /**
-         * Add new loop to the stack.
-         *
-         * @param \Countable|array $data
-         * @return void 
-         * @static 
-         */ 
-        public static function addLoop($data)
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->addLoop($data);
-        }
-        
-        /**
-         * Increment the top loop's indices.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function incrementLoopIndices()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->incrementLoopIndices();
-        }
-        
-        /**
-         * Pop a loop from the top of the loop stack.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function popLoop()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->popLoop();
-        }
-        
-        /**
-         * Get an instance of the last loop in the stack.
-         *
-         * @return \stdClass|null 
-         * @static 
-         */ 
-        public static function getLastLoop()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getLastLoop();
-        }
-        
-        /**
-         * Get the entire loop stack.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getLoopStack()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->getLoopStack();
-        }
-        
-        /**
-         * Start injecting content into a push section.
-         *
-         * @param string $section
-         * @param string $content
-         * @return void 
-         * @static 
-         */ 
-        public static function startPush($section, $content = '')
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startPush($section, $content);
-        }
-        
-        /**
-         * Stop injecting content into a push section.
-         *
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function stopPush()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->stopPush();
-        }
-        
-        /**
-         * Start prepending content into a push section.
-         *
-         * @param string $section
-         * @param string $content
-         * @return void 
-         * @static 
-         */ 
-        public static function startPrepend($section, $content = '')
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startPrepend($section, $content);
-        }
-        
-        /**
-         * Stop prepending content into a push section.
-         *
-         * @return string 
-         * @throws \InvalidArgumentException
-         * @static 
-         */ 
-        public static function stopPrepend()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->stopPrepend();
-        }
-        
-        /**
-         * Get the string contents of a push section.
-         *
-         * @param string $section
-         * @param string $default
-         * @return string 
-         * @static 
-         */ 
-        public static function yieldPushContent($section, $default = '')
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->yieldPushContent($section, $default);
-        }
-        
-        /**
-         * Flush all of the stacks.
-         *
-         * @return void 
-         * @static 
-         */ 
-        public static function flushStacks()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->flushStacks();
-        }
-        
-        /**
-         * Start a translation block.
-         *
-         * @param array $replacements
-         * @return void 
-         * @static 
-         */ 
-        public static function startTranslation($replacements = [])
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        $instance->startTranslation($replacements);
-        }
-        
-        /**
-         * Render the current translation.
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function renderTranslation()
-        {
-                        /** @var \Illuminate\View\Factory $instance */
-                        return $instance->renderTranslation();
-        }
-         
-    }
- 
-}
-
-namespace Barryvdh\Debugbar { 
-
-    /**
-     * 
-     *
-     * @method static void alert(string $message)
-     * @method static void critical(string $message)
-     * @method static void debug(string $message)
-     * @method static void emergency(string $message)
-     * @method static void error(string $message)
-     * @method static void info(string $message)
-     * @method static void log(string $message)
-     * @method static void notice(string $message)
-     * @method static void warning(string $message)
-     * @see \Barryvdh\Debugbar\LaravelDebugbar
-     */ 
-    class Facade {
-        
-        /**
-         * Enable the Debugbar and boot, if not already booted.
-         *
-         * @static 
-         */ 
-        public static function enable()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->enable();
-        }
-        
-        /**
-         * Boot the debugbar (add collectors, renderer and listener)
-         *
-         * @static 
-         */ 
-        public static function boot()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->boot();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function shouldCollect($name, $default = false)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->shouldCollect($name, $default);
-        }
-        
-        /**
-         * Adds a data collector
-         *
-         * @param \Barryvdh\Debugbar\DataCollectorInterface $collector
-         * @throws DebugBarException
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function addCollector($collector)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->addCollector($collector);
-        }
-        
-        /**
-         * Handle silenced errors
-         *
-         * @param $level
-         * @param $message
-         * @param string $file
-         * @param int $line
-         * @param array $context
-         * @throws \ErrorException
-         * @static 
-         */ 
-        public static function handleError($level, $message, $file = '', $line = 0, $context = [])
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->handleError($level, $message, $file, $line, $context);
-        }
-        
-        /**
-         * Starts a measure
-         *
-         * @param string $name Internal name, used to stop the measure
-         * @param string $label Public name
-         * @static 
-         */ 
-        public static function startMeasure($name, $label = null)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->startMeasure($name, $label);
-        }
-        
-        /**
-         * Stops a measure
-         *
-         * @param string $name
-         * @static 
-         */ 
-        public static function stopMeasure($name)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->stopMeasure($name);
-        }
-        
-        /**
-         * Adds an exception to be profiled in the debug bar
-         *
-         * @param \Exception $e
-         * @deprecated in favor of addThrowable
-         * @static 
-         */ 
-        public static function addException($e)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->addException($e);
-        }
-        
-        /**
-         * Adds an exception to be profiled in the debug bar
-         *
-         * @param \Exception $e
-         * @static 
-         */ 
-        public static function addThrowable($e)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->addThrowable($e);
-        }
-        
-        /**
-         * Returns a JavascriptRenderer for this instance
-         *
-         * @param string $baseUrl
-         * @param string $basePathng
-         * @return \Barryvdh\Debugbar\JavascriptRenderer 
-         * @static 
-         */ 
-        public static function getJavascriptRenderer($baseUrl = null, $basePath = null)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getJavascriptRenderer($baseUrl, $basePath);
-        }
-        
-        /**
-         * Modify the response and inject the debugbar (or data in headers)
-         *
-         * @param \Symfony\Component\HttpFoundation\Request $request
-         * @param \Symfony\Component\HttpFoundation\Response $response
-         * @return \Symfony\Component\HttpFoundation\Response 
-         * @static 
-         */ 
-        public static function modifyResponse($request, $response)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->modifyResponse($request, $response);
-        }
-        
-        /**
-         * Check if the Debugbar is enabled
-         *
-         * @return boolean 
-         * @static 
-         */ 
-        public static function isEnabled()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->isEnabled();
-        }
-        
-        /**
-         * Collects the data from the collectors
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function collect()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->collect();
-        }
-        
-        /**
-         * Injects the web debug toolbar into the given Response.
-         *
-         * @param \Symfony\Component\HttpFoundation\Response $response A Response instance
-         * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php
-         * @static 
-         */ 
-        public static function injectDebugbar($response)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->injectDebugbar($response);
-        }
-        
-        /**
-         * Disable the Debugbar
-         *
-         * @static 
-         */ 
-        public static function disable()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->disable();
-        }
-        
-        /**
-         * Adds a measure
-         *
-         * @param string $label
-         * @param float $start
-         * @param float $end
-         * @static 
-         */ 
-        public static function addMeasure($label, $start, $end)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->addMeasure($label, $start, $end);
-        }
-        
-        /**
-         * Utility function to measure the execution of a Closure
-         *
-         * @param string $label
-         * @param \Closure $closure
-         * @static 
-         */ 
-        public static function measure($label, $closure)
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->measure($label, $closure);
-        }
-        
-        /**
-         * Collect data in a CLI request
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function collectConsole()
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->collectConsole();
-        }
-        
-        /**
-         * Adds a message to the MessagesCollector
-         * 
-         * A message can be anything from an object to a string
-         *
-         * @param mixed $message
-         * @param string $label
-         * @static 
-         */ 
-        public static function addMessage($message, $label = 'info')
-        {
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->addMessage($message, $label);
-        }
-        
-        /**
-         * Checks if a data collector has been added
-         *
-         * @param string $name
-         * @return boolean 
-         * @static 
-         */ 
-        public static function hasCollector($name)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->hasCollector($name);
-        }
-        
-        /**
-         * Returns a data collector
-         *
-         * @param string $name
-         * @return \DebugBar\DataCollectorInterface 
-         * @throws DebugBarException
-         * @static 
-         */ 
-        public static function getCollector($name)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getCollector($name);
-        }
-        
-        /**
-         * Returns an array of all data collectors
-         *
-         * @return \DebugBar\array[DataCollectorInterface] 
-         * @static 
-         */ 
-        public static function getCollectors()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getCollectors();
-        }
-        
-        /**
-         * Sets the request id generator
-         *
-         * @param \DebugBar\RequestIdGeneratorInterface $generator
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function setRequestIdGenerator($generator)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->setRequestIdGenerator($generator);
-        }
-        
-        /**
-         * 
-         *
-         * @return \DebugBar\RequestIdGeneratorInterface 
-         * @static 
-         */ 
-        public static function getRequestIdGenerator()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getRequestIdGenerator();
-        }
-        
-        /**
-         * Returns the id of the current request
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getCurrentRequestId()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getCurrentRequestId();
-        }
-        
-        /**
-         * Sets the storage backend to use to store the collected data
-         *
-         * @param \DebugBar\StorageInterface $storage
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function setStorage($storage = null)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->setStorage($storage);
-        }
-        
-        /**
-         * 
-         *
-         * @return \DebugBar\StorageInterface 
-         * @static 
-         */ 
-        public static function getStorage()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getStorage();
-        }
-        
-        /**
-         * Checks if the data will be persisted
-         *
-         * @return boolean 
-         * @static 
-         */ 
-        public static function isDataPersisted()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->isDataPersisted();
-        }
-        
-        /**
-         * Sets the HTTP driver
-         *
-         * @param \DebugBar\HttpDriverInterface $driver
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function setHttpDriver($driver)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->setHttpDriver($driver);
-        }
-        
-        /**
-         * Returns the HTTP driver
-         * 
-         * If no http driver where defined, a PhpHttpDriver is automatically created
-         *
-         * @return \DebugBar\HttpDriverInterface 
-         * @static 
-         */ 
-        public static function getHttpDriver()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getHttpDriver();
-        }
-        
-        /**
-         * Returns collected data
-         * 
-         * Will collect the data if none have been collected yet
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getData()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getData();
-        }
-        
-        /**
-         * Returns an array of HTTP headers containing the data
-         *
-         * @param string $headerName
-         * @param integer $maxHeaderLength
-         * @return array 
-         * @static 
-         */ 
-        public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);
-        }
-        
-        /**
-         * Sends the data through the HTTP headers
-         *
-         * @param bool $useOpenHandler
-         * @param string $headerName
-         * @param integer $maxHeaderLength
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);
-        }
-        
-        /**
-         * Stacks the data in the session for later rendering
-         *
-         * @static 
-         */ 
-        public static function stackData()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->stackData();
-        }
-        
-        /**
-         * Checks if there is stacked data in the session
-         *
-         * @return boolean 
-         * @static 
-         */ 
-        public static function hasStackedData()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->hasStackedData();
-        }
-        
-        /**
-         * Returns the data stacked in the session
-         *
-         * @param boolean $delete Whether to delete the data in the session
-         * @return array 
-         * @static 
-         */ 
-        public static function getStackedData($delete = true)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getStackedData($delete);
-        }
-        
-        /**
-         * Sets the key to use in the $_SESSION array
-         *
-         * @param string $ns
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function setStackDataSessionNamespace($ns)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->setStackDataSessionNamespace($ns);
-        }
-        
-        /**
-         * Returns the key used in the $_SESSION array
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getStackDataSessionNamespace()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->getStackDataSessionNamespace();
-        }
-        
-        /**
-         * Sets whether to only use the session to store stacked data even
-         * if a storage is enabled
-         *
-         * @param boolean $enabled
-         * @return \Barryvdh\Debugbar\LaravelDebugbar 
-         * @static 
-         */ 
-        public static function setStackAlwaysUseSessionStorage($enabled = true)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->setStackAlwaysUseSessionStorage($enabled);
-        }
-        
-        /**
-         * Checks if the session is always used to store stacked data
-         * even if a storage is enabled
-         *
-         * @return boolean 
-         * @static 
-         */ 
-        public static function isStackAlwaysUseSessionStorage()
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->isStackAlwaysUseSessionStorage();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function offsetSet($key, $value)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->offsetSet($key, $value);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function offsetGet($key)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->offsetGet($key);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function offsetExists($key)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->offsetExists($key);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function offsetUnset($key)
-        {
-            //Method inherited from \DebugBar\DebugBar            
-                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
-                        return $instance->offsetUnset($key);
-        }
-         
-    }
- 
-}
-
-namespace SSRPanel\HCaptcha\Facades { 
-
-    /**
-     * 
-     *
-     */ 
-    class HCaptcha {
-        
-        /**
-         * Render HTML captcha.
-         *
-         * @param array $attributes
-         * @return string 
-         * @static 
-         */ 
-        public static function display($attributes = [])
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->display($attributes);
-        }
-        
-        /**
-         * 
-         *
-         * @see display()
-         * @static 
-         */ 
-        public static function displayWidget($attributes = [])
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->displayWidget($attributes);
-        }
-        
-        /**
-         * Display a Invisible hCaptcha by embedding a callback into a form submit button.
-         *
-         * @param string $formIdentifier the html ID of the form that should be submitted.
-         * @param string $text the text inside the form button
-         * @param array $attributes array of additional html elements
-         * @return string 
-         * @static 
-         */ 
-        public static function displaySubmit($formIdentifier, $text = 'submit', $attributes = [])
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->displaySubmit($formIdentifier, $text, $attributes);
-        }
-        
-        /**
-         * Render js source
-         *
-         * @param null $lang
-         * @param bool $callback
-         * @param string $onLoadClass
-         * @return string 
-         * @static 
-         */ 
-        public static function renderJs($lang = null, $callback = false, $onLoadClass = 'onloadCallBack')
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->renderJs($lang, $callback, $onLoadClass);
-        }
-        
-        /**
-         * Verify no-captcha response.
-         *
-         * @param string $response
-         * @param string $clientIp
-         * @return bool 
-         * @static 
-         */ 
-        public static function verifyResponse($response, $clientIp = null)
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->verifyResponse($response, $clientIp);
-        }
-        
-        /**
-         * Verify no-captcha response by Symfony Request.
-         *
-         * @param \Request $request
-         * @return bool 
-         * @static 
-         */ 
-        public static function verifyRequest($request)
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->verifyRequest($request);
-        }
-        
-        /**
-         * Get hCaptcha js link.
-         *
-         * @param string $lang
-         * @param boolean $callback
-         * @param string $onLoadClass
-         * @return string 
-         * @static 
-         */ 
-        public static function getJsLink($lang = null, $callback = false, $onLoadClass = 'onloadCallBack')
-        {
-                        /** @var \SSRPanel\HCaptcha\HCaptcha $instance */
-                        return $instance->getJsLink($lang, $callback, $onLoadClass);
-        }
-         
-    }
- 
-}
-
-namespace Mews\Captcha\Facades { 
-
-    /**
-     * 
-     *
-     * @see \Mews\Captcha\Captcha
-     */ 
-    class Captcha {
-        
-        /**
-         * Create captcha image
-         *
-         * @param string $config
-         * @param bool $api
-         * @return array|mixed 
-         * @throws Exception
-         * @static 
-         */ 
-        public static function create($config = 'default', $api = false)
-        {
-                        /** @var \Mews\Captcha\Captcha $instance */
-                        return $instance->create($config, $api);
-        }
-        
-        /**
-         * Captcha check
-         *
-         * @param string $value
-         * @return bool 
-         * @static 
-         */ 
-        public static function check($value)
-        {
-                        /** @var \Mews\Captcha\Captcha $instance */
-                        return $instance->check($value);
-        }
-        
-        /**
-         * Captcha check
-         *
-         * @param string $value
-         * @param string $key
-         * @return bool 
-         * @static 
-         */ 
-        public static function check_api($value, $key)
-        {
-                        /** @var \Mews\Captcha\Captcha $instance */
-                        return $instance->check_api($value, $key);
-        }
-        
-        /**
-         * Generate captcha image source
-         *
-         * @param string $config
-         * @return string 
-         * @static 
-         */ 
-        public static function src($config = 'default')
-        {
-                        /** @var \Mews\Captcha\Captcha $instance */
-                        return $instance->src($config);
-        }
-        
-        /**
-         * Generate captcha image html tag
-         *
-         * @param string $config
-         * @param array $attrs $attrs -> HTML attributes supplied to the image tag where key is the attribute and the value is the attribute value
-         * @return string 
-         * @static 
-         */ 
-        public static function img($config = 'default', $attrs = [])
-        {
-                        /** @var \Mews\Captcha\Captcha $instance */
-                        return $instance->img($config, $attrs);
-        }
-         
-    }
- 
-}
-
-namespace Jenssegers\Agent\Facades { 
-
-    /**
-     * 
-     *
-     */ 
-    class Agent {
-        
-        /**
-         * Get all detection rules. These rules include the additional
-         * platforms and browsers and utilities.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getDetectionRulesExtended()
-        {
-                        return \Jenssegers\Agent\Agent::getDetectionRulesExtended();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getRules()
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getRules();
-        }
-        
-        /**
-         * 
-         *
-         * @return \Jenssegers\Agent\CrawlerDetect 
-         * @static 
-         */ 
-        public static function getCrawlerDetect()
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getCrawlerDetect();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getBrowsers()
-        {
-                        return \Jenssegers\Agent\Agent::getBrowsers();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getOperatingSystems()
-        {
-                        return \Jenssegers\Agent\Agent::getOperatingSystems();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getPlatforms()
-        {
-                        return \Jenssegers\Agent\Agent::getPlatforms();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getDesktopDevices()
-        {
-                        return \Jenssegers\Agent\Agent::getDesktopDevices();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getProperties()
-        {
-                        return \Jenssegers\Agent\Agent::getProperties();
-        }
-        
-        /**
-         * Get accept languages.
-         *
-         * @param string $acceptLanguage
-         * @return array 
-         * @static 
-         */ 
-        public static function languages($acceptLanguage = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->languages($acceptLanguage);
-        }
-        
-        /**
-         * Get the browser name.
-         *
-         * @param string|null $userAgent
-         * @return string 
-         * @static 
-         */ 
-        public static function browser($userAgent = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->browser($userAgent);
-        }
-        
-        /**
-         * Get the platform name.
-         *
-         * @param string|null $userAgent
-         * @return string 
-         * @static 
-         */ 
-        public static function platform($userAgent = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->platform($userAgent);
-        }
-        
-        /**
-         * Get the device name.
-         *
-         * @param string|null $userAgent
-         * @return string 
-         * @static 
-         */ 
-        public static function device($userAgent = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->device($userAgent);
-        }
-        
-        /**
-         * Check if the device is a desktop computer.
-         *
-         * @param string|null $userAgent deprecated
-         * @param array $httpHeaders deprecated
-         * @return bool 
-         * @static 
-         */ 
-        public static function isDesktop($userAgent = null, $httpHeaders = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->isDesktop($userAgent, $httpHeaders);
-        }
-        
-        /**
-         * Check if the device is a mobile phone.
-         *
-         * @param string|null $userAgent deprecated
-         * @param array $httpHeaders deprecated
-         * @return bool 
-         * @static 
-         */ 
-        public static function isPhone($userAgent = null, $httpHeaders = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->isPhone($userAgent, $httpHeaders);
-        }
-        
-        /**
-         * Get the robot name.
-         *
-         * @param string|null $userAgent
-         * @return string|bool 
-         * @static 
-         */ 
-        public static function robot($userAgent = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->robot($userAgent);
-        }
-        
-        /**
-         * Check if device is a robot.
-         *
-         * @param string|null $userAgent
-         * @return bool 
-         * @static 
-         */ 
-        public static function isRobot($userAgent = null)
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->isRobot($userAgent);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function version($propertyName, $type = 'text')
-        {
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->version($propertyName, $type);
-        }
-        
-        /**
-         * Get the current script version.
-         * 
-         * This is useful for the demo.php file,
-         * so people can check on what version they are testing
-         * for mobile devices.
-         *
-         * @return string The version number in semantic version format.
-         * @static 
-         */ 
-        public static function getScriptVersion()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getScriptVersion();
-        }
-        
-        /**
-         * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
-         *
-         * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
-         *                           the headers. The default null is left for backwards compatibility.
-         * @static 
-         */ 
-        public static function setHttpHeaders($httpHeaders = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->setHttpHeaders($httpHeaders);
-        }
-        
-        /**
-         * Retrieves the HTTP headers.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getHttpHeaders()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getHttpHeaders();
-        }
-        
-        /**
-         * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
-         * 
-         * Simply null is returned.
-         *
-         * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
-         *                       "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
-         *                       all-caps, HTTP_ prefixed, underscore seperated awesomeness.
-         * @return string|null The value of the header.
-         * @static 
-         */ 
-        public static function getHttpHeader($header)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getHttpHeader($header);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getMobileHeaders()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getMobileHeaders();
-        }
-        
-        /**
-         * Get all possible HTTP headers that
-         * can contain the User-Agent string.
-         *
-         * @return array List of HTTP headers.
-         * @static 
-         */ 
-        public static function getUaHttpHeaders()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getUaHttpHeaders();
-        }
-        
-        /**
-         * Set CloudFront headers
-         * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
-         *
-         * @param array $cfHeaders List of HTTP headers
-         * @return boolean If there were CloudFront headers to be set
-         * @static 
-         */ 
-        public static function setCfHeaders($cfHeaders = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->setCfHeaders($cfHeaders);
-        }
-        
-        /**
-         * Retrieves the cloudfront headers.
-         *
-         * @return array 
-         * @static 
-         */ 
-        public static function getCfHeaders()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getCfHeaders();
-        }
-        
-        /**
-         * Set the User-Agent to be used.
-         *
-         * @param string $userAgent The user agent string to set.
-         * @return string|null 
-         * @static 
-         */ 
-        public static function setUserAgent($userAgent = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->setUserAgent($userAgent);
-        }
-        
-        /**
-         * Retrieve the User-Agent.
-         *
-         * @return string|null The user agent if it's set.
-         * @static 
-         */ 
-        public static function getUserAgent()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getUserAgent();
-        }
-        
-        /**
-         * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
-         * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
-         *
-         * @deprecated since version 2.6.9
-         * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
-         *                     parameter is null which will default to self::DETECTION_TYPE_MOBILE.
-         * @static 
-         */ 
-        public static function setDetectionType($type = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->setDetectionType($type);
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getMatchingRegex()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getMatchingRegex();
-        }
-        
-        /**
-         * 
-         *
-         * @static 
-         */ 
-        public static function getMatchesArray()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getMatchesArray();
-        }
-        
-        /**
-         * Retrieve the list of known phone devices.
-         *
-         * @return array List of phone devices.
-         * @static 
-         */ 
-        public static function getPhoneDevices()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getPhoneDevices();
-        }
-        
-        /**
-         * Retrieve the list of known tablet devices.
-         *
-         * @return array List of tablet devices.
-         * @static 
-         */ 
-        public static function getTabletDevices()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getTabletDevices();
-        }
-        
-        /**
-         * Alias for getBrowsers() method.
-         *
-         * @return array List of user agents.
-         * @static 
-         */ 
-        public static function getUserAgents()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getUserAgents();
-        }
-        
-        /**
-         * Retrieve the list of known utilities.
-         *
-         * @return array List of utilities.
-         * @static 
-         */ 
-        public static function getUtilities()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getUtilities();
-        }
-        
-        /**
-         * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
-         *
-         * @deprecated since version 2.6.9
-         * @return array All the rules (but not extended).
-         * @static 
-         */ 
-        public static function getMobileDetectionRules()
-        {
-            //Method inherited from \Mobile_Detect            
-                        return \Jenssegers\Agent\Agent::getMobileDetectionRules();
-        }
-        
-        /**
-         * Method gets the mobile detection rules + utilities.
-         * 
-         * The reason this is separate is because utilities rules
-         * don't necessary imply mobile. This method is used inside
-         * the new $detect->is('stuff') method.
-         *
-         * @deprecated since version 2.6.9
-         * @return array All the rules + extended.
-         * @static 
-         */ 
-        public static function getMobileDetectionRulesExtended()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->getMobileDetectionRulesExtended();
-        }
-        
-        /**
-         * Check the HTTP headers for signs of mobile.
-         * 
-         * This is the fastest mobile check possible; it's used
-         * inside isMobile() method.
-         *
-         * @return bool 
-         * @static 
-         */ 
-        public static function checkHttpHeadersForMobile()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->checkHttpHeadersForMobile();
-        }
-        
-        /**
-         * Check if the device is mobile.
-         * 
-         * Returns true if any type of mobile device detected, including special ones
-         *
-         * @param null $userAgent deprecated
-         * @param null $httpHeaders deprecated
-         * @return bool 
-         * @static 
-         */ 
-        public static function isMobile($userAgent = null, $httpHeaders = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->isMobile($userAgent, $httpHeaders);
-        }
-        
-        /**
-         * Check if the device is a tablet.
-         * 
-         * Return true if any type of tablet device is detected.
-         *
-         * @param string $userAgent deprecated
-         * @param array $httpHeaders deprecated
-         * @return bool 
-         * @static 
-         */ 
-        public static function isTablet($userAgent = null, $httpHeaders = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->isTablet($userAgent, $httpHeaders);
-        }
-        
-        /**
-         * This method checks for a certain property in the
-         * userAgent.
-         *
-         * @todo : The httpHeaders part is not yet used.
-         * @param string $key
-         * @param string $userAgent deprecated
-         * @param string $httpHeaders deprecated
-         * @return bool|int|null 
-         * @static 
-         */ 
-        public static function is($key, $userAgent = null, $httpHeaders = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->is($key, $userAgent, $httpHeaders);
-        }
-        
-        /**
-         * Some detection rules are relative (not standard),
-         * because of the diversity of devices, vendors and
-         * their conventions in representing the User-Agent or
-         * the HTTP headers.
-         * 
-         * This method will be used to check custom regexes against
-         * the User-Agent string.
-         *
-         * @param $regex
-         * @param string $userAgent
-         * @return bool 
-         * @todo : search in the HTTP headers too.
-         * @static 
-         */ 
-        public static function match($regex, $userAgent = null)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->match($regex, $userAgent);
-        }
-        
-        /**
-         * Prepare the version number.
-         *
-         * @todo Remove the error supression from str_replace() call.
-         * @param string $ver The string version, like "2.6.21.2152";
-         * @return float 
-         * @static 
-         */ 
-        public static function prepareVersionNo($ver)
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->prepareVersionNo($ver);
-        }
-        
-        /**
-         * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
-         *
-         * @return string One of the self::MOBILE_GRADE_* constants.
-         * @static 
-         */ 
-        public static function mobileGrade()
-        {
-            //Method inherited from \Mobile_Detect            
-                        /** @var \Jenssegers\Agent\Agent $instance */
-                        return $instance->mobileGrade();
-        }
-         
-    }
- 
-}
-
-namespace Mews\Purifier\Facades { 
-
-    /**
-     * 
-     *
-     * @see \Mews\Purifier
-     */ 
-    class Purifier {
-        
-        /**
-         * 
-         *
-         * @param $dirty
-         * @param null $config
-         * @param \Closure|null $postCreateConfigHook
-         * @return mixed 
-         * @static 
-         */ 
-        public static function clean($dirty, $config = null, $postCreateConfigHook = null)
-        {
-                        /** @var \Mews\Purifier\Purifier $instance */
-                        return $instance->clean($dirty, $config, $postCreateConfigHook);
-        }
-        
-        /**
-         * Get HTMLPurifier instance.
-         *
-         * @return \HTMLPurifier 
-         * @static 
-         */ 
-        public static function getInstance()
-        {
-                        /** @var \Mews\Purifier\Purifier $instance */
-                        return $instance->getInstance();
-        }
-         
-    }
- 
-}
-
-namespace Misechow\Geetest { 
-
-    /**
-     * 
-     *
-     */ 
-    class Geetest {
-        
-        /**
-         * 
-         *
-         * @return string 
-         * @static 
-         */ 
-        public static function getGeetestUrl()
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->getGeetestUrl();
-        }
-        
-        /**
-         * 
-         *
-         * @param string $geetestUrl
-         * @return \Misechow\Geetest\GeetestLib 
-         * @static 
-         */ 
-        public static function setGeetestUrl($url)
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->setGeetestUrl($url);
-        }
-        
-        /**
-         * Check Geetest server is running or not.
-         *
-         * @param null $user_id
-         * @return int 
-         * @static 
-         */ 
-        public static function preProcess($param, $new_captcha = 1)
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->preProcess($param, $new_captcha);
-        }
-        
-        /**
-         * 
-         *
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getResponseStr()
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->getResponseStr();
-        }
-        
-        /**
-         * 
-         *
-         * @return mixed 
-         * @static 
-         */ 
-        public static function getResponse()
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->getResponse();
-        }
-        
-        /**
-         * Get success validate result.
-         *
-         * @param $challenge
-         * @param $validate
-         * @param $seccode
-         * @param null $user_id
-         * @return int 
-         * @static 
-         */ 
-        public static function successValidate($challenge, $validate, $seccode, $param, $json_format = 1)
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->successValidate($challenge, $validate, $seccode, $param, $json_format);
-        }
-        
-        /**
-         * Get fail result.
-         *
-         * @param $challenge
-         * @param $validate
-         * @param $seccode
-         * @return int 
-         * @static 
-         */ 
-        public static function failValidate($challenge, $validate, $seccode)
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->failValidate($challenge, $validate, $seccode);
-        }
-        
-        /**
-         * 
-         *
-         * @param string $product
-         * @static 
-         */ 
-        public static function render($product = 'float', $captchaId = 'geetest-captcha')
-        {
-                        /** @var \Misechow\Geetest\GeetestLib $instance */
-                        return $instance->render($product, $captchaId);
-        }
-         
-    }
- 
-}
-
-namespace Misechow\NoCaptcha\Facades { 
-
-    /**
-     * 
-     *
-     */ 
-    class NoCaptcha {
-        
-        /**
-         * Render HTML captcha.
-         *
-         * @param array $attributes
-         * @return string 
-         * @static 
-         */ 
-        public static function display($attributes = [])
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->display($attributes);
-        }
-        
-        /**
-         * 
-         *
-         * @see display()
-         * @static 
-         */ 
-        public static function displayWidget($attributes = [])
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->displayWidget($attributes);
-        }
-        
-        /**
-         * Display a Invisible reCAPTCHA by embedding a callback into a form submit button.
-         *
-         * @param string $formIdentifier the html ID of the form that should be submitted.
-         * @param string $text the text inside the form button
-         * @param array $attributes array of additional html elements
-         * @return string 
-         * @static 
-         */ 
-        public static function displaySubmit($formIdentifier, $text = 'submit', $attributes = [])
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->displaySubmit($formIdentifier, $text, $attributes);
-        }
-        
-        /**
-         * Render js source
-         *
-         * @param null $lang
-         * @param bool $callback
-         * @param string $onLoadClass
-         * @return string 
-         * @static 
-         */ 
-        public static function renderJs($lang = null, $callback = false, $onLoadClass = 'onloadCallBack')
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->renderJs($lang, $callback, $onLoadClass);
-        }
-        
-        /**
-         * Verify no-captcha response.
-         *
-         * @param string $response
-         * @param string $clientIp
-         * @return bool 
-         * @static 
-         */ 
-        public static function verifyResponse($response, $clientIp = null)
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->verifyResponse($response, $clientIp);
-        }
-        
-        /**
-         * Verify no-captcha response by Symfony Request.
-         *
-         * @param \Request $request
-         * @return bool 
-         * @static 
-         */ 
-        public static function verifyRequest($request)
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->verifyRequest($request);
-        }
-        
-        /**
-         * Get recaptcha js link.
-         *
-         * @param string $lang
-         * @param boolean $callback
-         * @param string $onLoadClass
-         * @return string 
-         * @static 
-         */ 
-        public static function getJsLink($lang = null, $callback = false, $onLoadClass = 'onloadCallBack')
-        {
-                        /** @var \Misechow\NoCaptcha\NoCaptcha $instance */
-                        return $instance->getJsLink($lang, $callback, $onLoadClass);
-        }
-         
-    }
- 
-}
-
-namespace Intervention\Image\Facades { 
-
-    /**
-     * 
-     *
-     */ 
-    class Image {
-        
-        /**
-         * Overrides configuration settings
-         *
-         * @param array $config
-         * @return self 
-         * @static 
-         */ 
-        public static function configure($config = [])
-        {
-                        /** @var \Intervention\Image\ImageManager $instance */
-                        return $instance->configure($config);
-        }
-        
-        /**
-         * Initiates an Image instance from different input types
-         *
-         * @param mixed $data
-         * @return \Intervention\Image\Image 
-         * @static 
-         */ 
-        public static function make($data)
-        {
-                        /** @var \Intervention\Image\ImageManager $instance */
-                        return $instance->make($data);
-        }
-        
-        /**
-         * Creates an empty image canvas
-         *
-         * @param int $width
-         * @param int $height
-         * @param mixed $background
-         * @return \Intervention\Image\Image 
-         * @static 
-         */ 
-        public static function canvas($width, $height, $background = null)
-        {
-                        /** @var \Intervention\Image\ImageManager $instance */
-                        return $instance->canvas($width, $height, $background);
-        }
-        
-        /**
-         * Create new cached image and run callback
-         * (requires additional package intervention/imagecache)
-         *
-         * @param \Closure $callback
-         * @param int $lifetime
-         * @param boolean $returnObj
-         * @return \Image 
-         * @static 
-         */ 
-        public static function cache($callback, $lifetime = null, $returnObj = false)
-        {
-                        /** @var \Intervention\Image\ImageManager $instance */
-                        return $instance->cache($callback, $lifetime, $returnObj);
-        }
-         
-    }
- 
-}
-
-
-namespace  { 
-
-    class App extends \Illuminate\Support\Facades\App {}
-
-    class Artisan extends \Illuminate\Support\Facades\Artisan {}
-
-    class Auth extends \Illuminate\Support\Facades\Auth {}
-
-    class Blade extends \Illuminate\Support\Facades\Blade {}
-
-    class Broadcast extends \Illuminate\Support\Facades\Broadcast {}
-
-    class Debugbar extends \Barryvdh\Debugbar\Facade {}
-
-    class Bus extends \Illuminate\Support\Facades\Bus {}
-
-    class Cache extends \Illuminate\Support\Facades\Cache {}
-
-    class Config extends \Illuminate\Support\Facades\Config {}
-
-    class Cookie extends \Illuminate\Support\Facades\Cookie {}
-
-    class Crypt extends \Illuminate\Support\Facades\Crypt {}
-
-    class DB extends \Illuminate\Support\Facades\DB {}
-
-    class Eloquent extends \Illuminate\Database\Eloquent\Model {         
-            /**
-             * Create and return an un-saved model instance.
-             *
-             * @param array $attributes
-             * @return \Illuminate\Database\Eloquent\Model 
-             * @static 
-             */ 
-            public static function make($attributes = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->make($attributes);
-            }
-         
-            /**
-             * Register a new global scope.
-             *
-             * @param string $identifier
-             * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function withGlobalScope($identifier, $scope)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->withGlobalScope($identifier, $scope);
-            }
-         
-            /**
-             * Remove a registered global scope.
-             *
-             * @param \Illuminate\Database\Eloquent\Scope|string $scope
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function withoutGlobalScope($scope)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->withoutGlobalScope($scope);
-            }
-         
-            /**
-             * Remove all or passed registered global scopes.
-             *
-             * @param array|null $scopes
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function withoutGlobalScopes($scopes = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->withoutGlobalScopes($scopes);
-            }
-         
-            /**
-             * Get an array of global scopes that were removed from the query.
-             *
-             * @return array 
-             * @static 
-             */ 
-            public static function removedScopes()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->removedScopes();
-            }
-         
-            /**
-             * Add a where clause on the primary key to the query.
-             *
-             * @param mixed $id
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function whereKey($id)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereKey($id);
-            }
-         
-            /**
-             * Add a where clause on the primary key to the query.
-             *
-             * @param mixed $id
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function whereKeyNot($id)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereKeyNot($id);
-            }
-         
-            /**
-             * Add a basic where clause to the query.
-             *
-             * @param string|array|\Closure $column
-             * @param mixed $operator
-             * @param mixed $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function where($column, $operator = null, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->where($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where" clause to the query.
-             *
-             * @param \Closure|array|string $column
-             * @param mixed $operator
-             * @param mixed $value
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orWhere($column, $operator = null, $value = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orWhere($column, $operator, $value);
-            }
-         
-            /**
-             * Add an "order by" clause for a timestamp to the query.
-             *
-             * @param string $column
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function latest($column = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->latest($column);
-            }
-         
-            /**
-             * Add an "order by" clause for a timestamp to the query.
-             *
-             * @param string $column
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function oldest($column = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->oldest($column);
-            }
-         
-            /**
-             * Create a collection of models from plain arrays.
-             *
-             * @param array $items
-             * @return \Illuminate\Database\Eloquent\Collection 
-             * @static 
-             */ 
-            public static function hydrate($items)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->hydrate($items);
-            }
-         
-            /**
-             * Create a collection of models from a raw query.
-             *
-             * @param string $query
-             * @param array $bindings
-             * @return \Illuminate\Database\Eloquent\Collection 
-             * @static 
-             */ 
-            public static function fromQuery($query, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->fromQuery($query, $bindings);
-            }
-         
-            /**
-             * Find a model by its primary key.
-             *
-             * @param mixed $id
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null 
-             * @static 
-             */ 
-            public static function find($id, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->find($id, $columns);
-            }
-         
-            /**
-             * Find multiple models by their primary keys.
-             *
-             * @param \Illuminate\Contracts\Support\Arrayable|array $ids
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Collection 
-             * @static 
-             */ 
-            public static function findMany($ids, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->findMany($ids, $columns);
-            }
-         
-            /**
-             * Find a model by its primary key or throw an exception.
-             *
-             * @param mixed $id
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] 
-             * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
-             * @static 
-             */ 
-            public static function findOrFail($id, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->findOrFail($id, $columns);
-            }
-         
-            /**
-             * Find a model by its primary key or return fresh model instance.
-             *
-             * @param mixed $id
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function findOrNew($id, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->findOrNew($id, $columns);
-            }
-         
-            /**
-             * Get the first record matching the attributes or instantiate it.
-             *
-             * @param array $attributes
-             * @param array $values
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function firstOrNew($attributes, $values = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->firstOrNew($attributes, $values);
-            }
-         
-            /**
-             * Get the first record matching the attributes or create it.
-             *
-             * @param array $attributes
-             * @param array $values
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function firstOrCreate($attributes, $values = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->firstOrCreate($attributes, $values);
-            }
-         
-            /**
-             * Create or update a record matching the attributes, and fill it with values.
-             *
-             * @param array $attributes
-             * @param array $values
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function updateOrCreate($attributes, $values = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->updateOrCreate($attributes, $values);
-            }
-         
-            /**
-             * Execute the query and get the first result or throw an exception.
-             *
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
-             * @static 
-             */ 
-            public static function firstOrFail($columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->firstOrFail($columns);
-            }
-         
-            /**
-             * Execute the query and get the first result or call a callback.
-             *
-             * @param \Closure|array $columns
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Model|static|mixed 
-             * @static 
-             */ 
-            public static function firstOr($columns = [], $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->firstOr($columns, $callback);
-            }
-         
-            /**
-             * Get a single column's value from the first result of a query.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function value($column)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->value($column);
-            }
-         
-            /**
-             * Execute the query as a "select" statement.
-             *
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Collection|static[] 
-             * @static 
-             */ 
-            public static function get($columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->get($columns);
-            }
-         
-            /**
-             * Get the hydrated models without eager loading.
-             *
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model[]|static[] 
-             * @static 
-             */ 
-            public static function getModels($columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->getModels($columns);
-            }
-         
-            /**
-             * Eager load the relationships for the models.
-             *
-             * @param array $models
-             * @return array 
-             * @static 
-             */ 
-            public static function eagerLoadRelations($models)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->eagerLoadRelations($models);
-            }
-         
-            /**
-             * Get a generator for the given query.
-             *
-             * @return \Generator 
-             * @static 
-             */ 
-            public static function cursor()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->cursor();
-            }
-         
-            /**
-             * Chunk the results of a query by comparing numeric IDs.
-             *
-             * @param int $count
-             * @param callable $callback
-             * @param string|null $column
-             * @param string|null $alias
-             * @return bool 
-             * @static 
-             */ 
-            public static function chunkById($count, $callback, $column = null, $alias = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->chunkById($count, $callback, $column, $alias);
-            }
-         
-            /**
-             * Get an array with the values of a given column.
-             *
-             * @param string $column
-             * @param string|null $key
-             * @return \Illuminate\Support\Collection 
-             * @static 
-             */ 
-            public static function pluck($column, $key = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->pluck($column, $key);
-            }
-         
-            /**
-             * Paginate the given query.
-             *
-             * @param int $perPage
-             * @param array $columns
-             * @param string $pageName
-             * @param int|null $page
-             * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->paginate($perPage, $columns, $pageName, $page);
-            }
-         
-            /**
-             * Paginate the given query into a simple paginator.
-             *
-             * @param int $perPage
-             * @param array $columns
-             * @param string $pageName
-             * @param int|null $page
-             * @return \Illuminate\Contracts\Pagination\Paginator 
-             * @static 
-             */ 
-            public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->simplePaginate($perPage, $columns, $pageName, $page);
-            }
-         
-            /**
-             * Save a new model and return the instance.
-             *
-             * @param array $attributes
-             * @return \Illuminate\Database\Eloquent\Model|$this 
-             * @static 
-             */ 
-            public static function create($attributes = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->create($attributes);
-            }
-         
-            /**
-             * Save a new model and return the instance. Allow mass-assignment.
-             *
-             * @param array $attributes
-             * @return \Illuminate\Database\Eloquent\Model|$this 
-             * @static 
-             */ 
-            public static function forceCreate($attributes)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->forceCreate($attributes);
-            }
-         
-            /**
-             * Register a replacement for the default delete function.
-             *
-             * @param \Closure $callback
-             * @return void 
-             * @static 
-             */ 
-            public static function onDelete($callback)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                $instance->onDelete($callback);
-            }
-         
-            /**
-             * Call the given local model scopes.
-             *
-             * @param array $scopes
-             * @return static|mixed 
-             * @static 
-             */ 
-            public static function scopes($scopes)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->scopes($scopes);
-            }
-         
-            /**
-             * Apply the scopes to the Eloquent builder instance and return it.
-             *
-             * @return static 
-             * @static 
-             */ 
-            public static function applyScopes()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->applyScopes();
-            }
-         
-            /**
-             * Prevent the specified relations from being eager loaded.
-             *
-             * @param mixed $relations
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function without($relations)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->without($relations);
-            }
-         
-            /**
-             * Create a new instance of the model being queried.
-             *
-             * @param array $attributes
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function newModelInstance($attributes = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->newModelInstance($attributes);
-            }
-         
-            /**
-             * Get the underlying query builder instance.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function getQuery()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->getQuery();
-            }
-         
-            /**
-             * Set the underlying query builder instance.
-             *
-             * @param \Illuminate\Database\Query\Builder $query
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function setQuery($query)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->setQuery($query);
-            }
-         
-            /**
-             * Get a base query builder instance.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function toBase()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->toBase();
-            }
-         
-            /**
-             * Get the relationships being eagerly loaded.
-             *
-             * @return array 
-             * @static 
-             */ 
-            public static function getEagerLoads()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->getEagerLoads();
-            }
-         
-            /**
-             * Set the relationships being eagerly loaded.
-             *
-             * @param array $eagerLoad
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function setEagerLoads($eagerLoad)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->setEagerLoads($eagerLoad);
-            }
-         
-            /**
-             * Get the model instance being queried.
-             *
-             * @return \Illuminate\Database\Eloquent\Model|static 
-             * @static 
-             */ 
-            public static function getModel()
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->getModel();
-            }
-         
-            /**
-             * Set a model instance for the model being queried.
-             *
-             * @param \Illuminate\Database\Eloquent\Model $model
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function setModel($model)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->setModel($model);
-            }
-         
-            /**
-             * Get the given macro by name.
-             *
-             * @param string $name
-             * @return \Closure 
-             * @static 
-             */ 
-            public static function getMacro($name)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->getMacro($name);
-            }
-         
-            /**
-             * Chunk the results of the query.
-             *
-             * @param int $count
-             * @param callable $callback
-             * @return bool 
-             * @static 
-             */ 
-            public static function chunk($count, $callback)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->chunk($count, $callback);
-            }
-         
-            /**
-             * Execute a callback over each item while chunking.
-             *
-             * @param callable $callback
-             * @param int $count
-             * @return bool 
-             * @static 
-             */ 
-            public static function each($callback, $count = 1000)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->each($callback, $count);
-            }
-         
-            /**
-             * Execute the query and get the first result.
-             *
-             * @param array $columns
-             * @return \Illuminate\Database\Eloquent\Model|object|static|null 
-             * @static 
-             */ 
-            public static function first($columns = [])
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->first($columns);
-            }
-         
-            /**
-             * Apply the callback's query changes if the given "value" is true.
-             *
-             * @param mixed $value
-             * @param callable $callback
-             * @param callable|null $default
-             * @return mixed|$this 
-             * @static 
-             */ 
-            public static function when($value, $callback, $default = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->when($value, $callback, $default);
-            }
-         
-            /**
-             * Pass the query to a given callback.
-             *
-             * @param callable $callback
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function tap($callback)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->tap($callback);
-            }
-         
-            /**
-             * Apply the callback's query changes if the given "value" is false.
-             *
-             * @param mixed $value
-             * @param callable $callback
-             * @param callable|null $default
-             * @return mixed|$this 
-             * @static 
-             */ 
-            public static function unless($value, $callback, $default = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->unless($value, $callback, $default);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query.
-             *
-             * @param string|\Illuminate\Database\Eloquent\Relations\Relation $relation
-             * @param string $operator
-             * @param int $count
-             * @param string $boolean
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->has($relation, $operator, $count, $boolean, $callback);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with an "or".
-             *
-             * @param string $relation
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orHas($relation, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orHas($relation, $operator, $count);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query.
-             *
-             * @param string $relation
-             * @param string $boolean
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function doesntHave($relation, $boolean = 'and', $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->doesntHave($relation, $boolean, $callback);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with an "or".
-             *
-             * @param string $relation
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orDoesntHave($relation)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orDoesntHave($relation);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with where clauses.
-             *
-             * @param string $relation
-             * @param \Closure|null $callback
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereHas($relation, $callback, $operator, $count);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with where clauses and an "or".
-             *
-             * @param string $relation
-             * @param \Closure $callback
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orWhereHas($relation, $callback, $operator, $count);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with where clauses.
-             *
-             * @param string $relation
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function whereDoesntHave($relation, $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereDoesntHave($relation, $callback);
-            }
-         
-            /**
-             * Add a relationship count / exists condition to the query with where clauses and an "or".
-             *
-             * @param string $relation
-             * @param \Closure $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereDoesntHave($relation, $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orWhereDoesntHave($relation, $callback);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query.
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param string $operator
-             * @param int $count
-             * @param string $boolean
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with an "or".
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orHasMorph($relation, $types, $operator, $count);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query.
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param string $boolean
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with an "or".
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orDoesntHaveMorph($relation, $types)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orDoesntHaveMorph($relation, $types);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with where clauses.
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param \Closure|null $callback
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param \Closure $callback
-             * @param string $operator
-             * @param int $count
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with where clauses.
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param \Closure|null $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function whereDoesntHaveMorph($relation, $types, $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->whereDoesntHaveMorph($relation, $types, $callback);
-            }
-         
-            /**
-             * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
-             *
-             * @param string $relation
-             * @param string|array $types
-             * @param \Closure $callback
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);
-            }
-         
-            /**
-             * Add subselect queries to count the relations.
-             *
-             * @param mixed $relations
-             * @return \Illuminate\Database\Eloquent\Builder 
-             * @static 
-             */ 
-            public static function withCount($relations)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->withCount($relations);
-            }
-         
-            /**
-             * Merge the where constraints from another query to the current query.
-             *
-             * @param \Illuminate\Database\Eloquent\Builder $from
-             * @return \Illuminate\Database\Eloquent\Builder|static 
-             * @static 
-             */ 
-            public static function mergeConstraintsFrom($from)
-            {
-                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
-                                return $instance->mergeConstraintsFrom($from);
-            }
-         
-            /**
-             * Set the columns to be selected.
-             *
-             * @param array|mixed $columns
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function select($columns = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->select($columns);
-            }
-         
-            /**
-             * Add a subselect expression to the query.
-             *
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @param string $as
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function selectSub($query, $as)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->selectSub($query, $as);
-            }
-         
-            /**
-             * Add a new "raw" select expression to the query.
-             *
-             * @param string $expression
-             * @param array $bindings
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function selectRaw($expression, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->selectRaw($expression, $bindings);
-            }
-         
-            /**
-             * Makes "from" fetch from a subquery.
-             *
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @param string $as
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function fromSub($query, $as)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->fromSub($query, $as);
-            }
-         
-            /**
-             * Add a raw from clause to the query.
-             *
-             * @param string $expression
-             * @param mixed $bindings
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function fromRaw($expression, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->fromRaw($expression, $bindings);
-            }
-         
-            /**
-             * Add a new select column to the query.
-             *
-             * @param array|mixed $column
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function addSelect($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->addSelect($column);
-            }
-         
-            /**
-             * Force the query to only return distinct results.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function distinct()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->distinct();
-            }
-         
-            /**
-             * Set the table which the query is targeting.
-             *
-             * @param string $table
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function from($table)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->from($table);
-            }
-         
-            /**
-             * Add a join clause to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @param string $type
-             * @param bool $where
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->join($table, $first, $operator, $second, $type, $where);
-            }
-         
-            /**
-             * Add a "join where" clause to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string $operator
-             * @param string $second
-             * @param string $type
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function joinWhere($table, $first, $operator, $second, $type = 'inner')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->joinWhere($table, $first, $operator, $second, $type);
-            }
-         
-            /**
-             * Add a subquery join clause to the query.
-             *
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @param string $as
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @param string $type
-             * @param bool $where
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);
-            }
-         
-            /**
-             * Add a left join to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function leftJoin($table, $first, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->leftJoin($table, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a "join where" clause to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string $operator
-             * @param string $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function leftJoinWhere($table, $first, $operator, $second)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->leftJoinWhere($table, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a subquery left join to the query.
-             *
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @param string $as
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->leftJoinSub($query, $as, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a right join to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function rightJoin($table, $first, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->rightJoin($table, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a "right join where" clause to the query.
-             *
-             * @param string $table
-             * @param \Closure|string $first
-             * @param string $operator
-             * @param string $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function rightJoinWhere($table, $first, $operator, $second)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->rightJoinWhere($table, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a subquery right join to the query.
-             *
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @param string $as
-             * @param \Closure|string $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->rightJoinSub($query, $as, $first, $operator, $second);
-            }
-         
-            /**
-             * Add a "cross join" clause to the query.
-             *
-             * @param string $table
-             * @param \Closure|string|null $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function crossJoin($table, $first = null, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->crossJoin($table, $first, $operator, $second);
-            }
-         
-            /**
-             * Merge an array of where clauses and bindings.
-             *
-             * @param array $wheres
-             * @param array $bindings
-             * @return void 
-             * @static 
-             */ 
-            public static function mergeWheres($wheres, $bindings)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                $instance->mergeWheres($wheres, $bindings);
-            }
-         
-            /**
-             * Prepare the value and operator for a where clause.
-             *
-             * @param string $value
-             * @param string $operator
-             * @param bool $useDefault
-             * @return array 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function prepareValueAndOperator($value, $operator, $useDefault = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->prepareValueAndOperator($value, $operator, $useDefault);
-            }
-         
-            /**
-             * Add a "where" clause comparing two columns to the query.
-             *
-             * @param string|array $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @param string|null $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereColumn($first, $operator, $second, $boolean);
-            }
-         
-            /**
-             * Add an "or where" clause comparing two columns to the query.
-             *
-             * @param string|array $first
-             * @param string|null $operator
-             * @param string|null $second
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereColumn($first, $operator = null, $second = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereColumn($first, $operator, $second);
-            }
-         
-            /**
-             * Add a raw where clause to the query.
-             *
-             * @param string $sql
-             * @param mixed $bindings
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereRaw($sql, $bindings = [], $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereRaw($sql, $bindings, $boolean);
-            }
-         
-            /**
-             * Add a raw or where clause to the query.
-             *
-             * @param string $sql
-             * @param mixed $bindings
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereRaw($sql, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereRaw($sql, $bindings);
-            }
-         
-            /**
-             * Add a "where in" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $values
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereIn($column, $values, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereIn($column, $values, $boolean, $not);
-            }
-         
-            /**
-             * Add an "or where in" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $values
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereIn($column, $values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereIn($column, $values);
-            }
-         
-            /**
-             * Add a "where not in" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $values
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereNotIn($column, $values, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNotIn($column, $values, $boolean);
-            }
-         
-            /**
-             * Add an "or where not in" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $values
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereNotIn($column, $values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereNotIn($column, $values);
-            }
-         
-            /**
-             * Add a "where in raw" clause for integer values to the query.
-             *
-             * @param string $column
-             * @param \Illuminate\Contracts\Support\Arrayable|array $values
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereIntegerInRaw($column, $values, $boolean, $not);
-            }
-         
-            /**
-             * Add a "where not in raw" clause for integer values to the query.
-             *
-             * @param string $column
-             * @param \Illuminate\Contracts\Support\Arrayable|array $values
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereIntegerNotInRaw($column, $values, $boolean);
-            }
-         
-            /**
-             * Add a "where null" clause to the query.
-             *
-             * @param string|array $columns
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereNull($columns, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNull($columns, $boolean, $not);
-            }
-         
-            /**
-             * Add an "or where null" clause to the query.
-             *
-             * @param string $column
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereNull($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereNull($column);
-            }
-         
-            /**
-             * Add a "where not null" clause to the query.
-             *
-             * @param string $column
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereNotNull($column, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNotNull($column, $boolean);
-            }
-         
-            /**
-             * Add a where between statement to the query.
-             *
-             * @param string $column
-             * @param array $values
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereBetween($column, $values, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereBetween($column, $values, $boolean, $not);
-            }
-         
-            /**
-             * Add an or where between statement to the query.
-             *
-             * @param string $column
-             * @param array $values
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereBetween($column, $values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereBetween($column, $values);
-            }
-         
-            /**
-             * Add a where not between statement to the query.
-             *
-             * @param string $column
-             * @param array $values
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereNotBetween($column, $values, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNotBetween($column, $values, $boolean);
-            }
-         
-            /**
-             * Add an or where not between statement to the query.
-             *
-             * @param string $column
-             * @param array $values
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereNotBetween($column, $values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereNotBetween($column, $values);
-            }
-         
-            /**
-             * Add an "or where not null" clause to the query.
-             *
-             * @param string $column
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereNotNull($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereNotNull($column);
-            }
-         
-            /**
-             * Add a "where date" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereDate($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereDate($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where date" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereDate($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereDate($column, $operator, $value);
-            }
-         
-            /**
-             * Add a "where time" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereTime($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereTime($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where time" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereTime($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereTime($column, $operator, $value);
-            }
-         
-            /**
-             * Add a "where day" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereDay($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereDay($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where day" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereDay($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereDay($column, $operator, $value);
-            }
-         
-            /**
-             * Add a "where month" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereMonth($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereMonth($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where month" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereMonth($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereMonth($column, $operator, $value);
-            }
-         
-            /**
-             * Add a "where year" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|int|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereYear($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereYear($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add an "or where year" statement to the query.
-             *
-             * @param string $column
-             * @param string $operator
-             * @param \DateTimeInterface|string|int|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereYear($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereYear($column, $operator, $value);
-            }
-         
-            /**
-             * Add a nested where statement to the query.
-             *
-             * @param \Closure $callback
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereNested($callback, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNested($callback, $boolean);
-            }
-         
-            /**
-             * Create a new query instance for nested where condition.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function forNestedWhere()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->forNestedWhere();
-            }
-         
-            /**
-             * Add another query builder as a nested where to the query builder.
-             *
-             * @param \Illuminate\Database\Query\Builder|static $query
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function addNestedWhereQuery($query, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->addNestedWhereQuery($query, $boolean);
-            }
-         
-            /**
-             * Add an exists clause to the query.
-             *
-             * @param \Closure $callback
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereExists($callback, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereExists($callback, $boolean, $not);
-            }
-         
-            /**
-             * Add an or exists clause to the query.
-             *
-             * @param \Closure $callback
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereExists($callback, $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereExists($callback, $not);
-            }
-         
-            /**
-             * Add a where not exists clause to the query.
-             *
-             * @param \Closure $callback
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function whereNotExists($callback, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereNotExists($callback, $boolean);
-            }
-         
-            /**
-             * Add a where not exists clause to the query.
-             *
-             * @param \Closure $callback
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orWhereNotExists($callback)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereNotExists($callback);
-            }
-         
-            /**
-             * Add an exists clause to the query.
-             *
-             * @param \Illuminate\Database\Query\Builder $query
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->addWhereExistsQuery($query, $boolean, $not);
-            }
-         
-            /**
-             * Adds a where condition using row values.
-             *
-             * @param array $columns
-             * @param string $operator
-             * @param array $values
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereRowValues($columns, $operator, $values, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereRowValues($columns, $operator, $values, $boolean);
-            }
-         
-            /**
-             * Adds a or where condition using row values.
-             *
-             * @param array $columns
-             * @param string $operator
-             * @param array $values
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orWhereRowValues($columns, $operator, $values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereRowValues($columns, $operator, $values);
-            }
-         
-            /**
-             * Add a "where JSON contains" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $value
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereJsonContains($column, $value, $boolean, $not);
-            }
-         
-            /**
-             * Add a "or where JSON contains" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orWhereJsonContains($column, $value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereJsonContains($column, $value);
-            }
-         
-            /**
-             * Add a "where JSON not contains" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereJsonDoesntContain($column, $value, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereJsonDoesntContain($column, $value, $boolean);
-            }
-         
-            /**
-             * Add a "or where JSON not contains" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orWhereJsonDoesntContain($column, $value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereJsonDoesntContain($column, $value);
-            }
-         
-            /**
-             * Add a "where JSON length" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $operator
-             * @param mixed $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->whereJsonLength($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add a "or where JSON length" clause to the query.
-             *
-             * @param string $column
-             * @param mixed $operator
-             * @param mixed $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orWhereJsonLength($column, $operator, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orWhereJsonLength($column, $operator, $value);
-            }
-         
-            /**
-             * Handles dynamic "where" clauses to the query.
-             *
-             * @param string $method
-             * @param array $parameters
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function dynamicWhere($method, $parameters)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->dynamicWhere($method, $parameters);
-            }
-         
-            /**
-             * Add a "group by" clause to the query.
-             *
-             * @param array $groups
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function groupBy(...$groups)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->groupBy(...$groups);
-            }
-         
-            /**
-             * Add a "having" clause to the query.
-             *
-             * @param string $column
-             * @param string|null $operator
-             * @param string|null $value
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function having($column, $operator = null, $value = null, $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->having($column, $operator, $value, $boolean);
-            }
-         
-            /**
-             * Add a "or having" clause to the query.
-             *
-             * @param string $column
-             * @param string|null $operator
-             * @param string|null $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orHaving($column, $operator = null, $value = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orHaving($column, $operator, $value);
-            }
-         
-            /**
-             * Add a "having between " clause to the query.
-             *
-             * @param string $column
-             * @param array $values
-             * @param string $boolean
-             * @param bool $not
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function havingBetween($column, $values, $boolean = 'and', $not = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->havingBetween($column, $values, $boolean, $not);
-            }
-         
-            /**
-             * Add a raw having clause to the query.
-             *
-             * @param string $sql
-             * @param array $bindings
-             * @param string $boolean
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function havingRaw($sql, $bindings = [], $boolean = 'and')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->havingRaw($sql, $bindings, $boolean);
-            }
-         
-            /**
-             * Add a raw or having clause to the query.
-             *
-             * @param string $sql
-             * @param array $bindings
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function orHavingRaw($sql, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orHavingRaw($sql, $bindings);
-            }
-         
-            /**
-             * Add an "order by" clause to the query.
-             *
-             * @param string $column
-             * @param string $direction
-             * @return \Illuminate\Database\Query\Builder 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function orderBy($column, $direction = 'asc')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orderBy($column, $direction);
-            }
-         
-            /**
-             * Add a descending "order by" clause to the query.
-             *
-             * @param string $column
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orderByDesc($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orderByDesc($column);
-            }
-         
-            /**
-             * Put the query's results in random order.
-             *
-             * @param string $seed
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function inRandomOrder($seed = '')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->inRandomOrder($seed);
-            }
-         
-            /**
-             * Add a raw "order by" clause to the query.
-             *
-             * @param string $sql
-             * @param array $bindings
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function orderByRaw($sql, $bindings = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->orderByRaw($sql, $bindings);
-            }
-         
-            /**
-             * Alias to set the "offset" value of the query.
-             *
-             * @param int $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function skip($value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->skip($value);
-            }
-         
-            /**
-             * Set the "offset" value of the query.
-             *
-             * @param int $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function offset($value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->offset($value);
-            }
-         
-            /**
-             * Alias to set the "limit" value of the query.
-             *
-             * @param int $value
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function take($value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->take($value);
-            }
-         
-            /**
-             * Set the "limit" value of the query.
-             *
-             * @param int $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function limit($value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->limit($value);
-            }
-         
-            /**
-             * Set the limit and offset for a given page.
-             *
-             * @param int $page
-             * @param int $perPage
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function forPage($page, $perPage = 15)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->forPage($page, $perPage);
-            }
-         
-            /**
-             * Constrain the query to the previous "page" of results before a given ID.
-             *
-             * @param int $perPage
-             * @param int|null $lastId
-             * @param string $column
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->forPageBeforeId($perPage, $lastId, $column);
-            }
-         
-            /**
-             * Constrain the query to the next "page" of results after a given ID.
-             *
-             * @param int $perPage
-             * @param int|null $lastId
-             * @param string $column
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->forPageAfterId($perPage, $lastId, $column);
-            }
-         
-            /**
-             * Add a union statement to the query.
-             *
-             * @param \Illuminate\Database\Query\Builder|\Closure $query
-             * @param bool $all
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function union($query, $all = false)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->union($query, $all);
-            }
-         
-            /**
-             * Add a union all statement to the query.
-             *
-             * @param \Illuminate\Database\Query\Builder|\Closure $query
-             * @return \Illuminate\Database\Query\Builder|static 
-             * @static 
-             */ 
-            public static function unionAll($query)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->unionAll($query);
-            }
-         
-            /**
-             * Lock the selected rows in the table.
-             *
-             * @param string|bool $value
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function lock($value = true)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->lock($value);
-            }
-         
-            /**
-             * Lock the selected rows in the table for updating.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function lockForUpdate()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->lockForUpdate();
-            }
-         
-            /**
-             * Share lock the selected rows in the table.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function sharedLock()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->sharedLock();
-            }
-         
-            /**
-             * Get the SQL representation of the query.
-             *
-             * @return string 
-             * @static 
-             */ 
-            public static function toSql()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->toSql();
-            }
-         
-            /**
-             * Get the count of the total records for the paginator.
-             *
-             * @param array $columns
-             * @return int 
-             * @static 
-             */ 
-            public static function getCountForPagination($columns = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->getCountForPagination($columns);
-            }
-         
-            /**
-             * Concatenate values of a given column as a string.
-             *
-             * @param string $column
-             * @param string $glue
-             * @return string 
-             * @static 
-             */ 
-            public static function implode($column, $glue = '')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->implode($column, $glue);
-            }
-         
-            /**
-             * Determine if any rows exist for the current query.
-             *
-             * @return bool 
-             * @static 
-             */ 
-            public static function exists()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->exists();
-            }
-         
-            /**
-             * Determine if no rows exist for the current query.
-             *
-             * @return bool 
-             * @static 
-             */ 
-            public static function doesntExist()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->doesntExist();
-            }
-         
-            /**
-             * Retrieve the "count" result of the query.
-             *
-             * @param string $columns
-             * @return int 
-             * @static 
-             */ 
-            public static function count($columns = '*')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->count($columns);
-            }
-         
-            /**
-             * Retrieve the minimum value of a given column.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function min($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->min($column);
-            }
-         
-            /**
-             * Retrieve the maximum value of a given column.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function max($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->max($column);
-            }
-         
-            /**
-             * Retrieve the sum of the values of a given column.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function sum($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->sum($column);
-            }
-         
-            /**
-             * Retrieve the average of the values of a given column.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function avg($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->avg($column);
-            }
-         
-            /**
-             * Alias for the "avg" method.
-             *
-             * @param string $column
-             * @return mixed 
-             * @static 
-             */ 
-            public static function average($column)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->average($column);
-            }
-         
-            /**
-             * Execute an aggregate function on the database.
-             *
-             * @param string $function
-             * @param array $columns
-             * @return mixed 
-             * @static 
-             */ 
-            public static function aggregate($function, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->aggregate($function, $columns);
-            }
-         
-            /**
-             * Execute a numeric aggregate function on the database.
-             *
-             * @param string $function
-             * @param array $columns
-             * @return float|int 
-             * @static 
-             */ 
-            public static function numericAggregate($function, $columns = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->numericAggregate($function, $columns);
-            }
-         
-            /**
-             * Insert a new record into the database.
-             *
-             * @param array $values
-             * @return bool 
-             * @static 
-             */ 
-            public static function insert($values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->insert($values);
-            }
-         
-            /**
-             * Insert a new record into the database while ignoring errors.
-             *
-             * @param array $values
-             * @return int 
-             * @static 
-             */ 
-            public static function insertOrIgnore($values)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->insertOrIgnore($values);
-            }
-         
-            /**
-             * Insert a new record and get the value of the primary key.
-             *
-             * @param array $values
-             * @param string|null $sequence
-             * @return int 
-             * @static 
-             */ 
-            public static function insertGetId($values, $sequence = null)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->insertGetId($values, $sequence);
-            }
-         
-            /**
-             * Insert new records into the table using a subquery.
-             *
-             * @param array $columns
-             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
-             * @return bool 
-             * @static 
-             */ 
-            public static function insertUsing($columns, $query)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->insertUsing($columns, $query);
-            }
-         
-            /**
-             * Insert or update a record matching the attributes, and fill it with values.
-             *
-             * @param array $attributes
-             * @param array $values
-             * @return bool 
-             * @static 
-             */ 
-            public static function updateOrInsert($attributes, $values = [])
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->updateOrInsert($attributes, $values);
-            }
-         
-            /**
-             * Run a truncate statement on the table.
-             *
-             * @return void 
-             * @static 
-             */ 
-            public static function truncate()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                $instance->truncate();
-            }
-         
-            /**
-             * Create a raw database expression.
-             *
-             * @param mixed $value
-             * @return \Illuminate\Database\Query\Expression 
-             * @static 
-             */ 
-            public static function raw($value)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->raw($value);
-            }
-         
-            /**
-             * Get the current query value bindings in a flattened array.
-             *
-             * @return array 
-             * @static 
-             */ 
-            public static function getBindings()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->getBindings();
-            }
-         
-            /**
-             * Get the raw array of bindings.
-             *
-             * @return array 
-             * @static 
-             */ 
-            public static function getRawBindings()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->getRawBindings();
-            }
-         
-            /**
-             * Set the bindings on the query builder.
-             *
-             * @param array $bindings
-             * @param string $type
-             * @return \Illuminate\Database\Query\Builder 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function setBindings($bindings, $type = 'where')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->setBindings($bindings, $type);
-            }
-         
-            /**
-             * Add a binding to the query.
-             *
-             * @param mixed $value
-             * @param string $type
-             * @return \Illuminate\Database\Query\Builder 
-             * @throws \InvalidArgumentException
-             * @static 
-             */ 
-            public static function addBinding($value, $type = 'where')
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->addBinding($value, $type);
-            }
-         
-            /**
-             * Merge an array of bindings into our bindings.
-             *
-             * @param \Illuminate\Database\Query\Builder $query
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function mergeBindings($query)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->mergeBindings($query);
-            }
-         
-            /**
-             * Get the database query processor instance.
-             *
-             * @return \Illuminate\Database\Query\Processors\Processor 
-             * @static 
-             */ 
-            public static function getProcessor()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->getProcessor();
-            }
-         
-            /**
-             * Get the query grammar instance.
-             *
-             * @return \Illuminate\Database\Query\Grammars\Grammar 
-             * @static 
-             */ 
-            public static function getGrammar()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->getGrammar();
-            }
-         
-            /**
-             * Use the write pdo for query.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function useWritePdo()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->useWritePdo();
-            }
-         
-            /**
-             * Clone the query without the given properties.
-             *
-             * @param array $properties
-             * @return static 
-             * @static 
-             */ 
-            public static function cloneWithout($properties)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->cloneWithout($properties);
-            }
-         
-            /**
-             * Clone the query without the given bindings.
-             *
-             * @param array $except
-             * @return static 
-             * @static 
-             */ 
-            public static function cloneWithoutBindings($except)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->cloneWithoutBindings($except);
-            }
-         
-            /**
-             * Dump the current SQL and bindings.
-             *
-             * @return \Illuminate\Database\Query\Builder 
-             * @static 
-             */ 
-            public static function dump()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->dump();
-            }
-         
-            /**
-             * Die and dump the current SQL and bindings.
-             *
-             * @return void 
-             * @static 
-             */ 
-            public static function dd()
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                $instance->dd();
-            }
-         
-            /**
-             * Register a custom macro.
-             *
-             * @param string $name
-             * @param object|callable $macro
-             * @return void 
-             * @static 
-             */ 
-            public static function macro($name, $macro)
-            {
-                                \Illuminate\Database\Query\Builder::macro($name, $macro);
-            }
-         
-            /**
-             * Mix another object into the class.
-             *
-             * @param object $mixin
-             * @param bool $replace
-             * @return void 
-             * @throws \ReflectionException
-             * @static 
-             */ 
-            public static function mixin($mixin, $replace = true)
-            {
-                                \Illuminate\Database\Query\Builder::mixin($mixin, $replace);
-            }
-         
-            /**
-             * Checks if macro is registered.
-             *
-             * @param string $name
-             * @return bool 
-             * @static 
-             */ 
-            public static function hasMacro($name)
-            {
-                                return \Illuminate\Database\Query\Builder::hasMacro($name);
-            }
-         
-            /**
-             * Dynamically handle calls to the class.
-             *
-             * @param string $method
-             * @param array $parameters
-             * @return mixed 
-             * @throws \BadMethodCallException
-             * @static 
-             */ 
-            public static function macroCall($method, $parameters)
-            {
-                                /** @var \Illuminate\Database\Query\Builder $instance */
-                                return $instance->macroCall($method, $parameters);
-            }
-        }
-
-    class Event extends \Illuminate\Support\Facades\Event {}
-
-    class File extends \Illuminate\Support\Facades\File {}
-
-    class Gate extends \Illuminate\Support\Facades\Gate {}
-
-    class Hash extends \Illuminate\Support\Facades\Hash {}
-
-    class HCaptcha extends \SSRPanel\HCaptcha\Facades\HCaptcha {}
-
-    class Lang extends \Illuminate\Support\Facades\Lang {}
-
-    class Log extends \Illuminate\Support\Facades\Log {}
-
-    class Mail extends \Illuminate\Support\Facades\Mail {}
-
-    class Notification extends \Illuminate\Support\Facades\Notification {}
-
-    class Password extends \Illuminate\Support\Facades\Password {}
-
-    class Queue extends \Illuminate\Support\Facades\Queue {}
-
-    class Redirect extends \Illuminate\Support\Facades\Redirect {}
-
-    class Redis extends \Illuminate\Support\Facades\Redis {}
-
-    class Request extends \Illuminate\Support\Facades\Request {}
-
-    class Response extends \Illuminate\Support\Facades\Response {}
-
-    class Route extends \Illuminate\Support\Facades\Route {}
-
-    class Schema extends \Illuminate\Support\Facades\Schema {}
-
-    class Session extends \Illuminate\Support\Facades\Session {}
-
-    class Storage extends \Illuminate\Support\Facades\Storage {}
-
-    class URL extends \Illuminate\Support\Facades\URL {}
-
-    class Validator extends \Illuminate\Support\Facades\Validator {}
-
-    class View extends \Illuminate\Support\Facades\View {}
-
-    class Captcha extends \Mews\Captcha\Facades\Captcha {}
-
-    class Agent extends \Jenssegers\Agent\Facades\Agent {}
-
-    class Purifier extends \Mews\Purifier\Facades\Purifier {}
-
-    class Geetest extends \Misechow\Geetest\Geetest {}
-
-    class NoCaptcha extends \Misechow\NoCaptcha\Facades\NoCaptcha {}
-
-    class Image extends \Intervention\Image\Facades\Image {}
- 
-}
-
-
-
-

+ 0 - 248
app/Components/AlipayNotify.php

@@ -1,248 +0,0 @@
-<?php
-
-namespace App\Components;
-
-use Log;
-
-/**
- * Class AlipayNotify
- *
- * @author  wz812180
- *
- * @package App\Components
- */
-class AlipayNotify
-{
-	private $https_verify_url = 'https://mapi.alipay.com/gateway.do?service=notify_verify&'; // HTTPS形式消息验证地址
-	private $http_verify_url = 'http://notify.alipay.com/trade/notify_query.do?'; // HTTP形式消息验证地址
-	private $sign_type = "MD5"; // 加密方式:MD5/RSA
-	private $partner = "";
-	private $md5_key = "";
-	private $private_key = "";
-	private $alipay_public_key = "";
-	private $transport = "http";
-
-	function __construct($sign_type, $partner, $md5_key, $private_key, $alipay_public_key, $transport)
-	{
-		$this->sign_type = $sign_type;
-		$this->partner = $partner;
-		$this->md5_key = $md5_key;
-		$this->private_key = $private_key;
-		$this->alipay_public_key = $alipay_public_key;
-		$this->transport = $transport;
-	}
-
-	/**
-	 * 针对notify_url验证消息是否是支付宝发出的合法消息
-	 *
-	 * @return bool 验证结果
-	 */
-	public function verifyNotify()
-	{
-		if(empty($_POST)){
-			return FALSE;
-		}else{
-			// 生成签名结果
-			$isSign = $this->getSignVerify($_POST, $_POST["sign"]);
-
-			// 获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
-			$responseTxt = 'false';
-			if(!empty($_POST["notify_id"])){
-				$responseTxt = $this->getResponse($_POST["notify_id"]);
-			}
-
-			// 验证
-			// $responseTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
-			// isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
-			if(preg_match("/true$/i", $responseTxt) && $isSign){
-				return TRUE;
-			}else{
-				return FALSE;
-			}
-		}
-	}
-
-	/**
-	 * 获取返回时的签名验证结果
-	 *
-	 * @param array  $para_temp 通知返回来的参数数组
-	 * @param string $sign      返回的签名结果
-	 *
-	 * @return bool 签名验证结果
-	 */
-	function getSignVerify($para_temp, $sign)
-	{
-		// 除去待签名参数数组中的空值和签名参数
-		$para_filter = $this->paraFilter($para_temp);
-
-		// 对待签名参数数组排序
-		$para_sort = $this->argSort($para_filter);
-
-		// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
-		$preStr = $this->createLinkString($para_sort);
-
-		switch(strtoupper(trim($this->sign_type))){
-			case "RSA" :
-				$isSign = $this->rsaVerify($preStr, trim($this->alipay_public_key), $sign);
-				break;
-			case "MD5" :
-				$isSign = $this->md5Verify($preStr, $sign, trim($this->md5_key));
-				break;
-			default :
-				$isSign = FALSE;
-		}
-
-		return $isSign;
-	}
-
-	/**
-	 * 除去数组中的空值和签名参数
-	 *
-	 * @param array $para 签名参数组
-	 *
-	 * @return array 去掉空值与签名参数后的新签名参数组
-	 */
-	function paraFilter($para)
-	{
-		$para_filter = [];
-		foreach($para as $key => $val){
-			if($key == "sign" || $key == "sign_type" || $val == "") continue;
-			else    $para_filter[$key] = $para[$key];
-		}
-
-		return $para_filter;
-	}
-
-	/**
-	 * 对数组排序
-	 *
-	 * @param array $para 排序前的数组
-	 *
-	 * @return array 排序后的数组
-	 */
-	function argSort($para)
-	{
-		ksort($para);
-		reset($para);
-
-		return $para;
-	}
-
-	/**
-	 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
-	 *
-	 * @param array $para 需要拼接的数组
-	 *
-	 * @return string
-	 */
-	function createLinkString($para)
-	{
-		$arg = '';
-		foreach($para as $key => $val){
-			$arg .= "&".$key."=".$val;
-		}
-
-		// 去掉开头的&字符
-		$arg = substr($arg, 1);
-
-		// 如果存在转义字符,那么去掉转义
-		if(get_magic_quotes_gpc()){
-			$arg = stripslashes($arg);
-		}
-
-		return $arg;
-	}
-
-	/**
-	 * RSA验签
-	 *
-	 * @param string $data              待签名数据
-	 * @param string $alipay_public_key 支付宝的公钥字符串
-	 * @param string $sign              要校对的的签名结果
-	 *
-	 * @return bool
-	 */
-	function rsaVerify($data, $alipay_public_key, $sign)
-	{
-		// 以下为了初始化私钥,保证在您填写私钥时不管是带格式还是不带格式都可以通过验证。
-		$alipay_public_key = str_replace("-----BEGIN PUBLIC KEY-----", "", $alipay_public_key);
-		$alipay_public_key = str_replace("-----END PUBLIC KEY-----", "", $alipay_public_key);
-		$alipay_public_key = str_replace("\n", "", $alipay_public_key);
-
-		$alipay_public_key = '-----BEGIN PUBLIC KEY-----'.PHP_EOL.wordwrap($alipay_public_key, 64, "\n", TRUE).PHP_EOL.'-----END PUBLIC KEY-----';
-		$res = openssl_get_publickey($alipay_public_key);
-		if(!$res){
-			Log::error("支付宝公钥格式不正确");
-			exit();
-		}
-
-		$result = (bool)openssl_verify($data, base64_decode($sign), $res);
-		openssl_free_key($res);
-
-		return $result;
-	}
-
-	/**
-	 * 验证签名
-	 *
-	 * @param string $preStr 需要签名的字符串pre-sign
-	 * @param string $sign   签名结果
-	 * @param string $key    私钥
-	 *
-	 * @return bool
-	 */
-	function md5Verify($preStr, $sign, $key)
-	{
-		$mySign = md5($preStr.$key);
-
-		return $mySign == $sign? TRUE : FALSE;
-	}
-
-	/**
-	 * 获取远程服务器ATN结果,验证返回URL
-	 *
-	 * @param integer $notify_id 通知校验ID
-	 *
-	 * @return string 服务器ATN结果
-	 * 验证结果集:
-	 * invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
-	 * true 返回正确信息
-	 * false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
-	 */
-	function getResponse($notify_id)
-	{
-		$transport = strtolower(trim($this->transport));
-		$partner = trim($this->partner);
-
-		$verify_url = $transport == 'https'? $this->https_verify_url : $this->http_verify_url;
-		$verify_url = $verify_url."partner=".$partner."&notify_id=".$notify_id;
-
-		return $this->getHttpResponseGET($verify_url, base_path('ca/cacert_alipay.pem'));
-	}
-
-	/**
-	 * 远程获取数据,GET模式
-	 * 注意:文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
-	 *
-	 * @param string $url        指定URL完整路径地址
-	 * @param string $cacert_url 指定当前工作目录绝对路径
-	 *
-	 * @return mixed
-	 */
-	function getHttpResponseGET($url, $cacert_url)
-	{
-		$curl = curl_init($url);
-		curl_setopt($curl, CURLOPT_HEADER, 0); // 过滤HTTP头
-		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 显示输出结果
-		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE); // SSL证书认证
-		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 严格认证
-		curl_setopt($curl, CURLOPT_CAINFO, $cacert_url); // 证书地址
-		$responseText = curl_exec($curl);
-		//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
-		curl_close($curl);
-
-		return $responseText;
-	}
-}
-
-?>

+ 0 - 265
app/Components/AlipaySubmit.php

@@ -1,265 +0,0 @@
-<?php
-
-namespace App\Components;
-
-use DOMDocument;
-use Log;
-
-/**
- * Class AlipaySubmit
- *
- * @author  wz812180
- *
- * @package App\Components
- */
-class AlipaySubmit
-{
-	var $alipay_gateway_new = 'https://mapi.alipay.com/gateway.do?'; // 支付宝网关地址(新)
-	var $sign_type = "MD5"; // 加密方式:MD5/RSA
-	var $partner = "";
-	var $md5_key = "";
-	var $private_key = "";
-
-	function __construct($sign_type, $partner, $md5_key, $private_key)
-	{
-		$this->sign_type = $sign_type;
-		$this->partner = $partner;
-		$this->md5_key = $md5_key;
-		$this->private_key = $private_key;
-	}
-
-	/**
-	 * 生成要请求给支付宝的参数数组
-	 *
-	 * @param array $para_temp 请求前的参数数组
-	 *
-	 * @return string
-	 */
-	function buildRequestParaToString($para_temp)
-	{
-		// 待请求参数数组
-		$para = $this->buildRequestPara($para_temp);
-
-		// 把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
-		return $this->createLinkStringUrlEncode($para);
-	}
-
-	/**
-	 * 生成要请求给支付宝的参数数组
-	 *
-	 * @param array $para_temp 请求前的参数数组
-	 *
-	 * @return array
-	 */
-	function buildRequestPara($para_temp)
-	{
-		// 除去待签名参数数组中的空值和签名参数
-		$para_filter = $this->paraFilter($para_temp);
-
-		// 对待签名参数数组排序
-		$para_sort = $this->argSort($para_filter);
-
-		// 生成签名结果
-		$mySign = $this->buildRequestMySign($para_sort);
-
-		// 签名结果与签名方式加入请求提交参数组中
-		$para_sort['sign'] = $mySign;
-		$para_sort['sign_type'] = strtoupper(trim($this->sign_type));
-
-		return $para_sort;
-	}
-
-	/**
-	 * 除去数组中的空值和签名参数
-	 *
-	 * @param array $para 签名参数组
-	 *
-	 * @return array
-	 */
-	function paraFilter($para)
-	{
-		$para_filter = [];
-		foreach($para as $key => $val){
-			if($key == "sign" || $key == "sign_type" || $val == "") continue;
-			else    $para_filter[$key] = $para[$key];
-		}
-
-		return $para_filter;
-	}
-
-	/**
-	 * 对数组排序
-	 *
-	 * @param array $para 排序前的数组
-	 *
-	 * @return mixed
-	 */
-	function argSort($para)
-	{
-		ksort($para);
-		reset($para);
-
-		return $para;
-	}
-
-	/**
-	 * 生成签名结果
-	 *
-	 * @param array $para_sort 已排序要签名的数组
-	 *
-	 * @return string
-	 */
-	function buildRequestMySign($para_sort)
-	{
-		// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
-		$preStr = $this->createLinkString($para_sort);
-
-		switch(strtoupper(trim($this->sign_type))){
-			case "MD5" :
-				$mySign = $this->md5Sign($preStr, $this->md5_key);
-				break;
-			case "RSA" :
-				$mySign = $this->rsaSign($preStr, $this->private_key);
-				break;
-			default :
-				$mySign = "";
-		}
-
-		return $mySign;
-	}
-
-	/**
-	 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
-	 *
-	 * @param array $para
-	 *
-	 * @return bool|string
-	 */
-	function createLinkString($para)
-	{
-		$arg = '';
-		foreach($para as $key => $val){
-			$arg .= "&".$key."=".$val;
-		}
-
-		// 去掉开头的&字符
-		$arg = substr($arg, 1);
-
-		// 如果存在转义字符,那么去掉转义
-		if(get_magic_quotes_gpc()){
-			$arg = stripslashes($arg);
-		}
-
-		return $arg;
-	}
-
-	/**
-	 * 签名字符串
-	 *
-	 * @param string $preStr 需要签名的字符串
-	 * @param string $key    私钥
-	 *
-	 * @return string
-	 */
-	function md5Sign($preStr, $key)
-	{
-		return md5($preStr.$key);
-	}
-
-	/**
-	 * RSA签名
-	 *
-	 * @param string $data        待签名数据
-	 * @param string $private_key 商户私钥字符串
-	 *
-	 * @return string
-	 */
-	function rsaSign($data, $private_key)
-	{
-		//以下为了初始化私钥,保证在您填写私钥时不管是带格式还是不带格式都可以通过验证。
-		$private_key = str_replace("-----BEGIN RSA PRIVATE KEY-----", "", $private_key);
-		$private_key = str_replace("-----END RSA PRIVATE KEY-----", "", $private_key);
-		$private_key = str_replace("\n", "", $private_key);
-		$private_key = "-----BEGIN RSA PRIVATE KEY-----".PHP_EOL.wordwrap($private_key, 64, "\n", TRUE).PHP_EOL."-----END RSA PRIVATE KEY-----";
-
-		$res = openssl_get_privatekey($private_key);
-		if(!$res){
-			Log::error("私钥格式不正确");
-			exit();
-		}
-
-		openssl_sign($data, $sign, $res);
-		openssl_free_key($res);
-
-		$sign = base64_encode($sign); // base64编码
-
-		return $sign;
-	}
-
-	/**
-	 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
-	 *
-	 * @param array $para 需要拼接的数组
-	 *
-	 * @return bool|string
-	 */
-	function createLinkStringUrlEncode($para)
-	{
-		$arg = '';
-		foreach($para as $key => $val){
-			$arg .= "&".$key."=".urlencode($val);
-		}
-
-		// 去掉开头的&字符
-		$arg = substr($arg, 1);
-
-		// 如果存在转义字符,那么去掉转义
-		if(get_magic_quotes_gpc()){
-			$arg = stripslashes($arg);
-		}
-
-		return $arg;
-	}
-
-	/**
-	 * 建立请求,以表单HTML形式构造(默认)
-	 *
-	 * @param array  $para_temp   请求参数数组
-	 * @param string $method      提交方式。两个值可选:post|get
-	 * @param string $button_name 确认按钮显示文字
-	 *
-	 * @return string
-	 */
-	public function buildRequestForm($para_temp, $method, $button_name)
-	{
-		// 待请求参数数组
-		$para = $this->buildRequestPara($para_temp);
-
-		$sHtml = "<form id='alipaySubmit' name='alipaySubmit' action='".$this->alipay_gateway_new."_input_charset=utf-8' method='".$method."'>";
-		foreach($para as $key => $val){
-			$sHtml .= "<input type='hidden' name='".$key."' value='".$val."'/>";
-		}
-
-		// submit按钮控件请不要含有name属性
-		$sHtml = $sHtml."<input type='submit'  value='".$button_name."' style='display:none;'></form>";
-		$sHtml = $sHtml."<script>document.forms['alipaySubmit'].submit();</script>";
-
-		return $sHtml;
-	}
-
-	/**
-	 * 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数
-	 *
-	 * @return string
-	 */
-	function query_timestamp()
-	{
-		$url = $this->alipay_gateway_new."service=query_timestamp&partner=".trim(strtolower($this->partner))."&_input_charset=utf-8";
-
-		$doc = new DOMDocument();
-		$doc->load($url);
-		$itemEncrypt_key = $doc->getElementsByTagName("encrypt_key");
-
-		return $itemEncrypt_key->item(0)->nodeValue;
-	}
-}

+ 0 - 220
app/Components/Callback.php

@@ -1,220 +0,0 @@
-<?php
-
-namespace App\Components;
-
-use App\Http\Models\Goods;
-use App\Http\Models\GoodsLabel;
-use App\Http\Models\Order;
-use App\Http\Models\Payment;
-use App\Http\Models\ReferralLog;
-use App\Http\Models\User;
-use App\Http\Models\UserLabel;
-use DB;
-use Exception;
-use Log;
-
-trait Callback
-{
-	protected static $systemConfig;
-
-	function __construct()
-	{
-		self::$systemConfig = Helpers::systemConfig();
-	}
-
-	public function show()
-	{
-		exit('show');
-	}
-
-	// 交易支付
-	private function tradePaid($msg, $pay_type)
-	{
-		$pay_type_name = $pay_type == 1? '余额支付' : ($pay_type == 4? '支付宝国际' : ($pay_type == 5? '支付宝当面付' : ''));
-
-		if($pay_type != 1){
-			// 获取未完成状态的订单防止重复增加时间
-			$payment = Payment::query()->with(['order', 'order.goods'])->where('status', 0)->where('order_sn', $msg['out_trade_no'])->first();
-			if(!$payment){
-				Log::info('【'.$pay_type_name.'】回调订单【'.$msg['out_trade_no'].'】不存在');
-
-				return FALSE;
-			}
-			Log::info('【'.$pay_type_name.'】支付成功,开始处理回调订单');
-		}else{
-			Log::info('【'.$pay_type_name.'】订单处理');
-		}
-
-		// 处理订单
-		try{
-			DB::beginTransaction();
-			if($pay_type != 1){
-				// 更新支付单
-				$payment->pay_way = $pay_type == 4 || $pay_type == 5? 2 : 1; // 1-微信、2-支付宝
-				$payment->status = 1;
-				$payment->save();
-			}
-
-			// 更新订单
-			$order = Order::query()->where('order_sn', $msg['out_trade_no'])->first();
-
-			if($order->goods_id == -1){
-				$order->status = 2;
-				$order->save();
-				User::query()->where('id', $order->user_id)->increment('balance', $order->amount*100);
-
-				// 余额变动记录日志
-				$this->addUserBalanceLog($order->user_id, $order->oid, $order->user->balance, $order->user->balance+$order->amount, $order->amount, '用户在线充值');
-			}else{
-
-				// 提取商品信息
-				$goods = Goods::query()->where('id', $order->goods_id)->first();
-				// 取出用户信息
-				$user = User::query()->where('id', $order->user_id)->first();
-				// 商品为流量或者套餐
-				switch($goods->type){
-					case 1:
-						$order->status = 2;
-						$order->save();
-						Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, $user->transfer_enable+$goods->traffic*1048576, '[在线支付]加上用户购买的套餐流量');
-						User::query()->where('id', $order->user_id)->increment('transfer_enable', $goods->traffic*1048576);
-						break;
-					case 2:
-						$activePlan = Order::query()
-							->where('user_id', $order->user_id)
-							->with(['goods'])
-							->whereHas('goods', function($q){
-								$q->where('type', 2);
-							})
-							->where('is_expire', 0)
-							->where('status', 2)
-							->exists();
-						// 2为开始生效,3为预支付
-						$order->status = $activePlan? 3 : 2;
-						$order->save();
-
-						// 预支付不执行
-						if(!$activePlan){
-							// 如果买的是套餐,则先将之前购买的套餐都无效化,重置用户已用、可用流量为0
-							Order::query()
-								->where('user_id', $order->user_id)
-								->with(['goods'])
-								->whereHas('goods', function($q){
-									$q->where('type', '<=', 2);
-								})
-								->where('is_expire', 0)
-								->where('status', 2)
-								->where('oid', '<>', $order->oid)
-								->update(['expire_at' => date('Y-m-d H:i:s'), 'is_expire' => 1]);
-
-							Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, 0, '[在线支付]用户购买新套餐,先清空流量');
-							User::query()->where('id', $order->user_id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => 0]);
-
-							$userTraffic = $goods->traffic*1048576;
-							// 添加账号有效期
-							$expireTime = date('Y-m-d', strtotime("+".$goods->days." days"));
-							//账号下一个重置时间
-							$nextResetTime = date('Y-m-d', strtotime("+".$goods->period." days"));
-							if($nextResetTime >= $expireTime){
-								$nextResetTime = NULL;
-							}
-
-							// 写入用户标签
-							if($goods->label){
-								// 删除用户所有标签
-								UserLabel::query()->where('user_id', $order->user_id)->delete();
-
-								//取出 商品默认标签  & 系统默认标签 去重
-								$newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->where('goods_id', $order->goods_id)->pluck('label_id')->toArray(), self::$systemConfig['initial_labels_for_user']? explode(',', self::$systemConfig['initial_labels_for_user']) : [])));
-
-								// 生成标签
-								foreach($newUserLabels as $vo){
-									$obj = new UserLabel();
-									$obj->user_id = $order->user_id;
-									$obj->label_id = $vo;
-									$obj->save();
-								}
-							}
-
-							Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, $userTraffic, '[在线支付]加上用户购买的套餐流量');
-							User::query()->where('id', $order->user_id)->increment('invite_num', $goods->invite_num? : 0, ['transfer_enable' => $userTraffic, 'reset_time' => $nextResetTime, 'expire_time' => $expireTime, 'enable' => 1]);
-						}else{
-							//预支付订单先给上账号时间用于流量重置判断
-							User::query()->where('id', $order->user_id)->update(['expire_time' => date('Y-m-d', strtotime("+".$goods->days." days", strtotime($user->expire_time)))]);
-						}
-
-						// 是否返利
-						if(Helpers::systemConfig()['referral_type'] && $order->user->referral_uid){
-							//获取历史返利记录
-							$referral = ReferralLog::where('user_id', $order->user_id)->get();
-							// 无记录 / 首次返利
-							if(!$referral && self::$systemConfig['is_invite_register']){
-								// 邀请注册功能开启时,返还邀请者邀请名额
-								User::query()->where('id', $order->user->referral_uid)->increment('invite_num', 1);
-							}
-							//按照返利模式进行返利判断
-							if(Helpers::systemConfig()['referral_type'] == 2 || (Helpers::systemConfig()['referral_type'] == 1 && !$referral)){
-								$this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount*self::$systemConfig['referral_percent']);
-							}
-						}
-
-						break;
-					default:
-						Log::info('【处理订单】出现错误-未知套餐类型');
-				}
-			}
-
-			DB::commit();
-			Log::info('【'.$pay_type_name.'】处理成功');
-		} catch(Exception $e){
-			DB::rollBack();
-			Log::info('【'.$pay_type_name.'】回调更新支付单和订单异常:'.$e->getMessage());
-		}
-
-		return FALSE;
-	}
-
-	private function activePrepaidOrder($oid)
-	{
-		// 取出预支付订单
-		$prepaidOrder = Order::query()->where('oid', $oid)->first();
-		//去除使用中的套餐和 流量包
-		Order::query()->where('user_id', $prepaidOrder->user_id)->where('status', 2)->where('is_expire', 0)->update(['expire_at' => date('Y-m-d H:i:s'), 'is_expire' => 1]);
-		//取出对应套餐信息
-		$prepaidGood = Goods::query()->where('id', $prepaidOrder->goods_id)->first();
-		//激活预支付套餐
-		Order::query()->where('oid', $prepaidOrder->oid)->update(['expire_at' => date("Y-m-d H:i:s", strtotime("+".$prepaidGood->days." days")), 'status' => 2]);
-		//取出用户信息
-		$user = User::query()->where('id', $prepaidOrder->user_id)->first();
-
-		$userTraffic = $prepaidGood->traffic*1048576;
-		//拿出可能存在的其余套餐, 推算 最新的到期时间
-		$expire_time = date('Y-m-d', strtotime("+".$prepaidGood->days." days"));
-		$prepaidOrders = Order::query()->where('user_id', $prepaidOrder->user_id)->where('status', 3)->get();
-		foreach($prepaidOrders as $paidOrder){
-			//取出对应套餐信息
-			$goods = Goods::query()->where('id', $paidOrder->goods_id)->first();
-			$expire_time = date('Y-m-d', strtotime("+".$goods->days." days", strtotime($expire_time)));
-		}
-		//计算账号下一个重置时间
-		$nextResetTime = date('Y-m-d', strtotime("+".$prepaidGood->period." days"));
-		if($nextResetTime >= $expire_time){
-			$nextResetTime = NULL;
-		}
-
-		// 用户默认标签
-		$defaultLabels = self::$systemConfig['initial_labels_for_user']? explode(',', self::$systemConfig['initial_labels_for_user']) : [];
-		//取出 商品默认标签  & 系统默认标签 去重
-		$newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->where('goods_id', $prepaidOrder->goods_id)->pluck('label_id')->toArray(), $defaultLabels)));
-
-		// 生成标签
-		foreach($newUserLabels as $vo){
-			$obj = new UserLabel();
-			$obj->user_id = $prepaidOrder->user_id;
-			$obj->label_id = $vo;
-			$obj->save();
-		}
-		Helpers::addUserTrafficModifyLog($prepaidOrder->user_id, $prepaidOrder->oid, $user->transfer_enable, $userTraffic, '[预支付订单激活]加上用户购买的套餐流量');
-		User::query()->where('id', $prepaidOrder->user_id)->increment('invite_num', $prepaidOrder->invite_num? : 0, ['u' => 0, 'd' => 0, 'transfer_enable' => $userTraffic, 'expire_time' => $expire_time, 'reset_time' => $nextResetTime]);
-	}
-}

+ 2 - 0
app/Components/Helpers.php

@@ -105,6 +105,8 @@ class Helpers
 			$data[$vo->name] = $vo->value;
 		}
 
+		$data['is_onlinePay'] = ($data['is_AliPay'] || $data['is_QQPay'] || $data['is_WeChatPay'])? : 0;
+
 		return $data;
 	}
 

+ 1 - 3
app/Console/Commands/AutoClearLog.php

@@ -19,14 +19,12 @@ use Log;
 
 class AutoClearLog extends Command
 {
-	protected static $systemConfig;
 	protected $signature = 'autoClearLog';
 	protected $description = '自动清除日志';
 
 	public function __construct()
 	{
 		parent::__construct();
-		self::$systemConfig = Helpers::systemConfig();
 	}
 
 	public function handle()
@@ -34,7 +32,7 @@ class AutoClearLog extends Command
 		$jobStartTime = microtime(TRUE);
 
 		// 清除日志
-		if(self::$systemConfig['is_clear_log']){
+		if(Helpers::systemConfig()['is_clear_log']){
 			$this->clearLog();
 		}
 

+ 39 - 7
app/Console/Commands/AutoJob.php

@@ -42,6 +42,9 @@ class AutoJob extends Command
 	{
 		$jobStartTime = microtime(TRUE);
 
+		// 关闭超时未支付在线订单
+		$this->closePayments();
+
 		// 关闭超时未支付订单
 		$this->closeOrders();
 
@@ -64,8 +67,8 @@ class AutoJob extends Command
 		$this->checkNodeStatus();
 
 		// 检查 维护模式
-		if(Helpers::systemConfig()['maintenance_mode']){
-			if(strtotime(Helpers::systemConfig()['maintenance_time']) < time()){
+		if(self::$systemConfig['maintenance_mode']){
+			if(strtotime(self::$systemConfig['maintenance_time']) < time()){
 				Config::query()->where('name', 'maintenance_mode')->update(['value' => 0]);
 				Config::query()->where('name', 'maintenance_time')->update(['value' => '']);
 			}
@@ -77,8 +80,8 @@ class AutoJob extends Command
 		Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒');
 	}
 
-	// 关闭超时未支付订单
-	private function closeOrders()
+	// 关闭超时未在线支付订单
+	private function closePayments()
 	{
 		// 关闭超时未支付的在线支付订单(在线支付收款二维码超过30分钟自动关闭,关闭后无法再支付,所以我们限制15分钟内必须付款)
 		$paymentList = Payment::query()->where('status', 0)->where('created_at', '<=', date("Y-m-d H:i:s", strtotime("-15 minutes")))->get();
@@ -96,12 +99,41 @@ class AutoJob extends Command
 					if($payment->order->coupon_id){
 						Coupon::query()->where('id', $payment->order->coupon_id)->update(['status' => 0]);
 
-						Helpers::addCouponLog($payment->order->coupon_id, $payment->order->goods_id, $payment->oid, '订单超时未支付,自动退回');
+						Helpers::addCouponLog($payment->order->coupon_id, $payment->order->goods_id, $payment->oid, '在线订单超时未支付,自动退回');
+					}
+				}
+
+				DB::commit();
+			}catch(Exception $e){
+				Log::info('【异常】自动关闭超时未支付在线订单:'.$e);
+
+				DB::rollBack();
+			}
+		}
+	}
+
+	// 关闭超时未支付订单
+	private function closeOrders()
+	{
+		// 关闭超时未支付的在线支付订单(在线支付收款二维码超过30分钟自动关闭,关闭后无法再支付,所以我们限制15分钟内必须付款)
+		$orderList = Order::query()->where('status', 0)->where('created_at', '<=', date("Y-m-d H:i:s", strtotime("-30 minutes")))->get();
+		if($orderList->isNotEmpty()){
+			DB::beginTransaction();
+			try{
+				foreach($orderList as $order){
+					// 关闭订单
+					Order::query()->whereKey($order->oid)->update(['status' => -1]);
+
+					// 退回优惠券
+					if($order->coupon_id){
+						Coupon::query()->where('id', $order->coupon_id)->update(['status' => 0]);
+
+						Helpers::addCouponLog($order->coupon_id, $order->goods_id, $order->oid, '订单超时未支付,自动退回');
 					}
 				}
 
 				DB::commit();
-			} catch(Exception $e){
+			}catch(Exception $e){
 				Log::info('【异常】自动关闭超时未支付订单:'.$e);
 
 				DB::rollBack();
@@ -239,7 +271,7 @@ class AutoJob extends Command
 	// 检测节点是否离线
 	private function checkNodeStatus()
 	{
-		if(Helpers::systemConfig()['is_node_offline']){
+		if(self::$systemConfig['is_node_offline']){
 			$nodeList = SsNode::query()->where('is_transit', 0)->where('status', 1)->get();
 			foreach($nodeList as $node){
 				// 10分钟内无节点负载信息则认为是后端炸了

+ 0 - 3
app/Console/Commands/AutoPingNode.php

@@ -2,7 +2,6 @@
 
 namespace App\Console\Commands;
 
-use App\Components\Helpers;
 use App\Components\NetworkDetection;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNodePing;
@@ -11,14 +10,12 @@ use Log;
 
 class AutoPingNode extends Command
 {
-	private static $systemConfig;
 	protected $signature = 'autoPingNode';
 	protected $description = '节点定时Ping测速';
 
 	public function __construct()
 	{
 		parent::__construct();
-		self::$systemConfig = Helpers::systemConfig();
 	}
 
 	public function handle()

+ 1 - 3
app/Console/Commands/AutoReportNode.php

@@ -11,21 +11,19 @@ use Log;
 
 class AutoReportNode extends Command
 {
-	protected static $systemConfig;
 	protected $signature = 'autoReportNode';
 	protected $description = '自动报告节点昨日使用情况';
 
 	public function __construct()
 	{
 		parent::__construct();
-		self::$systemConfig = Helpers::systemConfig();
 	}
 
 	public function handle()
 	{
 		$jobStartTime = microtime(TRUE);
 
-		if(self::$systemConfig['node_daily_report']){
+		if(Helpers::systemConfig()['node_daily_report']){
 			$nodeList = SsNode::query()->where('status', 1)->get();
 			if(!$nodeList->isEmpty()){
 				$msg = "|节点|上行流量|下行流量|合计|\r\n| :------ | :------ | :------ |\r\n";

+ 3 - 7
app/Console/Commands/ServiceTimer.php

@@ -2,8 +2,7 @@
 
 namespace App\Console\Commands;
 
-use App\Components\Callback;
-use App\Components\Helpers;
+use App\Http\Controllers\ServiceController;
 use App\Http\Models\Order;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
@@ -14,15 +13,12 @@ use Log;
 
 class ServiceTimer extends Command
 {
-	use Callback;
-	protected static $systemConfig;
 	protected $signature = 'serviceTimer';
 	protected $description = '服务计时器';
 
 	public function __construct()
 	{
 		parent::__construct();
-		self::$systemConfig = Helpers::systemConfig();
 	}
 
 	public function handle()
@@ -44,8 +40,8 @@ class ServiceTimer extends Command
 		//获取失效的套餐
 		$orderList = Order::query()->with(['goods'])->where('status', 2)->where('is_expire', 0)->whereHas('goods', function($q){ $q->where('type', 2); })->where('expire_at', '<=', date('Y-m-d H:i:s'))->get();
 		if($orderList->isNotEmpty()){
-			DB::beginTransaction();
 			try{
+				DB::beginTransaction();
 				foreach($orderList as $order){
 					// 过期本订单
 					Order::query()->where('oid', $order->oid)->update(['is_expire' => 1]);
@@ -75,7 +71,7 @@ class ServiceTimer extends Command
 					$prepaidOrder = Order::query()->where('user_id', $order->user_id)->where('status', 3)->orderBy('oid', 'asc')->first();
 
 					if($prepaidOrder){
-						$this->activePrepaidOrder($prepaidOrder->oid);
+						(new ServiceController)->activePrepaidOrder($prepaidOrder->oid);
 					}
 				}
 

+ 29 - 5
app/Http/Controllers/AdminController.php

@@ -291,7 +291,7 @@ class AdminController extends Controller
 			$view['obfs_list'] = Helpers::obfsList();
 			$view['level_list'] = Helpers::levelList();
 			$view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
-			$view['initial_labels'] = explode(",", Helpers::systemConfig()['initial_labels_for_user']);
+			$view['initial_labels'] = explode(",", self::$systemConfig['initial_labels_for_user']);
 
 			return Response::view('admin.addUser', $view);
 		}
@@ -1956,7 +1956,7 @@ EOF;
 	// 系统设置
 	public function system()
 	{
-		$view = Helpers::systemConfig();
+		$view = self::$systemConfig;
 		$view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
 		return Response::view('admin.system', $view);
@@ -1990,9 +1990,33 @@ EOF;
 			}
 		}
 
+		// 支付设置判断
+		if(in_array($name, ['is_AliPay', 'is_QQPay', 'is_WeChatPay']) && $value != ''){
+			switch($value){
+				case 'f2fpay':
+					if(!self::$systemConfig['f2fpay_app_id'] || !self::$systemConfig['f2fpay_private_key'] || !self::$systemConfig['f2fpay_public_key']){
+						return Response::json(['status' => 'fail', 'message' => '请先设置【支付宝F2F】必要参数']);
+					}
+					break;
+				case 'codepay':
+					if(!self::$systemConfig['codepay_url'] || !self::$systemConfig['codepay_id'] || !self::$systemConfig['codepay_key']){
+						return Response::json(['status' => 'fail', 'message' => '请先设置【码支付】必要参数']);
+					}
+					break;
+				case 'payjs':
+					if(!self::$systemConfig['payjs_mch_id'] || !self::$systemConfig['payjs_key']){
+						return Response::json(['status' => 'fail', 'message' => '请先设置【PayJs】必要参数']);
+					}
+					break;
+				default:
+					return Response::json(['status' => 'fail', 'message' => '未知支付渠道']);
+					break;
+			}
+		}
+
 		// 演示环境禁止修改特定配置项
 		if(env('APP_DEMO')){
-			$denyConfig = ['website_url', 'min_rand_traffic', 'max_rand_traffic', 'push_bear_send_key', 'push_bear_qrcode', 'is_forbid_china', 'alipay_partner', 'alipay_key', 'alipay_transport', 'alipay_sign_type', 'alipay_private_key', 'alipay_public_key', 'website_security_code'];
+			$denyConfig = ['website_url', 'min_rand_traffic', 'max_rand_traffic', 'push_bear_send_key', 'push_bear_qrcode', 'is_forbid_china', 'website_security_code'];
 
 			if(in_array($name, $denyConfig)){
 				return Response::json(['status' => 'fail', 'message' => '演示环境禁止修改该配置']);
@@ -2013,9 +2037,9 @@ EOF;
 	//推送通知测试
 	public function sendTestNotification()
 	{
-		if(Helpers::systemConfig()['is_notification']){
+		if(self::$systemConfig['is_notification']){
 			$result = PushNotification::send('这是测试的标题', 'SSRPanel_OM测试内容');
-			switch(Helpers::systemConfig()['is_notification']){
+			switch(self::$systemConfig['is_notification']){
 				case 1:
 					if(!$result->errno){
 						return Response::json(['status' => 'success', 'message' => '发送成功,请查看手机是否收到推送消息']);

+ 0 - 56
app/Http/Controllers/Api/AlipayController.php

@@ -1,56 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\Api;
-
-use App\Components\AlipayNotify;
-use App\Components\Callback;
-use App\Http\Controllers\Controller;
-use Illuminate\Http\Request;
-use Log;
-
-class AlipayController extends Controller
-{
-	use Callback;
-
-	// 接收GET请求
-	public function index(Request $request)
-	{
-		Log::info("【支付宝国际】回调接口[GET]:".var_export($request->all(), TRUE).'['.getClientIp().']');
-		exit("【支付宝国际】接口正常");
-	}
-
-	// 接收POST请求
-	public function store(Request $request)
-	{
-		Log::info("【支付宝国际】回调接口[POST]:".var_export($request->all(), TRUE));
-
-		$alipayNotify = new AlipayNotify(self::$systemConfig['alipay_sign_type'], self::$systemConfig['alipay_partner'], self::$systemConfig['alipay_key'], self::$systemConfig['alipay_private_key'], self::$systemConfig['alipay_public_key'], self::$systemConfig['alipay_transport']);
-
-		// 验证支付宝交易
-		$result = "fail";
-		$verify_result = $alipayNotify->verifyNotify();
-		if($verify_result){ // 验证成功
-			$result = "success";
-			if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS'){
-				// 商户订单号
-				$data = [];
-				$data['out_trade_no'] = $request->input('out_trade_no');
-				// 支付宝交易号
-				$data['trade_no'] = $request->input('trade_no');
-				// 交易状态
-				$data['trade_status'] = $request->input('trade_status');
-				// 交易金额(这里是按照结算货币汇率的金额,和rmb_fee不相等)
-				$data['total_fee'] = $request->input('total_fee');
-
-				$this->tradePaid($data, 4);
-			}else{
-				Log::info('支付宝国际-POST:交易失败['.getClientIp().']');
-			}
-		}else{
-			Log::info('支付宝国际-POST:验证失败['.getClientIp().']');
-		}
-
-		// 返回验证结果
-		exit($result);
-	}
-}

+ 0 - 89
app/Http/Controllers/Api/F2fpayController.php

@@ -1,89 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\Api;
-
-use App\Components\Callback;
-use App\Http\Controllers\Controller;
-use Exception;
-use Illuminate\Http\Request;
-use InvalidArgumentException;
-use Log;
-use Payment\Client;
-use Payment\Exceptions\ClassNotFoundException;
-use Payment\Exceptions\GatewayException;
-
-class F2fpayController extends Controller
-{
-	use Callback;
-
-	// 接收GET请求
-	public function index(Request $request)
-	{
-		Log::info("【支付宝当面付】回调接口[GET]:".var_export($request->all(), TRUE).'['.getClientIp().']');
-		exit("【支付宝当面付】接口正常");
-	}
-
-	// 接收POST请求
-	public function store(Request $request)
-	{
-		Log::info("【支付宝当面付】回调接口[POST]:".var_export($request->all(), TRUE));
-		$aliConfig = [
-			'use_sandbox'     => FALSE,
-			'app_id'          => self::$systemConfig['f2fpay_app_id'],
-			'sign_type'       => 'RSA2',
-			'ali_public_key'  => self::$systemConfig['f2fpay_public_key'],
-			'rsa_private_key' => self::$systemConfig['f2fpay_private_key'],
-			'notify_url'      => self::$systemConfig['website_url']."/api/f2fpay", // 异步回调接口
-			'return_url'      => self::$systemConfig['website_url'],
-		];
-
-		$data = [
-			'trade_no'       => $request->input('out_trade_no'),
-			'transaction_id' => $request->input('trade_no'),
-		];
-
-		// 使用
-		try{
-			$client = new Client(Client::ALIPAY, $aliConfig);
-			$verify_result = $client->tradeQuery($data);
-			Log::info("【支付宝当面付】回调验证查询:".var_export($verify_result, TRUE));
-		} catch(InvalidArgumentException $e){
-			Log::error("【支付宝当面付】回调信息错误: ".$e->getMessage());
-			exit;
-		} catch(GatewayException $e){
-			Log::error("【支付宝当面付】建立支付错误: ".$e->getMessage());
-			exit;
-		} catch(ClassNotFoundException $e){
-			Log::error("【支付宝当面付】未知类型: ".$e->getMessage());
-			exit;
-		} catch(Exception $e){
-			Log::error("【支付宝当面付】错误: ".$e->getMessage());
-			exit;
-		}
-
-		$result = "fail";
-		if($verify_result['code'] == 10000 && $verify_result['msg'] == "Success"){ // 验证成功
-			$result = "success";
-			if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS'){
-				// 商户订单号
-				$data = [];
-				$data['out_trade_no'] = $request->input('out_trade_no');
-				// 支付宝交易号
-				$data['trade_no'] = $request->input('trade_no');
-				// 交易状态
-				$data['trade_status'] = $request->input('trade_status');
-				// 交易金额(这里是按照结算货币汇率的金额,和rmb_fee不相等)
-				$data['total_amount'] = $request->input('total_amount');
-
-				$this->tradePaid($data, 5);
-			}else{
-				Log::info('支付宝当面付-POST:交易失败['.getClientIp().']');
-			}
-		}else{
-			Log::info('支付宝当面付-POST:验证失败['.getClientIp().']');
-		}
-
-		// 返回验证结果
-		exit($result);
-	}
-}

+ 0 - 58
app/Http/Controllers/Api/PayJsController.php

@@ -1,58 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\Api;
-
-use App\Components\Callback;
-use App\Http\Controllers\Controller;
-use Illuminate\Http\Request;
-use Log;
-use Xhat\Payjs\Payjs;
-
-class PayJsController extends Controller
-{
-	use Callback;
-
-	// 接收GET请求
-	public function index(Request $request)
-	{
-		Log::info("【PayJs】回调接口[GET]:".var_export($request->all(), TRUE).'['.getClientIp().']');
-		exit("【PayJs】接口正常");
-	}
-
-	// 接收POST请求
-	public function store(Request $request)
-	{
-		Log::info("【PayJs】回调接口[POST]:".var_export($request->all(), TRUE));
-		$config = [
-			'mchid' => self::$systemConfig['payjs_mch_id'],
-			'key'   => self::$systemConfig['payjs_key'],
-		];
-
-		// 初始化
-		$payjs = new Payjs($config);
-		$notify_info = $payjs->notify();
-
-		// 使用
-
-		$result = "fail";
-		if($notify_info['return_code'] == 1){ // 验证成功
-			$result = "success";
-			// 商户订单号
-			$data = [];
-			$data['out_trade_no'] = $request->input('out_trade_no');
-			// 接口交易号
-			$data['trade_no'] = $request->input('payjs_order_id');
-			// 交易状态
-			$data['trade_status'] = $request->input('return_code');
-			// 交易金额(这里是按照结算货币汇率的金额,和rmb_fee不相等)
-			$data['total_amount'] = $request->input('total_fee');
-
-			$this->tradePaid($data, 6);
-		}else{
-			Log::info('PayJs-POST:验证失败['.getClientIp().']');
-		}
-
-		// 返回验证结果
-		exit($result);
-	}
-}

+ 0 - 25
app/Http/Controllers/Controller.php

@@ -3,7 +3,6 @@
 namespace App\Http\Controllers;
 
 use App\Components\Helpers;
-use App\Http\Models\ReferralLog;
 use App\Http\Models\SensitiveWords;
 use App\Http\Models\SsGroup;
 use App\Http\Models\SsNode;
@@ -116,30 +115,6 @@ class Controller extends BaseController
 		return $log->save();
 	}
 
-	/**
-	 * 添加返利日志
-	 *
-	 * @param int $userId    用户ID
-	 * @param int $refUserId 返利用户ID
-	 * @param int $oid       订单ID
-	 * @param int $amount    发生金额
-	 * @param int $refAmount 返利金额
-	 *
-	 * @return int
-	 */
-	public function addReferralLog($userId, $refUserId, $oid, $amount, $refAmount)
-	{
-		$log = new ReferralLog();
-		$log->user_id = $userId;
-		$log->ref_user_id = $refUserId;
-		$log->order_id = $oid;
-		$log->amount = $amount;
-		$log->ref_amount = $refAmount;
-		$log->status = 0;
-
-		return $log->save();
-	}
-
 	// 获取敏感词
 	public function sensitiveWords($type)
 	{

+ 177 - 0
app/Http/Controllers/Gateway/AbstractPayment.php

@@ -0,0 +1,177 @@
+<?php
+
+namespace App\Http\Controllers\Gateway;
+
+use App\Components\Helpers;
+use App\Http\Models\Goods;
+use App\Http\Models\GoodsLabel;
+use App\Http\Models\Order;
+use App\Http\Models\Payment;
+use App\Http\Models\ReferralLog;
+use App\Http\Models\User;
+use App\Http\Models\UserLabel;
+use Illuminate\Http\Request;
+use Log;
+
+abstract class AbstractPayment
+{
+	protected static $systemConfig;
+
+	function __construct()
+	{
+		self::$systemConfig = Helpers::systemConfig();
+	}
+
+	public static function generateGuid()
+	{
+		mt_srand((double)microtime()*10000);
+		$charid = strtoupper(md5(uniqid(mt_rand()+time(), TRUE)));
+		$hyphen = chr(45);
+		$uuid = chr(123)
+			.substr($charid, 0, 8).$hyphen
+			.substr($charid, 8, 4).$hyphen
+			.substr($charid, 12, 4).$hyphen
+			.substr($charid, 16, 4).$hyphen
+			.substr($charid, 20, 12)
+			.chr(125);
+		$uuid = str_replace(['}', '{', '-'], '', $uuid);
+		$uuid = substr($uuid, 0, 8);
+
+		return $uuid;
+	}
+
+	abstract public function purchase(Request $request);
+
+
+	abstract public function notify(Request $request);
+
+	abstract public function getReturnHTML(Request $request);
+
+	abstract public function getPurchaseHTML();
+
+	public function postPayment($sn, $method)
+	{
+		// 获取需要的信息
+		$payment = Payment::where('sn', $sn)->first();
+		$order = Order::find($payment->oid);
+		$goods = Goods::find($order->goods_id);
+		$user = User::find($order->user_id);
+
+		// 商品为流量或者套餐
+		switch($goods->type){
+			case 1:
+				$order->status = 2;
+				$order->save();
+				User::query()->where('id', $order->user_id)->increment('transfer_enable', $goods->traffic*1048576);
+				Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, $user->transfer_enable+$goods->traffic*1048576, '[在线支付]加上用户购买的套餐流量');
+				break;
+			case 2:
+				$activePlan = Order::query()
+					->where('user_id', $user->id)
+					->where('is_expire', 0)
+					->where('status', 2)
+					->with(['goods'])
+					->whereHas('goods', function($q){
+						$q->where('type', 2);
+					})
+					->exists();
+				// 2为开始生效,3为预支付
+				$order->status = $activePlan? 3 : 2;
+				$order->save();
+
+				if($activePlan){
+					// 预支付订单, 刷新账号有效时间用于流量重置判断
+					User::query()->where('id', $order->user_id)->update(['expire_time' => date('Y-m-d', strtotime("+".$goods->days." days", strtotime($user->expire_time)))]);
+				}else{
+					// 如果买的是套餐,则先将之前购买的套餐都无效化,重置用户已用、可用流量为0
+					Order::query()
+						->where('user_id', $user->id)
+						->with(['goods'])
+						->whereHas('goods', function($q){
+							$q->where('type', '<=', 2);
+						})
+						->where('is_expire', 0)
+						->where('status', 2)
+						->where('oid', '<>', $order->oid)
+						->update(['expire_at' => date('Y-m-d H:i:s'), 'is_expire' => 1]);
+
+					User::query()->where('id', $order->user_id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => 0]);
+					Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, 0, '[在线支付]用户购买新套餐,先清空流量');
+
+					$userTraffic = $goods->traffic*1048576;
+					// 添加账号有效期
+					$expireTime = date('Y-m-d', strtotime("+".$goods->days." days"));
+					//账号下一个重置时间
+					$nextResetTime = date('Y-m-d', strtotime("+".$goods->period." days"));
+					if($nextResetTime >= $expireTime){
+						$nextResetTime = NULL;
+					}
+
+					// 写入用户标签
+					if($goods->label){
+						// 删除用户所有标签
+						UserLabel::query()->where('user_id', $order->user_id)->delete();
+
+						//取出 商品默认标签  & 系统默认标签 去重
+						$newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->where('goods_id', $order->goods_id)->pluck('label_id')->toArray(), self::$systemConfig['initial_labels_for_user']? explode(',', self::$systemConfig['initial_labels_for_user']) : [])));
+
+						// 生成标签
+						foreach($newUserLabels as $Label){
+							$obj = new UserLabel();
+							$obj->user_id = $order->user_id;
+							$obj->label_id = $Label;
+							$obj->save();
+						}
+					}
+
+					User::query()->where('id', $order->user_id)->increment('invite_num', $goods->invite_num? : 0, ['transfer_enable' => $userTraffic, 'reset_time' => $nextResetTime, 'expire_time' => $expireTime, 'enable' => 1]);
+					Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, $userTraffic, '[在线支付]加上用户购买的套餐流量');
+				}
+
+				// 是否返利
+				if(self::$systemConfig['referral_type'] && $order->user->referral_uid){
+					//获取历史返利记录
+					$referral = ReferralLog::where('user_id', $order->user_id)->get();
+					// 无记录 / 首次返利
+					if(!$referral && self::$systemConfig['is_invite_register']){
+						// 邀请注册功能开启时,返还邀请者邀请名额
+						User::query()->where('id', $order->user->referral_uid)->increment('invite_num', 1);
+					}
+					//按照返利模式进行返利判断
+					if(self::$systemConfig['referral_type'] == 2 || (self::$systemConfig['referral_type'] == 1 && !$referral)){
+						$this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount*self::$systemConfig['referral_percent']);
+					}
+				}
+
+				break;
+			default:
+				Log::info('【处理订单】出现错误-未知套餐类型');
+		}
+
+		return 0;
+	}
+
+	/**
+	 * 添加返利日志
+	 *
+	 * @param int $userId    用户ID
+	 * @param int $refUserId 返利用户ID
+	 * @param int $oid       订单ID
+	 * @param int $amount    发生金额
+	 * @param int $refAmount 返利金额
+	 *
+	 * @return int
+	 */
+	private function addReferralLog($userId, $refUserId, $oid, $amount, $refAmount)
+	{
+		$log = new ReferralLog();
+		$log->user_id = $userId;
+		$log->ref_user_id = $refUserId;
+		$log->order_id = $oid;
+		$log->amount = $amount;
+		$log->ref_amount = $refAmount;
+		$log->status = 0;
+
+		return $log->save();
+	}
+}

+ 83 - 0
app/Http/Controllers/Gateway/AopF2F.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace App\Http\Controllers\Gateway;
+
+use App\Http\Models\Payment;
+use Auth;
+use Exception;
+use Omnipay\Alipay\Responses\AopCompletePurchaseResponse;
+use Omnipay\Alipay\Responses\AopTradePreCreateResponse;
+use Omnipay\Omnipay;
+use Response;
+
+class AopF2F extends AbstractPayment
+{
+	public function purchase($request)
+	{
+		$payment = new Payment();
+		$payment->sn = self::generateGuid();
+		$payment->user_id = Auth::user()->id;
+		$payment->oid = $request->input('oid');
+		$payment->amount = $request->input('amount');
+		$payment->save();
+
+		$gateway = $this->createGateway();
+
+		$request = $gateway->purchase();
+		$request->setBizContent([
+			'subject'      => parent::$systemConfig['subject_name']? : parent::$systemConfig['website_name'],
+			'out_trade_no' => $payment->sn,
+			'total_amount' => $payment->amount
+		]);
+
+		/** @var AopTradePreCreateResponse $response */
+		$aliResponse = $request->send();
+
+		$payment->qr_code = 'http://qr.topscan.com/api.php?text='.$aliResponse->getQrCode().'&bg=ffffff&fg=000000&pt=1c73bd&m=10&w=400&el=1&inpt=1eabfc&logo=https://t.alipayobjects.com/tfscom/T1Z5XfXdxmXXXXXXXX.png';//后备:https://cli.im/api/qrcode/code?text=".$aliResponse->getQrCode()."&mhid=5EfGCwztyckhMHcmI9ZcOKs
+		$payment->save();
+
+		return Response::json(['status' => 'success', 'data' => $payment->sn, 'message' => '创建订单成功!']);
+	}
+
+	private function createGateway()
+	{
+		$gateway = Omnipay::create('Alipay_AopF2F');
+		$gateway->setSignType('RSA2'); //RSA/RSA2
+		$gateway->setAppId(parent::$systemConfig['f2fpay_app_id']);
+		$gateway->setPrivateKey(parent::$systemConfig['f2fpay_private_key']); // 可以是路径,也可以是密钥内容
+		$gateway->setAlipayPublicKey(parent::$systemConfig['f2fpay_public_key']); // 可以是路径,也可以是密钥内容
+		$notifyUrl = (parent::$systemConfig['website_callback_url']? : parent::$systemConfig['website_url']).'/payment/notify';
+		$gateway->setNotifyUrl($notifyUrl);
+
+		return $gateway;
+	}
+
+	public function notify($request)
+	{
+		$gateway = $this->createGateway();
+		$aliRequest = $gateway->completePurchase();
+		$aliRequest->setParams($_POST);
+
+		try{
+			/** @var AopCompletePurchaseResponse $response */
+			$aliResponse = $aliRequest->send();
+			$pid = $aliResponse->data('out_trade_no');
+			if($aliResponse->isPaid()){
+				$this->postPayment($pid, '支付宝当面付');
+				exit('success');
+			}
+		}catch(Exception $e){
+			exit('fail');
+		}
+	}
+
+	public function getReturnHTML($request)
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+
+	public function getPurchaseHTML()
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+}

+ 95 - 0
app/Http/Controllers/Gateway/CodePay.php

@@ -0,0 +1,95 @@
+<?php
+
+namespace App\Http\Controllers\Gateway;
+
+use App\Components\Curl;
+use App\Http\Models\Payment;
+use Auth;
+use Response;
+
+class CodePay extends AbstractPayment
+{
+	public function purchase($request)
+	{
+		$payment = new Payment();
+		$payment->sn = self::generateGuid();
+		$payment->user_id = Auth::user()->id;
+		$payment->oid = $request->input('oid');
+		$payment->amount = $request->input('amount');
+		$payment->save();
+
+		$data = [
+			'id'         => parent::$systemConfig['codepay_id'],
+			'pay_id'     => $payment->sn,
+			'type'       => $request->input('method'),//1支付宝支付 2QQ钱包 3微信支付
+			'price'      => $payment->amount,
+			'page'       => 4,
+			'outTime'    => 900,
+			'param'      => '',
+			'notify_url' => (parent::$systemConfig['website_callback_url']? : parent::$systemConfig['website_url']).'/payment/notify',//通知地址
+			'return_url' => parent::$systemConfig['website_url'].'/payment/'.$payment->sn,//跳转地址
+		];
+
+		ksort($data); //重新排序$data数组
+		reset($data); //内部指针指向数组中的第一个元素
+
+		$sign = ''; //初始化需要签名的字符为空
+		$urls = ''; //初始化URL参数为空
+
+		foreach($data as $key => $val){ //遍历需要传递的参数
+			if($val == '' || $key == 'sign'){
+				continue;
+			} //跳过这些不参数签名
+			if($sign != ''){ //后面追加&拼接URL
+				$sign .= '&';
+				$urls .= '&';
+			}
+			$sign .= "$key=$val"; //拼接为url参数形式
+			$urls .= "$key=".urlencode($val); //拼接为url参数形式并URL编码参数值
+		}
+		$query = $urls.'&sign='.md5($sign.parent::$systemConfig['codepay_key']); //创建订单所需的参数
+		$url = parent::$systemConfig['codepay_url'].$query; //支付页面
+		$result = json_decode(Curl::send($url));
+
+		$payment->qr_code = $result->qrcode;// 获取收款二维码内容
+		$payment->save();
+
+		return Response::json(['status' => 'success', 'data' => $payment->sn, 'message' => '创建订单成功!']);
+	}
+
+	public function notify($request)
+	{
+		//以下五行无需更改
+		ksort($_POST); //排序post参数
+		reset($_POST); //内部指针指向数组中的第一个元素
+		$sign = '';//初始化
+		foreach($_POST as $key => $val){ //遍历POST参数
+			if($val == '' || $key == 'sign'){
+				continue;
+			} //跳过这些不签名
+			if($sign){
+				$sign .= '&';
+			} //第一个字符串签名不加& 其他加&连接起来参数
+			$sign .= "$key=$val"; //拼接为url参数形式
+		}
+		if(!$_POST['pay_no'] || md5($sign.parent::$systemConfig['codepay_key']) != $_POST['sign']){ //不合法的数据
+			exit('fail'); //返回失败,等待下次回调
+		}
+
+		$pay_id = $_POST['pay_id']; //需要充值的ID 或订单号 或用户名
+
+		$this->postPayment($pay_id, '码支付');
+
+		exit('success'); //返回成功 不要删除哦
+	}
+
+	public function getReturnHTML($request)
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+
+	public function getPurchaseHTML()
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+}

+ 71 - 0
app/Http/Controllers/Gateway/PayJs.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Http\Controllers\Gateway;
+
+use App\Http\Models\Payment;
+use Auth;
+use Log;
+use Response;
+use Xhat\Payjs\Payjs as Pay;
+
+class PayJs extends AbstractPayment
+{
+
+	public function purchase($request)
+	{
+		$payment = new Payment();
+		$payment->sn = self::generateGuid();
+		$payment->user_id = Auth::user()->id;
+		$payment->oid = $request->input('oid');
+		$payment->amount = $request->input('amount');
+		$payment->save();
+
+		$result = (new Pay($this->createGateway()))->native([
+			'body'         => parent::$systemConfig['subject_name']? : parent::$systemConfig['website_name'],
+			'total_fee'    => $payment->amount*100,
+			'out_trade_no' => $payment->sn,
+			'attach'       => '',
+			'notify_url'   => (parent::$systemConfig['website_callback_url']? : parent::$systemConfig['website_url']).'/payment/notify',
+		]);
+
+		if(!$result->return_code){
+			Log::error('PayJs '.$result->return_msg);
+		}
+		$payment->qr_code = $result->qrcode;// 获取收款二维码内容
+		$payment->save();
+
+		return Response::json(['status' => 'success', 'data' => $payment->sn, 'message' => '创建订单成功!']);
+	}
+
+	private function createGateway()
+	{
+		return $config = [
+			'mchid' => self::$systemConfig['payjs_mch_id'],   // 配置商户号
+			'key'   => self::$systemConfig['payjs_key'],   // 配置通信密钥
+		];
+
+	}
+
+	public function notify($request)
+	{
+		$data = (new Pay($this->createGateway()))->notify();
+
+		if($data['return_code'] == 1){
+			$this->postPayment($data['out_trade_no'], 6);
+			exit("success");
+		}
+		exit("fail");
+	}
+
+
+	public function getReturnHTML($request)
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+
+
+	public function getPurchaseHTML()
+	{
+		// TODO: Implement getReturnHTML() method.
+	}
+}

+ 93 - 209
app/Http/Controllers/PaymentController.php

@@ -2,9 +2,10 @@
 
 namespace App\Http\Controllers;
 
-use App\Components\AlipaySubmit;
-use App\Components\Callback;
 use App\Components\Helpers;
+use App\Http\Controllers\Gateway\AopF2F;
+use App\Http\Controllers\Gateway\CodePay;
+use App\Http\Controllers\Gateway\PayJs;
 use App\Http\Models\Coupon;
 use App\Http\Models\Goods;
 use App\Http\Models\Order;
@@ -12,17 +13,8 @@ use App\Http\Models\Payment;
 use App\Http\Models\PaymentCallback;
 use App\Http\Models\User;
 use Auth;
-use DB;
-use Exception;
 use Illuminate\Http\Request;
-use InvalidArgumentException;
-use Log;
-use Payment\Client;
-use Payment\Exceptions\ClassNotFoundException;
-use Payment\Exceptions\GatewayException;
 use Response;
-use Validator;
-use Xhat\Payjs\Payjs;
 
 /**
  * 支付控制器
@@ -33,22 +25,63 @@ use Xhat\Payjs\Payjs;
  */
 class PaymentController extends Controller
 {
-	use Callback;
+	private static $method;
+
+	public static function getClient()
+	{
+		switch(self::$method){
+			case 'f2fpay':
+				return new AopF2F();
+			case 'codepay':
+				return new Codepay();
+			case 'payjs':
+				return new PayJs();
+			default:
+				return NULL;
+		}
+	}
+
+	public static function notify(Request $request)
+	{
+		return self::getClient()->notify($request);
+	}
+
+	public static function returnHTML(Request $request)
+	{
+		return self::getClient()->getReturnHTML($request);
+	}
+
+	public static function purchaseHTML()
+	{
+		return Response::view('user.components.purchase');
+	}
+
+	public static function getStatus(Request $request)
+	{
+		$payment = Payment::whereSn($request->input('sn'))->first();
+		if($payment->status > 0){
+			return Response::json(['status' => 'success', 'data' => '', 'message' => '支付成功']);
+		}elseif($payment->status < 0){
+			return Response::json(['status' => 'error', 'data' => '', 'message' => '订单超时未支付,已自动关闭']);
+		}else{
+			return Response::json(['status' => 'fail', 'data' => '', 'message' => '等待支付']);
+		}
+	}
 
 	// 创建支付订单
-	public function create(Request $request)
+	public function purchase(Request $request)
 	{
 		$goods_id = $request->input('goods_id');
 		$coupon_sn = $request->input('coupon_sn');
-		$pay_type = $request->input('pay_type');
+		self::$method = $request->input('method');
 		$balance = $request->input('amount');
-		$goods = Goods::query()->where('status', 1)->where('id', $goods_id)->first();
+		$goods = Goods::query()->where('status', 1)->whereId($goods_id)->first();
 		if(isset($balance)){
 			if(!is_numeric($balance) || $balance <= 0){
 				return Response::json(['status' => 'fail', 'data' => '', 'message' => '充值余额不合规']);
 			}
 			$amount = $balance;
-		}elseif(isset($goods_id) && isset($pay_type)){
+		}elseif(isset($goods_id) && isset(self::$method)){
 			if(!$goods){
 				return Response::json(['status' => 'fail', 'data' => '', 'message' => '订单创建失败:商品或服务已下架']);
 			}
@@ -60,9 +93,9 @@ class PaymentController extends Controller
 			}
 
 			//非余额付款下,检查对应的在线支付是否开启
-			if($pay_type != 1){
+			if(self::$method != 1){
 				// 判断是否开启在线支付
-				if(!self::$systemConfig['is_alipay'] && !self::$systemConfig['is_f2fpay']){
+				if(!Helpers::systemConfig()['is_onlinePay']){
 					return Response::json(['status' => 'fail', 'data' => '', 'message' => '订单创建失败:系统并未开启在线支付功能']);
 				}
 
@@ -98,199 +131,69 @@ class PaymentController extends Controller
 			// 价格异常判断
 			if($amount < 0){
 				return Response::json(['status' => 'fail', 'data' => '', 'message' => '订单创建失败:订单总价异常']);
-			}elseif($amount == 0 && $pay_type != 1){
+			}elseif($amount == 0 && self::$method != 1){
 				return Response::json(['status' => 'fail', 'data' => '', 'message' => '订单创建失败:订单总价为0,无需使用在线支付']);
 			}
 
 			// 验证账号余额是否充足
-			if($pay_type == 1 && Auth::user()->balance < $amount){
+			if(self::$method == 1 && Auth::user()->balance < $amount){
 				return Response::json(['status' => 'fail', 'data' => '', 'message' => '您的余额不足,请先充值']);
 			}
 		}
 
-		try{
-			DB::beginTransaction();
-			$orderSn = date('ymdHis').mt_rand(100000, 999999);
-
-			// 生成订单
-			$order = new Order();
-			$order->order_sn = $orderSn;
-			$order->user_id = Auth::user()->id;
-			$order->goods_id = $balance? -1 : $goods_id;
-			$order->coupon_id = !empty($coupon)? $coupon->id : 0;
-			$order->origin_amount = $balance? : $goods->price;
-			$order->amount = $amount;
-			$order->expire_at = $balance? NULL : date("Y-m-d H:i:s", strtotime("+".$goods->days." days"));
-			$order->is_expire = 0;
-			$order->pay_way = $pay_type;
-			$order->status = 0;
-			$order->save();
-			// 生成支付单
-			if($pay_type == 1){
-				// 扣余额
-				User::query()->where('id', Auth::user()->id)->decrement('balance', $amount*100);
-
-				// 记录余额操作日志
-				$this->addUserBalanceLog(Auth::user()->id, $order->oid, Auth::user()->balance, Auth::user()->balance-$amount, -1*$amount, '购买商品:'.$goods->name);
-
-				$data = [];
-				$data['out_trade_no'] = $orderSn;
-				$this->tradePaid($data, 1);
-			}else{
-				if(self::$systemConfig['is_alipay'] && $pay_type == 4){
-					$pay_way = 2;
-					$parameter = [
-						"service"        => "create_forex_trade", // WAP:create_forex_trade_wap ,即时到帐:create_forex_trade
-						"partner"        => self::$systemConfig['alipay_partner'],
-						"notify_url"     => self::$systemConfig['website_url']."/api/alipay", // 异步回调接口
-						"return_url"     => self::$systemConfig['website_url'],
-						"out_trade_no"   => $orderSn,  // 订单号
-						"subject"        => "Package", // 订单名称
-						//"total_fee"      => $amount, // 金额
-						"rmb_fee"        => $amount,   // 使用RMB标价,不再使用总金额
-						"body"           => "",        // 商品描述,可为空
-						"currency"       => self::$systemConfig['alipay_currency'], // 结算币种
-						"product_code"   => "NEW_OVERSEAS_SELLER",
-						"_input_charset" => "utf-8"
-					];
-
-					// 建立请求
-					$alipaySubmit = new AlipaySubmit(self::$systemConfig['alipay_sign_type'], self::$systemConfig['alipay_partner'], self::$systemConfig['alipay_key'], self::$systemConfig['alipay_private_key']);
-					$result = $alipaySubmit->buildRequestForm($parameter, "post", "确认");
-				}elseif(self::$systemConfig['is_f2fpay'] && $pay_type == 5){
-					$pay_way = 2;
-					// TODO:goods表里增加一个字段用于自定义商品付款时展示的商品名称,
-					// TODO:这里增加一个随机商品列表,根据goods的价格随机取值
-
-					$aliConfig = [
-						'use_sandbox'     => FALSE, // 是否使用沙盒模式
-						'app_id'          => self::$systemConfig['f2fpay_app_id'],
-						'sign_type'       => 'RSA2', // RSA  RSA2
-						'ali_public_key'  => self::$systemConfig['f2fpay_public_key'],
-						'rsa_private_key' => self::$systemConfig['f2fpay_private_key'],
-						'limit_pay'       => [
-							//'balance',// 余额
-							//'moneyFund',// 余额宝
-							//'debitCardExpress',// 	借记卡快捷
-							//'creditCard',//信用卡
-							//'creditCardExpress',// 信用卡快捷
-							//'creditCardCartoon',//信用卡卡通
-							//'credit_group',// 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期)
-						], // 用户不可用指定渠道支付当有多个渠道时用“,”分隔
-						'notify_url'      => self::$systemConfig['website_url']."/api/f2fpay",
-						'return_url'      => self::$systemConfig['website_url'],
-						'fee_type'        => 'CNY', // 货币类型  当前仅支持该字段
-					];
-
-					$payData = [
-						'body'        => '',
-						'subject'     => self::$systemConfig['f2fpay_subject_name']? : self::$systemConfig['website_name'],
-						'trade_no'    => $orderSn,
-						'time_expire' => time()+9000, // 表示必须 1000s 内付款
-						'amount'      => $amount, // 单位为元 ,最小为0.01
-					];
-
-					try{
-						$client = new Client(Client::ALIPAY, $aliConfig);
-						$result = $client->pay(Client::ALI_CHANNEL_QR, $payData);
-					} catch(InvalidArgumentException $e){
-						Log::error("【支付宝当面付】输入信息错误: ".$e->getMessage());
-						exit;
-					} catch(GatewayException $e){
-						Log::error("【支付宝当面付】建立支付错误: ".$e->getMessage()." | ".var_dump($e->getRaw()));
-						exit;
-					} catch(ClassNotFoundException $e){
-						Log::error("【支付宝当面付】未知类型: ".$e->getMessage());
-						exit;
-					} catch(Exception $e){
-						Log::error("【支付宝当面付】错误: ".$e->getMessage());
-						exit;
-					}
-
-				}elseif($pay_type == 6){
-					$pay_way = 1;
-					// 配置通信参数
-					$config = [
-						'mchid' => self::$systemConfig['payjs_mch_id'],
-						'key'   => self::$systemConfig['payjs_key'],
-					];
-
-					// 初始化
-					$payjs = new Payjs($config);
-
-					$data = [
-						'body'         => '',
-						'total_fee'    => $amount,
-						'out_trade_no' => $orderSn,
-						'notify_url'   => self::$systemConfig['website_url']."/api/payjs",
-					];
-
-					$result = $payjs->native($data);
-					if(!$result['return_code']){
-						Log::error("【PayJs】错误: ".$result['return_msg']);
-
-						return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:支付渠道暂时无法提供支付信息!']);
-					}
-
-				}else{
-					return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:未知支付类型']);
-				}
-				$sn = makeRandStr(12);
-				$payment = new Payment();
-				$payment->sn = $sn;
-				$payment->user_id = Auth::user()->id;
-				$payment->oid = $order->oid;
-				$payment->order_sn = $orderSn;
-				$payment->pay_way = $pay_way? : 1;
-				$payment->amount = $amount;
-				if($pay_type == 4){
-					$payment->qr_code = $result;
-				}elseif($pay_type == 5){
-					$payment->qr_code = $result['qr_code'];
-					$payment->qr_url = 'http://qr.topscan.com/api.php?text='.$result['qr_code'].'&bg=ffffff&fg=000000&pt=1c73bd&m=10&w=400&el=1&inpt=1eabfc&logo=https://t.alipayobjects.com/tfscom/T1Z5XfXdxmXXXXXXXX.png'; //后备:https://cli.im/api/qrcode/code?text=".$result['qr_code']."&mhid=5EfGCwztyckhMHcmI9ZcOKs
-					$payment->qr_local_url = $payment->qr_url;
-				}elseif($pay_type == 6){
-					$payment->qr_code = $result['code_url'];
-					$payment->qr_url = $result['qrcode'];
-					$payment->qr_local_url = $payment->qr_url;
-				}
-				$payment->status = 0;
-				$payment->save();
+		$orderSn = date('ymdHis').mt_rand(100000, 999999);
+
+		// 生成订单
+		$order = new Order();
+		$order->order_sn = $orderSn;
+		$order->user_id = Auth::user()->id;
+		$order->goods_id = $balance? -1 : $goods_id;
+		$order->coupon_id = !empty($coupon)? $coupon->id : 0;
+		$order->origin_amount = $balance? : $goods->price;
+		$order->amount = $amount;
+		$order->expire_at = $balance? NULL : date("Y-m-d H:i:s", strtotime("+".$goods->days." days"));
+		$order->is_expire = 0;
+		$order->pay_way = self::$method;
+		$order->status = 0;
+		$order->save();
+
+		// 优惠券置为已使用
+		if(!empty($coupon)){
+			if($coupon->usage == 1){
+				$coupon->status = 1;
+				$coupon->save();
 			}
 
-			// 优惠券置为已使用
-			if(!empty($coupon)){
-				if($coupon->usage == 1){
-					$coupon->status = 1;
-					$coupon->save();
-				}
+			Helpers::addCouponLog($coupon->id, $goods_id, $order->oid, '订单支付使用');
+		}
 
-				Helpers::addCouponLog($coupon->id, $goods_id, $order->oid, '订单支付使用');
-			}
+		// 生成支付单
+		if(self::$method == 1){
+			// 扣余额
+			User::query()->where('id', Auth::user()->id)->decrement('balance', $amount*100);
 
-			DB::commit();
-			if($pay_type == 1){
-				return Response::json(['status' => 'success', 'data' => '', 'message' => '支付成功']);
-			}elseif($pay_type == 4){ // Alipay返回支付信息
-				return Response::json(['status' => 'success', 'data' => $result, 'message' => '创建订单成功,正在转到付款页面,请稍后']);
-			}elseif($pay_type == 5){
-				return Response::json(['status' => 'success', 'data' => $sn, 'message' => '创建订单成功,正在转到付款页面,请稍后']);
-			}
-		} catch(Exception $e){
-			DB::rollBack();
+			// 记录余额操作日志
+			$this->addUserBalanceLog(Auth::user()->id, $order->oid, Auth::user()->balance, Auth::user()->balance-$amount, -1*$amount, '购买商品:'.$goods->name);
+			$order = Order::query()->where('oid', $orderSn)->first();
+			$order->status = 2;
+			$order->save();
+			User::query()->where('id', $order->user_id)->increment('balance', $order->amount*100);
 
-			Log::error('创建支付订单失败:'.$e->getMessage());
+			// 余额变动记录日志
+			$this->addUserBalanceLog($order->user_id, $order->oid, $order->user->balance, $order->user->balance+$order->amount, $order->amount, '用户在线充值');
+		}else{
+			$request->merge(['oid' => $order->oid, 'amount' => $amount]);
 
-			return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建订单失败:'.$e->getMessage()]);
+			return self::getClient()->purchase($request);
 		}
 
-		return Response::json(['status' => 'fail', 'data' => '', 'message' => '未知错误']);
+		return FALSE;
 	}
 
 	// 支付单详情
 	public function detail($sn)
 	{
-		$payment = Payment::uid()->with(['order', 'order.goods'])->where('sn', $sn)->firstOrFail();
+		$payment = Payment::uid()->with(['order', 'order.goods'])->where('sn', $sn)->first();
 		$view['payment'] = $payment;
 		$view['name'] = $payment->order->goods? $payment->order->goods->name : '余额充值';
 		$view['days'] = $payment->order->goods? $payment->order->goods->days : 0;
@@ -298,25 +201,6 @@ class PaymentController extends Controller
 		return Response::view('payment.detail', $view);
 	}
 
-	// 获取订单支付状态
-	public function getStatus(Request $request)
-	{
-		$validator = Validator::make($request->all(), ['sn' => 'required|exists:payment,sn'], ['sn.required' => '请求失败:缺少sn', 'sn.exists' => '支付失败:支付单不存在']);
-
-		if($validator->fails()){
-			return Response::json(['status' => 'error', 'data' => '', 'message' => $validator->getMessageBag()->first()]);
-		}
-
-		$payment = Payment::uid()->where('sn', $request->input('sn'))->first();
-		if($payment->status > 0){
-			return Response::json(['status' => 'success', 'data' => '', 'message' => '支付成功']);
-		}elseif($payment->status < 0){
-			return Response::json(['status' => 'error', 'data' => '', 'message' => '订单超时未支付,已自动关闭']);
-		}else{
-			return Response::json(['status' => 'fail', 'data' => '', 'message' => '等待支付']);
-		}
-	}
-
 	// 回调日志
 	public function callbackList(Request $request)
 	{

+ 59 - 0
app/Http/Controllers/ServiceController.php

@@ -0,0 +1,59 @@
+<?php
+
+
+namespace App\Http\Controllers;
+
+use App\Components\Helpers;
+use App\Http\Models\Goods;
+use App\Http\Models\GoodsLabel;
+use App\Http\Models\Order;
+use App\Http\Models\User;
+use App\Http\Models\UserLabel;
+
+class ServiceController extends Controller
+{
+	public function activePrepaidOrder($oid)
+	{
+		// 取出预支付订单
+		$prepaidOrder = Order::find($oid);
+		//去除使用中的套餐和 流量包
+		Order::query()->where('user_id', $prepaidOrder->user_id)->where('status', 2)->where('is_expire', 0)->update(['expire_at' => date('Y-m-d H:i:s'), 'is_expire' => 1]);
+		//取出对应套餐信息
+		$prepaidGood = Goods::query()->where('id', $prepaidOrder->goods_id)->first();
+		//激活预支付套餐
+		Order::query()->where('oid', $prepaidOrder->oid)->update(['expire_at' => date("Y-m-d H:i:s", strtotime("+".$prepaidGood->days." days")), 'status' => 2]);
+		//取出用户信息
+		$user = User::query()->where('id', $prepaidOrder->user_id)->first();
+
+		$userTraffic = $prepaidGood->traffic*1048576;
+		//拿出可能存在的其余套餐, 推算 最新的到期时间
+		$expire_time = date('Y-m-d', strtotime("+".$prepaidGood->days." days"));
+		$prepaidOrders = Order::query()->where('user_id', $prepaidOrder->user_id)->where('status', 3)->get();
+		foreach($prepaidOrders as $paidOrder){
+			//取出对应套餐信息
+			$goods = Goods::query()->where('id', $paidOrder->goods_id)->first();
+			$expire_time = date('Y-m-d', strtotime("+".$goods->days." days", strtotime($expire_time)));
+		}
+		//计算账号下一个重置时间
+		$nextResetTime = date('Y-m-d', strtotime("+".$prepaidGood->period." days"));
+		if($nextResetTime >= $expire_time){
+			$nextResetTime = NULL;
+		}
+
+		// 用户默认标签
+		$defaultLabels = Helpers::systemConfig()['initial_labels_for_user']? explode(',', Helpers::systemConfig()['initial_labels_for_user']) : [];
+		//取出 商品默认标签  & 系统默认标签 去重
+		$newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->where('goods_id', $prepaidOrder->goods_id)->pluck('label_id')->toArray(), $defaultLabels)));
+
+		// 生成标签
+		foreach($newUserLabels as $vo){
+			$obj = new UserLabel();
+			$obj->user_id = $prepaidOrder->user_id;
+			$obj->label_id = $vo;
+			$obj->save();
+		}
+		Helpers::addUserTrafficModifyLog($prepaidOrder->user_id, $prepaidOrder->oid, $user->transfer_enable, $userTraffic, '[预支付订单激活]加上用户购买的套餐流量');
+		User::query()->where('id', $prepaidOrder->user_id)->increment('invite_num', $prepaidOrder->invite_num? : 0, ['u' => 0, 'd' => 0, 'transfer_enable' => $userTraffic, 'expire_time' => $expire_time, 'reset_time' => $nextResetTime]);
+	}
+
+}

+ 2 - 2
app/Http/Controllers/SubscribeController.php

@@ -231,7 +231,7 @@ class SubscribeController extends Controller
 	{
 		$text = '到期时间: '.$user->expire_time;
 
-		return 'ssr://'.base64url_encode('0.0.0.1:1:origin:none:plain:'.base64url_encode('0000').'/?obfsparam=&protoparam=&remarks='.base64url_encode($text).'&group='.base64url_encode(Helpers::systemConfig()['website_name']).'&udpport=0&uot=0')."\n";
+		return 'ssr://'.base64url_encode('0.0.0.1:1:origin:none:plain:'.base64url_encode('0000').'/?obfsparam=&protoparam=&remarks='.base64url_encode($text).'&group='.base64url_encode(self::$systemConfig['website_name']).'&udpport=0&uot=0')."\n";
 	}
 
 	/**
@@ -245,6 +245,6 @@ class SubscribeController extends Controller
 	{
 		$text = '剩余流量: '.flowAutoShow($user->transfer_enable-$user->u-$user->d);
 
-		return 'ssr://'.base64url_encode('0.0.0.2:1:origin:none:plain:'.base64url_encode('0000').'/?obfsparam=&protoparam=&remarks='.base64url_encode($text).'&group='.base64url_encode(Helpers::systemConfig()['website_name']).'&udpport=0&uot=0')."\n";
+		return 'ssr://'.base64url_encode('0.0.0.2:1:origin:none:plain:'.base64url_encode('0000').'/?obfsparam=&protoparam=&remarks='.base64url_encode($text).'&group='.base64url_encode(self::$systemConfig['website_name']).'&udpport=0&uot=0')."\n";
 	}
 }

+ 3 - 4
app/Http/Controllers/UserController.php

@@ -2,7 +2,6 @@
 
 namespace App\Http\Controllers;
 
-use App\Components\Callback;
 use App\Components\Helpers;
 use App\Components\PushNotification;
 use App\Http\Models\Article;
@@ -49,7 +48,6 @@ use Validator;
  */
 class UserController extends Controller
 {
-	use Callback;
 	protected static $systemConfig;
 
 	function __construct()
@@ -265,6 +263,7 @@ class UserController extends Controller
 		// 有重置日时按照重置日为标准,否者就以过期日为标准
 		$dataPlusDays = Auth::user()->reset_time? Auth::user()->reset_time : Auth::user()->expire_time;
 		$view['dataPlusDays'] = $dataPlusDays > date('Y-m-d')? round((strtotime($dataPlusDays)-strtotime(date('Y-m-d')))/86400) : 0;
+		$view['purchaseHTML'] = PaymentController::purchaseHTML();
 
 		return Response::view('user.services', $view);
 	}
@@ -314,7 +313,7 @@ class UserController extends Controller
 		}elseif($prepaidOrder->status != 3){
 			return Response::json(['status' => 'fail', 'data' => '', 'message' => '非预支付订单,无需再次启动!']);
 		}else{
-			$this->activePrepaidOrder($oid);
+			(new ServiceController)->activePrepaidOrder($oid);
 		}
 
 		return Response::json(['status' => 'success', 'data' => '', 'message' => '激活成功']);
@@ -512,7 +511,7 @@ class UserController extends Controller
 		$dataPlusDays = Auth::user()->reset_time? Auth::user()->reset_time : Auth::user()->expire_time;
 		$view['dataPlusDays'] = $dataPlusDays > date('Y-m-d')? round((strtotime($dataPlusDays)-strtotime(date('Y-m-d')))/86400) : 0;
 		$view['activePlan'] = Order::uid()->with(['goods'])->where('is_expire', 0)->where('status', 2)->whereHas('goods', function($q){ $q->where('type', 2); })->exists();
-
+		$view['purchaseHTML'] = PaymentController::purchaseHTML();
 		$view['goods'] = $goods;
 
 		return Response::view('user.buy', $view);

+ 1 - 2
app/Http/Middleware/VerifyCsrfToken.php

@@ -12,7 +12,6 @@ class VerifyCsrfToken extends Middleware
 	 * @var array
 	 */
 	protected $except = [
-		"payment/*",
-		"checkIn"
+		"payment/notify"
 	];
 }

+ 1 - 2
app/Http/Models/NotificationLog.php

@@ -11,8 +11,6 @@ use Illuminate\Support\Carbon;
  * 推送通知日志
  * Class NotificationLog
  *
- * @package App\Http\Models
- * @mixin Eloquent
  * @property int         $id
  * @property int         $type       类型:1-邮件、2-ServerChan、3-Bark
  * @property string      $address    收信地址
@@ -34,6 +32,7 @@ use Illuminate\Support\Carbon;
  * @method static Builder|NotificationLog whereTitle($value)
  * @method static Builder|NotificationLog whereType($value)
  * @method static Builder|NotificationLog whereUpdatedAt($value)
+ * @mixin Eloquent
  */
 class NotificationLog extends Model
 {

+ 0 - 78
app/Http/Models/OrderGoods.php

@@ -1,78 +0,0 @@
-<?php
-
-namespace App\Http\Models;
-
-use Eloquent;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\Model;
-use Illuminate\Support\Carbon;
-
-/**
- * 订单商品
- * Class OrderGoods
- *
- * @package App\Http\Models
- * @mixin Eloquent
- * @property int         $id
- * @property int         $oid          订单ID
- * @property string      $order_sn     订单编号
- * @property int         $user_id      用户ID
- * @property int         $goods_id     商品ID
- * @property int         $num          商品数量
- * @property int         $origin_price 商品原价,单位分
- * @property int         $price        商品实际价格,单位分
- * @property int         $is_expire    是否已过期:0-未过期、1-已过期
- * @property Carbon|null $created_at   创建时间
- * @property Carbon|null $updated_at   最后更新时间
- * @property-read Goods  $goods
- * @property-read User   $user
- * @method static Builder|OrderGoods newModelQuery()
- * @method static Builder|OrderGoods newQuery()
- * @method static Builder|OrderGoods query()
- * @method static Builder|OrderGoods whereCreatedAt($value)
- * @method static Builder|OrderGoods whereGoodsId($value)
- * @method static Builder|OrderGoods whereId($value)
- * @method static Builder|OrderGoods whereIsExpire($value)
- * @method static Builder|OrderGoods whereNum($value)
- * @method static Builder|OrderGoods whereOid($value)
- * @method static Builder|OrderGoods whereOrderSn($value)
- * @method static Builder|OrderGoods whereOriginPrice($value)
- * @method static Builder|OrderGoods wherePrice($value)
- * @method static Builder|OrderGoods whereUpdatedAt($value)
- * @method static Builder|OrderGoods whereUserId($value)
- */
-class OrderGoods extends Model
-{
-	protected $table = 'order_goods';
-	protected $primaryKey = 'id';
-
-	function user()
-	{
-		return $this->hasOne(User::class, 'id', 'user_id');
-	}
-
-	function goods()
-	{
-		return $this->hasOne(Goods::class, 'id', 'goods_id');
-	}
-
-	function getOriginPriceAttribute($value)
-	{
-		return $value/100;
-	}
-
-	function setOriginPriceAttribute($value)
-	{
-		return $this->attributes['origin_price'] = $value*100;
-	}
-
-	function getPriceAttribute($value)
-	{
-		return $value/100;
-	}
-
-	function setPriceAttribute($value)
-	{
-		return $this->attributes['price'] = $value*100;
-	}
-}

+ 6 - 17
app/Http/Models/Payment.php

@@ -12,20 +12,13 @@ use Illuminate\Support\Carbon;
  * 支付单
  * Class Payment
  *
- * @package App\Http\Models
- * @mixin Eloquent
  * @property int             $id
  * @property string|null     $sn
- * @property int             $user_id      用户ID
- * @property int|null        $oid          本地订单ID
- * @property string|null     $order_sn     本地订单长ID
- * @property int             $pay_way      支付方式:1-微信、2-支付宝
- * @property int             $amount       金额,单位分
- * @property int             $qr_id        有赞生成的支付单ID
- * @property string|null     $qr_url       有赞生成的支付二维码URL
- * @property string|null     $qr_code      有赞生成的支付二维码图片base64
- * @property string|null     $qr_local_url 支付二维码的本地存储URL
- * @property int             $status       状态:-1-支付失败、0-等待支付、1-支付成功
+ * @property int             $user_id 用户ID
+ * @property int|null        $oid     本地订单ID
+ * @property int             $amount  金额,单位分
+ * @property string|null     $qr_code 支付二维码
+ * @property int             $status  状态:-1-支付失败、0-等待支付、1-支付成功
  * @property Carbon          $created_at
  * @property Carbon          $updated_at
  * @property-read mixed      $pay_way_label
@@ -40,16 +33,12 @@ use Illuminate\Support\Carbon;
  * @method static Builder|Payment whereCreatedAt($value)
  * @method static Builder|Payment whereId($value)
  * @method static Builder|Payment whereOid($value)
- * @method static Builder|Payment whereOrderSn($value)
- * @method static Builder|Payment wherePayWay($value)
  * @method static Builder|Payment whereQrCode($value)
- * @method static Builder|Payment whereQrId($value)
- * @method static Builder|Payment whereQrLocalUrl($value)
- * @method static Builder|Payment whereQrUrl($value)
  * @method static Builder|Payment whereSn($value)
  * @method static Builder|Payment whereStatus($value)
  * @method static Builder|Payment whereUpdatedAt($value)
  * @method static Builder|Payment whereUserId($value)
+ * @mixin Eloquent
  */
 class Payment extends Model
 {

+ 11 - 10
composer.json

@@ -13,35 +13,36 @@
     "ext-dom": "*",
     "ext-json": "*",
     "ext-openssl": "*",
-    "barryvdh/laravel-debugbar": "^3.2",
+    "barryvdh/laravel-debugbar": "^3",
     "barryvdh/laravel-ide-helper": "^2.6",
-    "fideloper/proxy": "^4.2",
+    "fideloper/proxy": "^4.3",
     "guzzlehttp/guzzle": "^6.5",
     "ipip/db": "^1.0",
     "itbdw/ip-database": "^2.0",
     "jenssegers/agent": "^2.6",
     "laravel/framework": "5.8.*",
     "laravel/tinker": "~1.0",
-    "mews/captcha": "^3.0",
-    "mews/purifier": "^3.1",
+    "league/omnipay": "^3",
+    "lokielse/omnipay-alipay": "*",
+    "mews/captcha": "^3.1",
+    "mews/purifier": "^3.2",
     "misechow/geetest": "^1.0",
     "misechow/no-captcha": "^1.0",
     "openlss/lib-array2xml": "^1.0",
     "overtrue/laravel-lang": "^3.0",
-    "phpoffice/phpspreadsheet": "^1.10",
+    "phpoffice/phpspreadsheet": "^1.11",
     "predis/predis": "^1.1",
-    "rap2hpoutre/laravel-log-viewer": "^1.3",
-    "riverslei/payment": "*",
-    "spatie/laravel-permission": "^3.4",
+    "rap2hpoutre/laravel-log-viewer": "^1",
+    "spatie/laravel-permission": "^3.11",
     "ssrpanel/hcaptcha": "^2.0",
     "xhat/payjs": "^1.4"
   },
   "require-dev": {
     "filp/whoops": "^2.7",
     "fzaninotto/faker": "^1.9",
-    "mockery/mockery": "^1.0",
+    "mockery/mockery": "^1.3",
     "nunomaduro/collision": "^3.0",
-    "phpunit/phpunit": "^8.0"
+    "phpunit/phpunit": "^8"
   },
   "autoload": {
     "files": [

+ 848 - 107
composer.lock

@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "92b1ef4f3751fdbe50e28a11e25fef46",
+    "content-hash": "e73cace61805e36a643229eea4709ba6",
     "packages": [
         {
             "name": "barryvdh/laravel-debugbar",
-            "version": "v3.2.9",
+            "version": "v3.3.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/barryvdh/laravel-debugbar.git",
-                "reference": "42d5da5379a7860093f8e4032167e4cb5ebec180"
+                "reference": "95c31aab33689cd4572d27038186886f4bfa63ae"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/42d5da5379a7860093f8e4032167e4cb5ebec180",
-                "reference": "42d5da5379a7860093f8e4032167e4cb5ebec180",
+                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/95c31aab33689cd4572d27038186886f4bfa63ae",
+                "reference": "95c31aab33689cd4572d27038186886f4bfa63ae",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -78,7 +78,7 @@
                 "profiler",
                 "webprofiler"
             ],
-            "time": "2020-02-25T20:42:23+00:00"
+            "time": "2020-04-16T20:19:40+00:00"
         },
         {
             "name": "barryvdh/laravel-ide-helper",
@@ -261,6 +261,64 @@
             ],
             "time": "2020-03-17T15:24:26+00:00"
         },
+        {
+            "name": "clue/stream-filter",
+            "version": "v1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/clue/php-stream-filter.git",
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": ">=5.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.0 || ^4.8"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Clue\\StreamFilter\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Christian Lück",
+                    "email": "christian@lueck.tv"
+                }
+            ],
+            "description": "A simple and modern approach to stream filtering in PHP",
+            "homepage": "https://github.com/clue/php-stream-filter",
+            "keywords": [
+                "bucket brigade",
+                "callback",
+                "filter",
+                "php_user_filter",
+                "stream",
+                "stream_filter_append",
+                "stream_filter_register"
+            ],
+            "time": "2019-04-09T12:31:48+00:00"
+        },
         {
             "name": "composer/ca-bundle",
             "version": "1.2.7",
@@ -2251,16 +2309,16 @@
         },
         {
             "name": "league/flysystem",
-            "version": "1.0.66",
+            "version": "1.0.67",
             "source": {
                 "type": "git",
                 "url": "https://github.com/thephpleague/flysystem.git",
-                "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21"
+                "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21",
-                "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21",
+                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e",
+                "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -2337,7 +2395,129 @@
                 "sftp",
                 "storage"
             ],
-            "time": "2020-03-17T18:58:12+00:00"
+            "time": "2020-04-16T13:21:26+00:00"
+        },
+        {
+            "name": "league/omnipay",
+            "version": "v3.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/thephpleague/omnipay.git",
+                "reference": "9e10d91cbf84744207e13d4483e79de39b133368"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/thephpleague/omnipay/zipball/9e10d91cbf84744207e13d4483e79de39b133368",
+                "reference": "9e10d91cbf84744207e13d4483e79de39b133368",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "omnipay/common": "^3",
+                "php": "^5.6|^7",
+                "php-http/guzzle6-adapter": "^1.1|^2"
+            },
+            "require-dev": {
+                "omnipay/tests": "^3"
+            },
+            "type": "metapackage",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Adrian Macneil",
+                    "email": "adrian@adrianmacneil.com"
+                },
+                {
+                    "name": "Barry vd. Heuvel",
+                    "email": "barryvdh@gmail.com"
+                }
+            ],
+            "description": "Omnipay payment processing library",
+            "homepage": "https://omnipay.thephpleague.com/",
+            "keywords": [
+                "checkout",
+                "creditcard",
+                "omnipay",
+                "payment"
+            ],
+            "time": "2019-03-20T14:28:28+00:00"
+        },
+        {
+            "name": "lokielse/omnipay-alipay",
+            "version": "v3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/lokielse/omnipay-alipay.git",
+                "reference": "ba6aac2c7d880c5e4ca53840aedfc7e81b8f6977"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/lokielse/omnipay-alipay/zipball/ba6aac2c7d880c5e4ca53840aedfc7e81b8f6977",
+                "reference": "ba6aac2c7d880c5e4ca53840aedfc7e81b8f6977",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-bcmath": "*",
+                "ext-json": "*",
+                "ext-openssl": "*",
+                "omnipay/common": "^3.0",
+                "php-http/guzzle6-adapter": "^2.0"
+            },
+            "require-dev": {
+                "omnipay/tests": "^3.0",
+                "squizlabs/php_codesniffer": "^3.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Omnipay\\Alipay\\": "src/",
+                    "Omnipay\\Alipay\\Tests\\": "tests/"
+                },
+                "files": [
+                    "src/Common/helpers.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Loki Else",
+                    "email": "lokielse@gmail.com"
+                }
+            ],
+            "description": "Alipay gateway for Omnipay payment processing library",
+            "homepage": "https://github.com/lokielse/omnipay-alipay",
+            "keywords": [
+                "alipay",
+                "gateway",
+                "merchant",
+                "omnipay",
+                "pay",
+                "payment",
+                "purchase"
+            ],
+            "time": "2020-03-09T12:35:16+00:00"
         },
         {
             "name": "markbaker/complex",
@@ -2911,6 +3091,94 @@
             ],
             "time": "2019-09-18T18:44:20+00:00"
         },
+        {
+            "name": "moneyphp/money",
+            "version": "v3.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/moneyphp/money.git",
+                "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/moneyphp/money/zipball/122664c2621a95180a13c1ac81fea1d2ef20781e",
+                "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-json": "*",
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "cache/taggable-cache": "^0.4.0",
+                "doctrine/instantiator": "^1.0.5",
+                "ext-bcmath": "*",
+                "ext-gmp": "*",
+                "ext-intl": "*",
+                "florianv/exchanger": "^1.0",
+                "florianv/swap": "^3.0",
+                "friends-of-phpspec/phpspec-code-coverage": "^3.1.1 || ^4.3",
+                "moneyphp/iso-currencies": "^3.2.1",
+                "php-http/message": "^1.4",
+                "php-http/mock-client": "^1.0.0",
+                "phpspec/phpspec": "^3.4.3",
+                "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5",
+                "psr/cache": "^1.0",
+                "symfony/phpunit-bridge": "^4"
+            },
+            "suggest": {
+                "ext-bcmath": "Calculate without integer limits",
+                "ext-gmp": "Calculate without integer limits",
+                "ext-intl": "Format Money objects with intl",
+                "florianv/exchanger": "Exchange rates library for PHP",
+                "florianv/swap": "Exchange rates library for PHP",
+                "psr/cache-implementation": "Used for Currency caching"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Money\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mathias Verraes",
+                    "email": "mathias@verraes.net",
+                    "homepage": "http://verraes.net"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                },
+                {
+                    "name": "Frederik Bosch",
+                    "email": "f.bosch@genkgo.nl"
+                }
+            ],
+            "description": "PHP implementation of Fowler's Money pattern",
+            "homepage": "http://moneyphp.org",
+            "keywords": [
+                "Value Object",
+                "money",
+                "vo"
+            ],
+            "time": "2020-03-18T17:49:59+00:00"
+        },
         {
             "name": "monolog/monolog",
             "version": "1.25.3",
@@ -3130,6 +3398,94 @@
             ],
             "time": "2020-04-10T16:34:50+00:00"
         },
+        {
+            "name": "omnipay/common",
+            "version": "v3.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/thephpleague/omnipay-common.git",
+                "reference": "66b7934abd2d54cde8b24c5d0b1a5e733339a7e9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/66b7934abd2d54cde8b24c5d0b1a5e733339a7e9",
+                "reference": "66b7934abd2d54cde8b24c5d0b1a5e733339a7e9",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "moneyphp/money": "^3.1",
+                "php": "^5.6|^7",
+                "php-http/client-implementation": "^1",
+                "php-http/discovery": "^1.2.1",
+                "php-http/message": "^1.5",
+                "symfony/http-foundation": "^2.1|^3|^4"
+            },
+            "require-dev": {
+                "omnipay/tests": "^3",
+                "php-http/mock-client": "^1",
+                "phpro/grumphp": "^0.14",
+                "squizlabs/php_codesniffer": "^3"
+            },
+            "suggest": {
+                "league/omnipay": "The default Omnipay package provides a default HTTP Adapter."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Omnipay\\Common\\": "src/Common"
+                },
+                "classmap": [
+                    "src/Omnipay.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Adrian Macneil",
+                    "email": "adrian@adrianmacneil.com"
+                },
+                {
+                    "name": "Barry vd. Heuvel",
+                    "email": "barryvdh@gmail.com"
+                },
+                {
+                    "name": "Omnipay Contributors",
+                    "homepage": "https://github.com/thephpleague/omnipay-common/contributors"
+                },
+                {
+                    "name": "Jason Judge",
+                    "email": "jason.judge@consil.co.uk"
+                },
+                {
+                    "name": "Del"
+                }
+            ],
+            "description": "Common components for Omnipay payment processing library",
+            "homepage": "https://github.com/thephpleague/omnipay-common",
+            "keywords": [
+                "gateway",
+                "merchant",
+                "omnipay",
+                "pay",
+                "payment",
+                "purchase"
+            ],
+            "time": "2018-05-15T08:36:43+00:00"
+        },
         {
             "name": "openlss/lib-array2xml",
             "version": "1.0.0",
@@ -3355,17 +3711,17 @@
             "time": "2018-07-02T15:55:56+00:00"
         },
         {
-            "name": "phpoffice/phpspreadsheet",
-            "version": "1.11.0",
+            "name": "php-http/discovery",
+            "version": "1.7.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
-                "reference": "c2a205e82f9cf1cc9fab86b79e808d86dd680470"
+                "url": "https://github.com/php-http/discovery.git",
+                "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c2a205e82f9cf1cc9fab86b79e808d86dd680470",
-                "reference": "c2a205e82f9cf1cc9fab86b79e808d86dd680470",
+                "url": "https://api.github.com/repos/php-http/discovery/zipball/82dbef649ccffd8e4f22e1953c3a5265992b83c0",
+                "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -3375,37 +3731,430 @@
                 ]
             },
             "require": {
-                "ext-ctype": "*",
-                "ext-dom": "*",
-                "ext-fileinfo": "*",
-                "ext-gd": "*",
-                "ext-iconv": "*",
-                "ext-libxml": "*",
-                "ext-mbstring": "*",
-                "ext-simplexml": "*",
-                "ext-xml": "*",
-                "ext-xmlreader": "*",
-                "ext-xmlwriter": "*",
-                "ext-zip": "*",
-                "ext-zlib": "*",
-                "markbaker/complex": "^1.4",
-                "markbaker/matrix": "^1.2",
-                "php": "^7.1",
-                "psr/simple-cache": "^1.0"
+                "php": "^7.1"
+            },
+            "conflict": {
+                "nyholm/psr7": "<1.0"
             },
             "require-dev": {
-                "dompdf/dompdf": "^0.8.3",
-                "friendsofphp/php-cs-fixer": "^2.16",
-                "jpgraph/jpgraph": "^4.0",
-                "mpdf/mpdf": "^8.0",
-                "phpcompatibility/php-compatibility": "^9.3",
-                "phpunit/phpunit": "^7.5",
-                "squizlabs/php_codesniffer": "^3.5",
-                "tecnickcom/tcpdf": "^6.3"
+                "akeneo/phpspec-skip-example-extension": "^4.0",
+                "php-http/httplug": "^1.0 || ^2.0",
+                "php-http/message-factory": "^1.0",
+                "phpspec/phpspec": "^5.1",
+                "puli/composer-plugin": "1.0.0-beta10"
             },
             "suggest": {
-                "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
-                "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
+                "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories",
+                "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.7-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Discovery\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                }
+            ],
+            "description": "Finds installed HTTPlug implementations and PSR-7 message factories",
+            "homepage": "http://php-http.org",
+            "keywords": [
+                "adapter",
+                "client",
+                "discovery",
+                "factory",
+                "http",
+                "message",
+                "psr7"
+            ],
+            "time": "2020-01-03T11:25:47+00:00"
+        },
+        {
+            "name": "php-http/guzzle6-adapter",
+            "version": "v2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-http/guzzle6-adapter.git",
+                "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
+                "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "guzzlehttp/guzzle": "^6.0",
+                "php": "^7.1",
+                "php-http/httplug": "^2.0",
+                "psr/http-client": "^1.0"
+            },
+            "provide": {
+                "php-http/async-client-implementation": "1.0",
+                "php-http/client-implementation": "1.0",
+                "psr/http-client-implementation": "1.0"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "php-http/client-integration-tests": "^2.0",
+                "phpunit/phpunit": "^7.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Adapter\\Guzzle6\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                },
+                {
+                    "name": "David de Boer",
+                    "email": "david@ddeboer.nl"
+                }
+            ],
+            "description": "Guzzle 6 HTTP Adapter",
+            "homepage": "http://httplug.io",
+            "keywords": [
+                "Guzzle",
+                "http"
+            ],
+            "time": "2018-12-16T14:44:03+00:00"
+        },
+        {
+            "name": "php-http/httplug",
+            "version": "2.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-http/httplug.git",
+                "reference": "72d2b129a48f0490d55b7f89be0d6aa0597ffb06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-http/httplug/zipball/72d2b129a48f0490d55b7f89be0d6aa0597ffb06",
+                "reference": "72d2b129a48f0490d55b7f89be0d6aa0597ffb06",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": "^7.0",
+                "php-http/promise": "^1.0",
+                "psr/http-client": "^1.0",
+                "psr/http-message": "^1.0"
+            },
+            "require-dev": {
+                "friends-of-phpspec/phpspec-code-coverage": "^4.1",
+                "phpspec/phpspec": "^4.3.4|^5.0|^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Client\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Eric GELOEN",
+                    "email": "geloen.eric@gmail.com"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                }
+            ],
+            "description": "HTTPlug, the HTTP client abstraction for PHP",
+            "homepage": "http://httplug.io",
+            "keywords": [
+                "client",
+                "http"
+            ],
+            "time": "2019-12-27T10:07:11+00:00"
+        },
+        {
+            "name": "php-http/message",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-http/message.git",
+                "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-http/message/zipball/ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
+                "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "clue/stream-filter": "^1.4",
+                "php": "^7.1",
+                "php-http/message-factory": "^1.0.2",
+                "psr/http-message": "^1.0"
+            },
+            "provide": {
+                "php-http/message-factory-implementation": "1.0"
+            },
+            "require-dev": {
+                "akeneo/phpspec-skip-example-extension": "^1.0",
+                "coduo/phpspec-data-provider-extension": "^1.0",
+                "ext-zlib": "*",
+                "guzzlehttp/psr7": "^1.0",
+                "henrikbjorn/phpspec-code-coverage": "^1.0",
+                "phpspec/phpspec": "^2.4",
+                "slim/slim": "^3.0",
+                "zendframework/zend-diactoros": "^1.0"
+            },
+            "suggest": {
+                "ext-zlib": "Used with compressor/decompressor streams",
+                "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
+                "slim/slim": "Used with Slim Framework PSR-7 implementation",
+                "zendframework/zend-diactoros": "Used with Diactoros Factories"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Message\\": "src/"
+                },
+                "files": [
+                    "src/filters.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                }
+            ],
+            "description": "HTTP Message related tools",
+            "homepage": "http://php-http.org",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7"
+            ],
+            "time": "2019-08-05T06:55:08+00:00"
+        },
+        {
+            "name": "php-http/message-factory",
+            "version": "v1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-http/message-factory.git",
+                "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+                "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": ">=5.4",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                }
+            ],
+            "description": "Factory interfaces for PSR-7 HTTP Message",
+            "homepage": "http://php-http.org",
+            "keywords": [
+                "factory",
+                "http",
+                "message",
+                "stream",
+                "uri"
+            ],
+            "time": "2015-12-19T14:08:53+00:00"
+        },
+        {
+            "name": "php-http/promise",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-http/promise.git",
+                "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980",
+                "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require-dev": {
+                "henrikbjorn/phpspec-code-coverage": "^1.0",
+                "phpspec/phpspec": "^2.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Http\\Promise\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com"
+                },
+                {
+                    "name": "Joel Wurtz",
+                    "email": "joel.wurtz@gmail.com"
+                }
+            ],
+            "description": "Promise used for asynchronous HTTP requests",
+            "homepage": "http://httplug.io",
+            "keywords": [
+                "promise"
+            ],
+            "time": "2016-01-26T13:27:02+00:00"
+        },
+        {
+            "name": "phpoffice/phpspreadsheet",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
+                "reference": "c2a205e82f9cf1cc9fab86b79e808d86dd680470"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c2a205e82f9cf1cc9fab86b79e808d86dd680470",
+                "reference": "c2a205e82f9cf1cc9fab86b79e808d86dd680470",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-dom": "*",
+                "ext-fileinfo": "*",
+                "ext-gd": "*",
+                "ext-iconv": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-simplexml": "*",
+                "ext-xml": "*",
+                "ext-xmlreader": "*",
+                "ext-xmlwriter": "*",
+                "ext-zip": "*",
+                "ext-zlib": "*",
+                "markbaker/complex": "^1.4",
+                "markbaker/matrix": "^1.2",
+                "php": "^7.1",
+                "psr/simple-cache": "^1.0"
+            },
+            "require-dev": {
+                "dompdf/dompdf": "^0.8.3",
+                "friendsofphp/php-cs-fixer": "^2.16",
+                "jpgraph/jpgraph": "^4.0",
+                "mpdf/mpdf": "^8.0",
+                "phpcompatibility/php-compatibility": "^9.3",
+                "phpunit/phpunit": "^7.5",
+                "squizlabs/php_codesniffer": "^3.5",
+                "tecnickcom/tcpdf": "^6.3"
+            },
+            "suggest": {
+                "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
+                "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
                 "mpdf/mpdf": "Option for rendering PDF with PDF Writer",
                 "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
             },
@@ -3625,6 +4374,61 @@
             ],
             "time": "2017-02-14T16:28:37+00:00"
         },
+        {
+            "name": "psr/http-client",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-client.git",
+                "reference": "496a823ef742b632934724bf769560c2a5c7c44e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e",
+                "reference": "496a823ef742b632934724bf769560c2a5c7c44e",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "php": "^7.0",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Client\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP clients",
+            "homepage": "https://github.com/php-fig/http-client",
+            "keywords": [
+                "http",
+                "http-client",
+                "psr",
+                "psr-18"
+            ],
+            "time": "2018-10-30T23:29:13+00:00"
+        },
         {
             "name": "psr/http-message",
             "version": "1.0.1",
@@ -4072,69 +4876,6 @@
             ],
             "time": "2020-03-05T20:25:07+00:00"
         },
-        {
-            "name": "riverslei/payment",
-            "version": "v5.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/helei112g/payment.git",
-                "reference": "a9c222693f888b15337758486f56a9ea6ee9d31f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/helei112g/payment/zipball/a9c222693f888b15337758486f56a9ea6ee9d31f",
-                "reference": "a9c222693f888b15337758486f56a9ea6ee9d31f",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "ext-bcmath": "*",
-                "ext-json": "*",
-                "ext-mbstring": "*",
-                "ext-openssl": "*",
-                "ext-simplexml": "*",
-                "ext-xml": "*",
-                "guzzlehttp/guzzle": "~6.0",
-                "php": ">=7.0"
-            },
-            "require-dev": {
-                "codeception/codeception": "*"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Payment\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Leo",
-                    "email": "dayugog@gmail.com",
-                    "homepage": "https://dayutalk.cn"
-                }
-            ],
-            "description": "支付宝支付、微信支付、招商一网通支付php SDK。方便快速接入,最完整的开源支付 php sdk",
-            "homepage": "http://helei112g.github.io/payment",
-            "keywords": [
-                "alipay",
-                "weixin",
-                "一网通",
-                "微信支付",
-                "招商一网通",
-                "支付宝支付",
-                "集成支付接口SDK"
-            ],
-            "time": "2020-02-29T11:53:41+00:00"
-        },
         {
             "name": "seld/jsonlint",
             "version": "1.7.2",

File diff suppressed because it is too large
+ 0 - 0
public/assets/images/alipay.svg


+ 1 - 0
public/assets/images/qq.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="480px" height="480px"><path fill="#FFC107" d="M17.5,44c-3.6,0-6.5-1.6-6.5-3.5s2.9-3.5,6.5-3.5s6.5,1.6,6.5,3.5S21.1,44,17.5,44z M37,40.5c0-1.9-2.9-3.5-6.5-3.5S24,38.6,24,40.5s2.9,3.5,6.5,3.5S37,42.4,37,40.5z"/><path fill="#37474F" d="M37.2,22.2c-0.1-0.3-0.2-0.6-0.3-1c0.1-0.5,0.1-1,0.1-1.5c0-1.4-0.1-2.6-0.1-3.6C36.9,9.4,31.1,4,24,4S11,9.4,11,16.1c0,0.9,0,2.2,0,3.6c0,0.5,0,1,0.1,1.5c-0.1,0.3-0.2,0.6-0.3,1c-1.9,2.7-3.8,6-3.8,8.5C7,35.5,8.4,35,8.4,35c0.6,0,1.6-1,2.5-2.1C13,38.8,18,43,24,43s11-4.2,13.1-10.1C38,34,39,35,39.6,35c0,0,1.4,0.5,1.4-4.3C41,28.2,39.1,24.8,37.2,22.2z"/><path fill="#ECEFF1" d="M14.7,23c-0.5,1.5-0.7,3.1-0.7,4.8C14,35.1,18.5,41,24,41s10-5.9,10-13.2c0-1.7-0.3-3.3-0.7-4.8H14.7z"/><path fill="#FFF" d="M23,13.5c0,1.9-1.1,3.5-2.5,3.5S18,15.4,18,13.5s1.1-3.5,2.5-3.5S23,11.6,23,13.5z M27.5,10c-1.4,0-2.5,1.6-2.5,3.5s1.1,3.5,2.5,3.5s2.5-1.6,2.5-3.5S28.9,10,27.5,10z"/><path fill="#37474F" d="M22,13.5c0,0.8-0.4,1.5-1,1.5s-1-0.7-1-1.5s0.4-1.5,1-1.5S22,12.7,22,13.5z M27,12c-0.6,0-1,0.7-1,1.5s0.4-0.5,1-0.5s1,1.3,1,0.5S27.6,12,27,12z"/><path fill="#FFC107" d="M32,19.5c0,0.8-3.6,2.5-8,2.5s-8-1.7-8-2.5s3.6-1.5,8-1.5S32,18.7,32,19.5z"/><path fill="#FF3D00" d="M38.7,21.2c-0.4-1.5-1-2.2-2.1-1.3c0,0-5.9,3.1-12.5,3.1v0.1l0-0.1c-6.6,0-12.5-3.1-12.5-3.1c-1.1-0.8-1.7-0.2-2.1,1.3c-0.4,1.5-0.7,2,0.7,2.8c0.1,0.1,1.4,0.8,3.4,1.7c-0.6,3.5-0.5,6.8-0.5,7c0.1,1.5,1.3,1.3,2.9,1.3c1.6-0.1,2.9,0,2.9-1.6c0-0.9,0-2.9,0.3-5c1.6,0.3,3.2,0.6,5,0.6l0,0v0c7.3,0,13.7-3.9,13.9-4C39.3,23.3,39,22.8,38.7,21.2z"/><path fill="#DD2C00" d="M13.2,27.7c1.6,0.6,3.5,1.3,5.6,1.7c0-0.6,0.1-1.3,0.2-2c-2.1-0.5-4-1.1-5.5-1.7C13.4,26.4,13.3,27.1,13.2,27.7z"/></svg>

+ 1 - 0
public/assets/images/wechat.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="480px" height="480px"><path fill="#8BC34A" d="M18,6C9.2,6,2,12,2,19.5c0,4.3,2.3,8,6,10.5l-2,6l6.3-3.9C14,32.7,16,33,18,33c8.8,0,16-6,16-13.5C34,12,26.8,6,18,6z"/><path fill="#7CB342" d="M20,29c0-6.1,5.8-11,13-11c0.3,0,0.6,0,0.9,0c-0.1-0.7-0.3-1.4-0.5-2c-0.1,0-0.3,0-0.4,0c-8.3,0-15,5.8-15,13c0,1.4,0.3,2.7,0.7,4c0.7,0,1.4-0.1,2.1-0.2C20.3,31.6,20,30.3,20,29z"/><path fill="#CFD8DC" d="M46,29c0-6.1-5.8-11-13-11c-7.2,0-13,4.9-13,11s5.8,11,13,11c1.8,0,3.5-0.3,5-0.8l5,2.8l-1.4-4.8C44.3,35.2,46,32.3,46,29z"/><path fill="#33691E" d="M14,15c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S14,13.9,14,15z M24,13c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S25.1,13,24,13z"/><path fill="#546E7A" d="M30,26.5c0,0.8-0.7,1.5-1.5,1.5S27,27.3,27,26.5s0.7-1.5,1.5-1.5S30,25.7,30,26.5z M37.5,25c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S38.3,25,37.5,25z"/></svg>

+ 83 - 59
resources/views/admin/system.blade.php

@@ -990,141 +990,165 @@
 								<div class="row pb-70">
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label for="is_alipay" class="col-md-3 col-form-label">AliPay国际</label>
-											<span class="col-md-9"><input type="checkbox" id="is_alipay" data-plugin="switchery" @if($is_alipay) checked @endif onchange="updateFromOther('switch','is_alipay')"></span>
-											<span class="text-help offset-md-3"> 请先到 <a href="https://global.alipay.com/" target="_blank">AliPay国际</a> 申请partner和key </span>
+											<label class="col-md-3 col-form-label" for="is_AliPay">支付宝支付</label>
+											<select class="col-md-3" id="is_AliPay" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','is_AliPay')">
+												<option value="">关闭</option>
+												<option value="f2fpay">F2F</option>
+												<option value="codepay">码支付</option>
+											</select>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_currency">结算币种</label>
-											<select class="col-md-5" id="alipay_currency" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','alipay_currency')">
-												<option value="USD">美元</option>
-												<option value="HKD">港币</option>
-												<option value="JPY">日元</option>
-												<option value="EUR">欧元</option>
+											<label class="col-md-3 col-form-label" for="is_QQPay">QQ钱包</label>
+											<select class="col-md-3" id="is_QQPay" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','is_QQPay')">
+												<option value="">关闭</option>
+												<option value="codepay">码支付</option>
 											</select>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_sign_type">加密方式</label>
-											<select class="col-md-5" id="alipay_sign_type" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','alipay_sign_type')">
-												<option value="MD5">MD5</option>
-												<option value="RSA">RSA</option>
+											<label class="col-md-3 col-form-label" for="is_WeChatPay">微信支付</label>
+											<select class="col-md-3" id="is_WeChatPay" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','is_WeChatPay')">
+												<option value="">关闭</option>
+												<option value="codepay">码支付</option>
+												<option value="payjs">PayJS</option>
 											</select>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_transport">启用SSL验证</label>
-											<select class="col-md-5" id="alipay_transport" data-plugin="selectpicker" data-style="btn-outline btn-primary" onchange="updateFromOther('select','alipay_transport')">
-												<option value="http">否</option>
-												<option value="https">是</option>
-											</select>
-											<span class="text-help offset-md-3"> HTTPS站点需启用 </span>
+											<label class="col-md-3 col-form-label" for="subject_name">自定义商品名称</label>
+											<div class="col-md-7">
+												<div class="input-group">
+													<input type="text" class="form-control" id="subject_name" value="{{$subject_name}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('subject_name')">修改</button></span>
+												</div>
+											</div>
+											<span class="text-help offset-md-3"> 用于在支付渠道的商品标题显示 </span>
 										</div>
 									</div>
+								</div>
+								<div class="row pb-70">
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_partner">Partner</label>
+											<label class="col-md-3 col-form-label">支付宝F2F</label>
 											<div class="col-md-7">
-												<div class="input-group">
-													<input type="text" class="form-control" id="alipay_partner" value="{{$alipay_partner}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('alipay_partner')">修改</button></span>
-												</div>
+												本功能需要 <a href="https://open.alipay.com/platform/home.htm" target="_blank">蚂蚁金服开放平台</a> 申请权限及应用
 											</div>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label for="alipay_key" class="col-md-3 col-form-label">Key</label>
+											<label class="col-md-3 col-form-label" for="f2fpay_app_id">应用ID</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input type="password" class="form-control" id="alipay_key" value="{{$alipay_key}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('alipay_key')">修改</button></span>
+													<input type="text" class="form-control" id="f2fpay_app_id" value="{{$f2fpay_app_id}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_app_id')">修改</button></span>
 												</div>
 											</div>
+											<span class="text-help offset-md-3">即:APPID</span>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_private_key">RSA私钥</label>
+											<label class="col-md-3 col-form-label" for="f2fpay_private_key">RSA私钥</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input type="password" class="form-control" id="alipay_private_key" value="{{$alipay_private_key}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('alipay_private_key')">修改</button></span>
+													<input class="form-control" type="text" id="f2fpay_private_key" value="{{$f2fpay_private_key}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_private_key')">修改</button></span>
 												</div>
 											</div>
+											<span class="text-help offset-md-3">即:rsa_private_key,不包括首尾格式</span>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="alipay_public_key">RSA公钥</label>
+											<label class="col-md-3 col-form-label" for="f2fpay_public_key">支付宝公钥</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input type="password" class="form-control" id="alipay_public_key" value="{{$alipay_public_key}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('alipay_public_key')">修改</button></span>
+													<input type="text" class="form-control" id="f2fpay_public_key" value="{{$f2fpay_public_key}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_public_key')">修改</button></span>
 												</div>
 											</div>
+											<span class="text-help offset-md-3"> 注意不是RSA公钥 </span>
 										</div>
 									</div>
 								</div>
 								<div class="row pb-70">
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="is_f2fpay">支付宝F2F</label>
-											<span class="col-md-9"><input type="checkbox" id="is_f2fpay" data-plugin="switchery" @if($is_f2fpay) checked @endif onchange="updateFromOther('switch','is_f2fpay')"></span>
-											<span class="text-help offset-md-3"> 本功能需要 <a href="https://open.alipay.com/platform/home.htm" target="_blank">蚂蚁金服开放平台</a> 申请权限及应用 </span>
+											<label class="col-md-3 col-form-label">码支付</label>
+											<div class="col-md-7">
+												请到 <a href="https://codepay.fateqq.com/i/377289">码支付</a> 申请账号,然后下载登录其挂机软件
+											</div>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="f2fpay_app_id">应用ID</label>
+											<label class="col-md-3 col-form-label" for="codepay_url">请求URL</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input type="text" class="form-control" id="f2fpay_app_id" value="{{$f2fpay_app_id}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_app_id')">修改</button></span>
+													<input type="text" class="form-control" id="codepay_url" value="{{$codepay_url}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('codepay_url')">修改</button></span>
 												</div>
 											</div>
-											<span class="text-help offset-md-3">即:APPID</span>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="f2fpay_private_key">RSA私钥</label>
+											<label class="col-md-3 col-form-label" for="codepay_id">码支付ID</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input class="form-control" type="text" id="f2fpay_private_key" value="{{$f2fpay_private_key}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_private_key')">修改</button></span>
+													<input type="text" class="form-control" id="codepay_id" value="{{$codepay_id}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('codepay_id')">修改</button></span>
 												</div>
 											</div>
-											<span class="text-help offset-md-3">即:rsa_private_key,不包括首尾格式</span>
 										</div>
 									</div>
 									<div class="form-group col-lg-6">
 										<div class="row">
-											<label class="col-md-3 col-form-label" for="f2fpay_public_key">支付宝公钥</label>
+											<label class="col-md-3 col-form-label" for="codepay_key">码支付通信密钥</label>
 											<div class="col-md-7">
 												<div class="input-group">
-													<input type="text" class="form-control" id="f2fpay_public_key" value="{{$f2fpay_public_key}}"/>
-													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_public_key')">修改</button></span>
+													<input type="text" class="form-control" id="codepay_key" value="{{$codepay_key}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('codepay_key')">修改</button></span>
 												</div>
 											</div>
-											<span class="text-help offset-md-3"> 注意不是RSA公钥 </span>
 										</div>
 									</div>
 								</div>
-								<div class="form-group col-lg-6">
-									<div class="row">
-										<label class="col-md-3 col-form-label" for="f2fpay_subject_name">自定义商品名称</label>
-										<div class="col-md-7">
-											<div class="input-group">
-												<input type="text" class="form-control" id="f2fpay_subject_name" value="{{$f2fpay_subject_name}}"/>
-												<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('f2fpay_subject_name')">修改</button></span>
+								<div class="row pb-70">
+									<div class="form-group col-lg-6">
+										<div class="row">
+											<label class="col-md-3 col-form-label">PayJs</label>
+											<div class="col-md-7">
+												请到 <a href="https://payjs.cn/" target="_blank">PayJs</a> 申请账号
+											</div>
+										</div>
+									</div>
+									<div class="form-group col-lg-6">
+										<div class="row">
+											<label class="col-md-3 col-form-label" for="payjs_mch_id">商户ID</label>
+											<div class="col-md-7">
+												<div class="input-group">
+													<input type="text" class="form-control" id="payjs_mch_id" value="{{$payjs_mch_id}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('payjs_mch_id')">修改</button></span>
+												</div>
+											</div>
+										</div>
+									</div>
+									<div class="form-group col-lg-6">
+										<div class="row">
+											<label class="col-md-3 col-form-label" for="payjs_key">密钥</label>
+											<div class="col-md-7">
+												<div class="input-group">
+													<input type="text" class="form-control" id="payjs_key" value="{{$payjs_key}}"/>
+													<span class="input-group-append"><button class="btn btn-primary" type="button" onclick="update('payjs_key')">修改</button></span>
+												</div>
 											</div>
 										</div>
-										<span class="text-help offset-md-3"> 用于在用户支付宝客户端显示 </span>
 									</div>
 								</div>
 							</form>
@@ -1156,9 +1180,9 @@
             $('#is_email_filtering').selectpicker('val', {{$is_email_filtering}});
             $('#initial_labels_for_user').selectpicker('val', [{{$initial_labels_for_user}}]);
             $('#is_notification').selectpicker('val', {{$is_notification}});
-            $('#alipay_currency').selectpicker('val', {{$alipay_currency}});
-            $('#alipay_sign_type').selectpicker('val', {{$alipay_sign_type}});
-            $('#alipay_transport').selectpicker('val', {{$alipay_transport}});
+            $('#is_AliPay').selectpicker('val', '{{$is_AliPay}}');
+            $('#is_QQPay').selectpicker('val', '{{$is_QQPay}}');
+            $('#is_WeChatPay').selectpicker('val', '{{$is_WeChatPay}}');
         });
 
         // 系统设置更新

+ 2 - 10
resources/views/payment/detail.blade.php

@@ -26,7 +26,7 @@
 							</ul>
 						</div>
 						<div class="col-md-6 text-center mb-15">
-							<img class="h-250 w-250" src="{{$payment->qr_local_url}}" alt="支付二维码">
+							<img class="h-250 w-250" src="{{$payment->qr_code}}" alt="支付二维码">
 						</div>
 					</div>
 					<div class="col-2"></div>
@@ -42,15 +42,7 @@
 @endsection
 @section('script')
 	<script type="text/javascript">
-        $(document).ready(function () {
-            // 支付宝直接跳转支付
-			@if(\App\Components\Helpers::systemConfig()['is_alipay'])
-                document.body.innerHTML += unescapeHTML("{{$payment->qr_code}}");
-            document.forms['alipaySubmit'].submit();
-			@endif
-        });
-
-        // 检查支付单状态
+		// 检查支付单状态
         const r = window.setInterval(function () {
             $.ajax({
                 type: 'GET',

+ 13 - 21
resources/views/user/buy.blade.php

@@ -51,13 +51,9 @@
 						@endif
 						<div class="col-md-12 mb-30">
 							<div class="float-right">
-								@if(\App\Components\Helpers::systemConfig()['is_alipay'])
-									<button class="btn btn-lg btn-success" onclick="checkPrePaid('4')"> 支付宝扫码</button>
-								@elseif(\App\Components\Helpers::systemConfig()['is_f2fpay'])
-									<button class="btn btn-lg btn-success" onclick="checkPrePaid('5')"> 支付宝扫码</button>
-								@endif
+								@include('user.components.purchase')
 								@if($goods->type <= 2)
-									<button class="btn btn-lg btn-primary" onclick="checkPrePaid('1')"> {{trans('home.service_pay_button')}} </button>
+									<button class="btn btn-lg btn-primary" onclick="pay('1','0')"> {{trans('home.service_pay_button')}} </button>
 								@endif
 							</div>
 						</div>
@@ -118,9 +114,9 @@
         }
 
         // 检查预支付
-        function checkPrePaid(pay_type) {
+        function checkPrePaid() {
             // 存在套餐 和 购买类型为套餐时 出现提示
-            if ('{{$activePlan}}' === '1' && '{{$goods->type}}' === '2') {
+            if ('{{$activePlan}}' === '1') {
                 swal.fire({
                     title: '套餐存在冲突',
                     html: '<p>当前购买套餐将自动设置为 <code>预支付套餐</code><p><ol class="text-left"><li> 预支付套餐会在生效中的套餐失效后自动开通!</li><li> 您可以在支付后手动激活套餐!</li></ol>',
@@ -129,24 +125,25 @@
                     cancelButtonText: '返 回',
                     confirmButtonText: '继 续',
                 }).then((result) => {
-                    if (result.value) {
-                        pay(pay_type);
+                    if (!result.value) {
+                        window.location.reload();
                     }
                 })
-            } else {
-                pay(pay_type);
             }
         }
 
         // 支付
-        function pay(pay_type) {
+        function pay(method, pay_type) {
+            if('{{$goods->type}}' === '2'){
+                checkPrePaid();
+            }
             const goods_id = '{{$goods->id}}';
             const coupon_sn = $('#coupon_sn').val();
             $.ajax({
                 type: "POST",
-                url: "/payment/create",
+                url: "/payment/purchase",
                 async: false,
-                data: {_token: '{{csrf_token()}}', goods_id: goods_id, coupon_sn: coupon_sn, pay_type: pay_type},
+                data: {_token: '{{csrf_token()}}', goods_id: goods_id, coupon_sn: coupon_sn, method: method, pay_type: pay_type},
                 dataType: 'json',
                 success: function (ret) {
                     if (ret.status === 'success') {
@@ -159,13 +156,8 @@
                         if (pay_type === '1') {
                             swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false})
                                 .then(() => window.location.href = '/invoices')
-                        } else if (pay_type === '4') {
-                            // 如果是Alipay支付写入Alipay的支付页面
-                            document.body.innerHTML += ret.data;
-                            document.forms['alipaysubmit'].submit();
-                        } else {
-                            window.location.href = '/payment/' + ret.data;
                         }
+                        window.location.href = '/payment/' + ret.data;
                     } else if (ret.status === 'info') {
                         swal.fire({title: ret.title, text: ret.message, type: 'question'});
                     } else {

+ 9 - 0
resources/views/user/components/purchase.blade.php

@@ -0,0 +1,9 @@
+@if(\App\Components\Helpers::systemConfig()['is_AliPay'])
+	<button class="btn btn-flat waves-attach" onclick="pay('{{\App\Components\Helpers::systemConfig()['is_AliPay']}}','1')"><img src="/assets/images/alipay.svg" width="50px" height="50px" alt="alipay"/></button>
+@endif
+@if(\App\Components\Helpers::systemConfig()['is_QQPay'])
+	<button class="btn btn-flat waves-attach" onclick="pay('{{\App\Components\Helpers::systemConfig()['is_QQPay']}}','2')"><img src="/assets/images/qq.svg" width="50px" height="50px" alt="qq"/></button>
+@endif
+@if(\App\Components\Helpers::systemConfig()['is_WeChatPay'])
+	<button class="btn btn-flat waves-attach" onclick="pay('{{\App\Components\Helpers::systemConfig()['is_WeChatPay']}}','3')"><img src="/assets/images/wechat.svg" width="50px" height="50px" alt="wechat"/></button>'
+@endif

+ 15 - 26
resources/views/user/services.blade.php

@@ -100,10 +100,10 @@
 				<div class="modal-body">
 					<div class="alert alert-danger" id="charge_msg" style="display: none;"></div>
 					<form action="#" method="post">
-						@if(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'] || \App\Components\Helpers::systemConfig()['is_alipay'] || \App\Components\Helpers::systemConfig()['is_f2fpay'])
+						@if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
 							<div class="mb-15 w-p50">
 								<select class="form-control" name="charge_type" id="charge_type">
-									@if(\App\Components\Helpers::systemConfig()['is_alipay'] || \App\Components\Helpers::systemConfig()['is_f2fpay'])
+									@if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
 										<option value="1">{{trans('home.online_pay')}}</option>
 									@endif
 									@if(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'])
@@ -113,7 +113,7 @@
 								</select>
 							</div>
 						@endif
-						@if(\App\Components\Helpers::systemConfig()['is_alipay'] || \App\Components\Helpers::systemConfig()['is_f2fpay'])
+						@if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
 							<div class="form-group row charge_balance">
 								<label for="amount" class="offset-md-1 col-md-2 col-form-label">充值金额</label>
 								<div class="col-md-8">
@@ -142,7 +142,7 @@
 									@endif
 								</div>
 							</div>
-						@endif
+							@endif
 						<div class="form-group row" id="charge_coupon_code">
 							<label for="charge_coupon" class="offset-md-2 col-md-2 col-form-label"> {{trans('home.coupon_code')}} </label>
 							<div class="col-md-6">
@@ -152,13 +152,8 @@
 					</form>
 				</div>
 				<div class="modal-footer">
-					<button type="button" class="btn btn-default" data-dismiss="modal">{{trans('home.close')}}</button>
-					@if(\App\Components\Helpers::systemConfig()['is_alipay'])
-						<button type="button" class="btn btn-primary charge_balance" onclick="charge('4')"> 支付宝扫码</button>
-					@elseif(\App\Components\Helpers::systemConfig()['is_f2fpay'])
-						<button type="button" class="btn btn-primary charge_balance" onclick="charge('5')"> 支付宝扫码</button>
-					@endif
-					<button type="button" class="btn btn-primary" id="change_btn" onclick="charge()">{{trans('home.recharge')}}</button>
+					<span class="charge_balance"> @include('user.components.purchase') </span>
+					<button type="button" class="btn btn-primary" id="change_btn" onclick="pay()">{{trans('home.recharge')}}</button>
 				</div>
 			</div>
 		</div>
@@ -194,11 +189,11 @@
         $("#charge_type").change(function () {
             itemControl(parseInt($(this).val()));
             let which_selected = 3;
-	        @if(\App\Components\Helpers::systemConfig()['is_alipay'] || \App\Components\Helpers::systemConfig()['is_f2fpay'])
+			@if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
                 which_selected = 1;
-	        @elseif(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'])
+			@elseif(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'])
                 which_selected = 2;
-	        @endif
+			@endif
 
             $('charge_type').val(which_selected)
         });
@@ -227,11 +222,10 @@
         }
 
         // 充值
-        function charge(id) {
+        function pay(method, pay_type) {
             const paymentType = parseInt($('#charge_type').val());
             const charge_coupon = $('#charge_coupon').val().trim();
             const amount = parseInt($('#amount').val());
-            id = parseInt(id);
             if (paymentType === 1) {
                 if (amount <= 0) {
                     swal.fire({title: "错误", text: "充值余额不合规", type: 'warning', timer: 1000, showConfirmButton: false});
@@ -240,23 +234,18 @@
 
                 $.ajax({
                     type: "POST",
-                    url: "/payment/create",
-                    data: {_token: '{{csrf_token()}}', amount: amount, pay_type: id},
+                    url: "/payment/purchase",
+                    data: {_token: '{{csrf_token()}}', amount: amount, method: method, pay_type: pay_type},
                     dataType: "json",
                     beforeSend: function () {
                         $("#charge_msg").show().html("创建支付单中...");
                     },
                     success: function (ret) {
-                        $("#charge_msg").show().html(ret.message);
-                        if (id === 4) {
-                            // 如果是Alipay支付写入Alipay的支付页面
-                            document.body.innerHTML += ret.data;
-                            document.forms['alipaysubmit'].submit();
-                        } else {
-                            window.location.href = '/payment/' + ret.data;
-                        }
                         if (ret.status === 'fail') {
                             return false;
+                        }else{
+                            $("#charge_msg").show().html(ret.message);
+                            window.location.href = '/payment/' + ret.data;
                         }
                     },
                     error: function () {

+ 0 - 4
routes/api.php

@@ -1,10 +1,6 @@
 <?php
 
 Route::group(['namespace' => 'Api'], function(){
-	Route::resource('alipay', 'AlipayController');
-	Route::resource('f2fpay', 'F2fpayController');
-	Route::resource('payjs','PayJsController');
-
 	// 定制客户端
 	Route::any('login', 'LoginController@login');
 

+ 118 - 92
routes/web.php

@@ -20,97 +20,117 @@ Route::group(['middleware' => ['isForbidden', 'affiliate', 'isMaintenance']], fu
 Route::any('admin/login', 'AuthController@login')->middleware('isForbidden','isSecurity'); // 登录
 
 Route::group(['middleware' => ['isForbidden','isAdminLogin', 'isAdmin']], function(){
-	Route::get('admin', 'AdminController@index'); // 后台首页
-	Route::get('admin/userList', 'AdminController@userList'); // 账号列表
-	Route::any('admin/addUser', 'AdminController@addUser'); // 添加账号
-	Route::any('admin/editUser/{id}', 'AdminController@editUser'); // 编辑账号
-	Route::post('admin/delUser', 'AdminController@delUser'); // 删除账号
-	Route::post('admin/batchAddUsers', 'AdminController@batchAddUsers'); // 批量生成账号
-	Route::get('admin/exportSSJson', 'AdminController@exportSSJson'); // 导出原版SS的json配置信息
-	Route::any('admin/nodeList', 'AdminController@nodeList'); // 节点列表
-	Route::any('admin/addNode', 'AdminController@addNode'); // 添加节点
-	Route::any('admin/editNode', 'AdminController@editNode'); // 编辑节点
-	Route::post('admin/delNode', 'AdminController@delNode'); // 删除节点
-	Route::get('admin/nodeMonitor/{id}', 'AdminController@nodeMonitor'); // 节点流量监控
-	Route::post('admin/pingNode', 'AdminController@pingNode'); // 节点ping测速
-	Route::get('admin/nodePingLog', 'AdminController@nodePingLog'); //节点Ping测速日志
-	Route::get('admin/articleList', 'AdminController@articleList'); // 文章列表
-	Route::any('admin/addArticle', 'AdminController@addArticle'); // 添加文章
-	Route::any('admin/editArticle', 'AdminController@editArticle'); // 编辑文章
-	Route::post('admin/delArticle', 'AdminController@delArticle'); // 删除文章
-	Route::get('admin/groupList', 'AdminController@groupList'); // 分组列表
-	Route::any('admin/addGroup', 'AdminController@addGroup'); // 添加分组
-	Route::any('admin/editGroup/{id}', 'AdminController@editGroup'); // 编辑分组
-	Route::post('admin/delGroup/{id}', 'AdminController@delGroup'); // 删除分组
-	Route::get('admin/labelList', 'AdminController@labelList'); // 标签列表
-	Route::any('admin/addLabel', 'AdminController@addLabel'); // 添加标签
-	Route::any('admin/editLabel', 'AdminController@editLabel'); // 编辑标签
-	Route::post('admin/delLabel', 'AdminController@delLabel'); // 删除标签
-	Route::get('ticket/ticketList', 'TicketController@ticketList'); // 工单列表
-	Route::any('ticket/replyTicket', 'TicketController@replyTicket'); // 回复工单
-	Route::post('ticket/closeTicket', 'TicketController@closeTicket'); // 关闭工单
-	Route::get('admin/orderList', 'AdminController@orderList'); // 订单列表
-	Route::get('admin/inviteList', 'AdminController@inviteList'); // 邀请码列表
-	Route::post('admin/makeInvite', 'AdminController@makeInvite'); // 生成邀请码
-	Route::get('admin/exportInvite', 'AdminController@exportInvite'); // 导出邀请码
-	Route::get('admin/applyList', 'AdminController@applyList'); // 提现申请列表
-	Route::get('admin/applyDetail', 'AdminController@applyDetail'); // 提现申请详情
-	Route::post('admin/setApplyStatus', 'AdminController@setApplyStatus'); // 设置提现申请状态
-	Route::any('coupon/couponList', 'CouponController@couponList'); // 优惠券列表
-	Route::any('coupon/addCoupon', 'CouponController@addCoupon'); // 添加优惠券
-	Route::post('coupon/delCoupon', 'CouponController@delCoupon'); // 删除优惠券
-	Route::get('coupon/exportCoupon', 'CouponController@exportCoupon'); // 导出优惠券
-	Route::any('shop/goodsList', 'ShopController@goodsList'); // 商品列表
-	Route::any('shop/addGoods', 'ShopController@addGoods'); // 添加商品
-	Route::any('shop/editGoods/{id}', 'ShopController@editGoods'); // 编辑商品
-	Route::post('shop/delGoods', 'ShopController@delGoods'); // 删除商品
-	Route::any('admin/config', 'AdminController@config'); // 配置列表
-	Route::any('admin/addConfig', 'AdminController@addConfig'); // 添加配置
-	Route::post('admin/delConfig', 'AdminController@delConfig'); // 删除配置
-	Route::post('admin/addLevel', 'AdminController@addLevel'); // 增加等级
-	Route::post('admin/updateLevel', 'AdminController@updateLevel'); // 更新等级
-	Route::post('admin/delLevel', 'AdminController@delLevel'); // 删除等级
-	Route::post('admin/addCountry', 'AdminController@addCountry'); // 增加国家/地区
-	Route::post('admin/updateCountry', 'AdminController@updateCountry'); // 更新国家/地区
-	Route::post('admin/delCountry', 'AdminController@delCountry'); // 删除国家/地区
-	Route::post('admin/setDefaultConfig', 'AdminController@setDefaultConfig'); // 设置默认配置
-	Route::get('admin/system', 'AdminController@system'); // 系统设置
-	Route::post('admin/setExtend', 'AdminController@setExtend'); // 设置客服、统计代码
-	Route::post('admin/setConfig', 'AdminController@setConfig'); // 设置某个配置项
-	Route::get('admin/userBalanceLogList', 'AdminController@userBalanceLogList'); // 余额变动记录
-	Route::get('admin/userTrafficLogList', 'AdminController@userTrafficLogList'); // 流量变动记录
-	Route::get('admin/userRebateList', 'AdminController@userRebateList'); // 返利流水记录
-	Route::get('admin/userBanLogList', 'AdminController@userBanLogList'); // 用户封禁记录
-	Route::get('admin/userOnlineIPList', 'AdminController@userOnlineIPList'); // 用户在线IP记录
-	Route::any('admin/export/{id}', 'AdminController@export'); // 导出(查看)配置信息
-	Route::get('admin/userMonitor/{id}', 'AdminController@userMonitor'); // 用户流量监控
-	Route::post('admin/resetUserTraffic', 'AdminController@resetUserTraffic'); // 重置用户流量
-	Route::post('admin/handleUserBalance', 'AdminController@handleUserBalance'); // 用户余额充值
-	Route::post("admin/switchToUser", "AdminController@switchToUser"); // 转换成某个用户的身份
-	Route::get('subscribe/subscribeList', 'SubscribeController@subscribeList'); // 订阅码列表
-	Route::get('subscribe/subscribeLog', 'SubscribeController@subscribeLog'); // 订阅码记录
-	Route::get('subscribe/deviceList', 'SubscribeController@deviceList'); // 订阅设备列表
-	Route::post('subscribe/setSubscribeStatus', 'SubscribeController@setSubscribeStatus'); // 启用禁用用户的订阅
-	Route::post('subscribe/setDeviceStatus', 'SubscribeController@setDeviceStatus'); // 是否允许设备订阅
-	Route::get("marketing/emailList", "MarketingController@emailList"); // 邮件消息列表
-	Route::get("marketing/pushList", "MarketingController@pushList"); // 推送消息列表
-	Route::post("marketing/addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
-	Route::get("admin/onlineIPMonitor", "AdminController@onlineIPMonitor"); // 在线IP监控
-	Route::any("admin/decompile", "AdminController@decompile"); // SS(R)链接反解析
-	Route::get('admin/download', 'AdminController@download'); // 下载转换过的JSON配置
-	Route::any('admin/convert', 'AdminController@convert'); // 格式转换
-	Route::any('admin/import', 'AdminController@import'); // 数据导入
-	Route::get('admin/trafficLog', 'AdminController@trafficLog'); // 流量日志
-	Route::get('admin/analysis', 'AdminController@analysis'); // 日志分析
-	Route::get('admin/notificationLog', 'AdminController@notificationLog'); // 邮件发送日志
+	Route::group(['prefix' => 'admin'], function(){
+		Route::get('', 'AdminController@index'); // 后台首页
+		Route::get('userList', 'AdminController@userList'); // 账号列表
+		Route::any('addUser', 'AdminController@addUser'); // 添加账号
+		Route::any('aeditUser/{id}', 'AdminController@editUser'); // 编辑账号
+		Route::post('delUser', 'AdminController@delUser'); // 删除账号
+		Route::post('batchAddUsers', 'AdminController@batchAddUsers'); // 批量生成账号
+		Route::get('exportSSJson', 'AdminController@exportSSJson'); // 导出原版SS的json配置信息
+		Route::any('nodeList', 'AdminController@nodeList'); // 节点列表
+		Route::any('addNode', 'AdminController@addNode'); // 添加节点
+		Route::any('editNode', 'AdminController@editNode'); // 编辑节点
+		Route::post('delNode', 'AdminController@delNode'); // 删除节点
+		Route::get('nodeMonitor/{id}', 'AdminController@nodeMonitor'); // 节点流量监控
+		Route::post('pingNode', 'AdminController@pingNode'); // 节点ping测速
+		Route::get('nodePingLog', 'AdminController@nodePingLog'); //节点Ping测速日志
+		Route::get('articleList', 'AdminController@articleList'); // 文章列表
+		Route::any('addArticle', 'AdminController@addArticle'); // 添加文章
+		Route::any('editArticle', 'AdminController@editArticle'); // 编辑文章
+		Route::post('delArticle', 'AdminController@delArticle'); // 删除文章
+		Route::get('groupList', 'AdminController@groupList'); // 分组列表
+		Route::any('addGroup', 'AdminController@addGroup'); // 添加分组
+		Route::any('editGroup/{id}', 'AdminController@editGroup'); // 编辑分组
+		Route::post('delGroup/{id}', 'AdminController@delGroup'); // 删除分组
+		Route::get('labelList', 'AdminController@labelList'); // 标签列表
+		Route::any('addLabel', 'AdminController@addLabel'); // 添加标签
+		Route::any('editLabel', 'AdminController@editLabel'); // 编辑标签
+		Route::post('delLabel', 'AdminController@delLabel'); // 删除标签
+		Route::get('orderList', 'AdminController@orderList'); // 订单列表
+		Route::get('inviteList', 'AdminController@inviteList'); // 邀请码列表
+		Route::post('makeInvite', 'AdminController@makeInvite'); // 生成邀请码
+		Route::get('exportInvite', 'AdminController@exportInvite'); // 导出邀请码
+		Route::get('applyList', 'AdminController@applyList'); // 提现申请列表
+		Route::get('applyDetail', 'AdminController@applyDetail'); // 提现申请详情
+		Route::post('setApplyStatus', 'AdminController@setApplyStatus'); // 设置提现申请状态
+		Route::any('config', 'AdminController@config'); // 配置列表
+		Route::any('addConfig', 'AdminController@addConfig'); // 添加配置
+		Route::post('delConfig', 'AdminController@delConfig'); // 删除配置
+		Route::post('addLevel', 'AdminController@addLevel'); // 增加等级
+		Route::post('updateLevel', 'AdminController@updateLevel'); // 更新等级
+		Route::post('delLevel', 'AdminController@delLevel'); // 删除等级
+		Route::post('addCountry', 'AdminController@addCountry'); // 增加国家/地区
+		Route::post('updateCountry', 'AdminController@updateCountry'); // 更新国家/地区
+		Route::post('delCountry', 'AdminController@delCountry'); // 删除国家/地区
+		Route::post('setDefaultConfig', 'AdminController@setDefaultConfig'); // 设置默认配置
+		Route::get('system', 'AdminController@system'); // 系统设置
+		Route::post('setExtend', 'AdminController@setExtend'); // 设置客服、统计代码
+		Route::post('setConfig', 'AdminController@setConfig'); // 设置某个配置项
+		Route::get('userBalanceLogList', 'AdminController@userBalanceLogList'); // 余额变动记录
+		Route::get('userTrafficLogList', 'AdminController@userTrafficLogList'); // 流量变动记录
+		Route::get('userRebateList', 'AdminController@userRebateList'); // 返利流水记录
+		Route::get('userBanLogList', 'AdminController@userBanLogList'); // 用户封禁记录
+		Route::get('userOnlineIPList', 'AdminController@userOnlineIPList'); // 用户在线IP记录
+		Route::any('export/{id}', 'AdminController@export'); // 导出(查看)配置信息
+		Route::get('userMonitor/{id}', 'AdminController@userMonitor'); // 用户流量监控
+		Route::post('resetUserTraffic', 'AdminController@resetUserTraffic'); // 重置用户流量
+		Route::post('handleUserBalance', 'AdminController@handleUserBalance'); // 用户余额充值
+		Route::post("switchToUser", "AdminController@switchToUser"); // 转换成某个用户的身份
+		Route::get("onlineIPMonitor", "AdminController@onlineIPMonitor"); // 在线IP监控
+		Route::any("decompile", "AdminController@decompile"); // SS(R)链接反解析
+		Route::get('download', 'AdminController@download'); // 下载转换过的JSON配置
+		Route::any('convert', 'AdminController@convert'); // 格式转换
+		Route::any('import', 'AdminController@import'); // 数据导入
+		Route::get('trafficLog', 'AdminController@trafficLog'); // 流量日志
+		Route::get('analysis', 'AdminController@analysis'); // 日志分析
+		Route::get('notificationLog', 'AdminController@notificationLog'); // 邮件发送日志
+		Route::post('sendTestNotification', 'AdminController@sendTestNotification'); //推送通知测试
+		Route::any('profile', 'AdminController@profile'); // 修改个人信息
+		Route::get('makePort', 'AdminController@makePort'); // 生成端口
+	});
+
+	Route::group(['prefix' => 'ticket'], function(){
+		Route::get('ticketList', 'TicketController@ticketList'); // 工单列表
+		Route::any('replyTicket', 'TicketController@replyTicket'); // 回复工单
+		Route::post('closeTicket', 'TicketController@closeTicket'); // 关闭工单
+	});
+
+	Route::group(['prefix' => 'coupon'], function(){
+		Route::any('couponList', 'CouponController@couponList'); // 优惠券列表
+		Route::any('addCoupon', 'CouponController@addCoupon'); // 添加优惠券
+		Route::post('delCoupon', 'CouponController@delCoupon'); // 删除优惠券
+		Route::get('exportCoupon', 'CouponController@exportCoupon'); // 导出优惠券
+	});
+
+	Route::group(['prefix' => 'shop'], function(){
+		Route::any('goodsList', 'ShopController@goodsList'); // 商品列表
+		Route::any('addGoods', 'ShopController@addGoods'); // 添加商品
+		Route::any('editGoods/{id}', 'ShopController@editGoods'); // 编辑商品
+		Route::post('delGoods', 'ShopController@delGoods'); // 删除商品
+	});
+
+	Route::group(['prefix' => 'subscribe'], function(){
+		Route::get('subscribeList', 'SubscribeController@subscribeList'); // 订阅码列表
+		Route::get('subscribeLog', 'SubscribeController@subscribeLog'); // 订阅码记录
+		Route::get('deviceList', 'SubscribeController@deviceList'); // 订阅设备列表
+		Route::post('setSubscribeStatus', 'SubscribeController@setSubscribeStatus'); // 启用禁用用户的订阅
+		Route::post('setDeviceStatus', 'SubscribeController@setDeviceStatus'); // 是否允许设备订阅
+	});
+
+	Route::group(['prefix' => 'marketing'], function(){
+		Route::get("marketing/emailList", "MarketingController@emailList"); // 邮件消息列表
+		Route::get("marketing/pushList", "MarketingController@pushList"); // 推送消息列表
+		Route::post("marketing/addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
+	});
+
+	Route::group(['prefix' => 'sensitiveWords'], function(){
+		Route::get("list", "SensitiveWordsController@sensitiveWordslist"); // 敏感词列表
+		Route::post("add", "SensitiveWordsController@addSensitiveWords"); // 添加敏感词
+		Route::post("del", "SensitiveWordsController@delSensitiveWords"); // 删除敏感词
+	});
 	Route::get("payment/callbackList", "PaymentController@callbackList"); // 支付回调日志
-	Route::get("sensitiveWords/list", "SensitiveWordsController@sensitiveWordslist"); // 敏感词列表
-	Route::post("sensitiveWords/add", "SensitiveWordsController@addSensitiveWords"); // 添加敏感词
-	Route::post("sensitiveWords/del", "SensitiveWordsController@delSensitiveWords"); // 删除敏感词
-	Route::post('admin/sendTestNotification', 'AdminController@sendTestNotification'); //推送通知测试
 	Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index'); // 系统运行日志
-	Route::any('admin/profile', 'AdminController@profile'); // 修改个人信息
-	Route::get('admin/makePort', 'AdminController@makePort'); // 生成端口
 });
 
 Route::group(['middleware' => ['isForbidden', 'isMaintenance', 'isLogin']], function(){
@@ -139,8 +159,14 @@ Route::group(['middleware' => ['isForbidden', 'isMaintenance', 'isLogin']], func
 	Route::post("charge", "UserController@charge"); // 卡券余额充值
 	Route::get("help", "UserController@help"); // 帮助中心
 
-	Route::post('payment/create', 'PaymentController@create'); // 创建支付
-	Route::get('payment/getStatus', 'PaymentController@getStatus'); // 获取支付单状态
-	Route::get('payment/{sn}', 'PaymentController@detail'); // 支付单详情
+	Route::group(['prefix' => 'payment'], function(){
+		Route::post('purchase', 'PaymentController@purchase'); // 创建支付
+		Route::get('getStatus', 'PaymentController@getStatus'); // 获取支付单状态
+		Route::get('{sn}', 'PaymentController@detail'); // 支付单详情
+	});
+});
 
+// 第三方回调接口
+Route::group(['namespace' => 'Callback', 'prefix' => 'callback', 'middleware' => ['callback']], function(){
+	Route::any('payment', 'PaymentController@notify');
 });

File diff suppressed because it is too large
+ 160 - 161
sql/db.sql


+ 17 - 0
sql/mod/20200415.sql

@@ -0,0 +1,17 @@
+update `config` SET `name` = 'codepay_url', `value` = 'https://codepay.fateqq.com/creat_order/?' where `config`.`id` = 43;
+update `config` SET `name` = 'codepay_id', `value` = '' where `config`.`id` = 44;
+update `config` SET `name` = 'codepay_key', `value` = '' where `config`.`id` = 45;
+update `config` SET `name` = 'website_callback_url', `value` = '' where `config`.`id` = 50;
+
+alter table `payment`
+  drop `order_sn`,
+  drop `pay_way`,
+  drop `qr_id`,
+  drop `qr_url`,
+  drop `qr_code`,
+  drop `qr_local_url`;
+
+drop table `order_goods`
+
+ALTER TABLE `payment`
+    ADD COLUMN `qr_code` text COLLATE utf8mb4_unicode_ci COMMENT '支付二维码' AFTER `amount`;

+ 4 - 0
sql/mod/20200419.sql

@@ -0,0 +1,4 @@
+update `config` SET `name` = 'is_AliPay', `value` = '' where `config`.`id` = 78;
+update `config` SET `name` = 'is_QQPay', `value` = '' where `config`.`id` = 79;
+update `config` SET `name` = 'is_WeChatPay', `value` = '' where `config`.`id` = 80;
+update `config` SET `name` = 'subject_name' where `config`.`id` = 91;

Some files were not shown because too many files changed in this diff